IMAGE: https://cdn-ak.f.st-hatena.com/images/fotolife/i/ikmbear/20200805/20200805215246.png
記憶喪失のDebian?
3日前くらいに、さくらVPS上のDebianに対して公開鍵の設定しました。
設定当初から問題なく公開鍵認証で接続できていたのですが、今日ssh接続を試みると、突然Permission denied (public key)
と言われてしまいました。
何も設定を変えていなかったので、どうしたもんかと。アニメ「一週間フレンズ」しかり、Debianは数日立つと私のことを忘れてしまうのでしょうか。
「Debian!俺だよ!思い出してくれよ!」
そう叫んだところで相手はシステム。思いは届きません。一つずつ確認しましょう。
前提
- sshクライアント:macOS Catalina(10.15.6)
- 接続先:さくらVPSに構築したDebian10.4
- 以前は公開鍵認証で問題なく接続できていたが、突然
Permission denied (public key)
により接続できなくなった。 - 公開鍵認証については、ssh接続を鍵認証で行うを参考に実施済み。つまり
- client_rsaというキーペアを作成
- クライアントのキーチェーンには$1を登録済(
ssh-add -K ~/.ssh/client_rsa
) - Debian側にも公開鍵を登録済
- Debian側のsshd_configは以下の設定がしてある
思い出せDebian編
覚えてるか?俺たち、昔はパスワードでssh接続したりしてさ…
- 確認したいこと:原因が公開鍵認証によるものなのかの切り分け
- 確認方法:Debian側のsshd_configで
PasswordAuthentication yes
に設定変更する。 - 確認結果:パスワード認証では問題なくssh接続できる。
Debian「今もパスワード認証できるで」
覚えてるか?この鍵。半分、お前に渡してさ…
- 確認したいこと:公開鍵がちゃんとサーバ側に格納されているかどうかを確認
- 確認方法:macで作成した公開鍵を確認し、debian側のフォルダに配置されているものと比較する。
- 具体的には以下の流れでクライアント、サーバでのcat結果を比較。
- 確認結果:作成した公開鍵がサーバ側に正しく格納されている。
Debian「今もちゃんと持ってるで、覚えとるで」
なあDebian、閉ざした心を開いてくれよ…
-
確認したいこと:エラーメッセージにある
Permission Denied
が本当に$1が原因か確認する。 -
確認方法:クライアント、サーバ側それぞれの.sshsshリのsshを確認する。
- クライアントは700(rwx)
- サーバ側は600(rw)
-
確認結果:どちらも期待通り。
Debian「心オープンやで〜」
Debian、お前もしかして…
Debian「さっきから好き勝手疑ってくれてますけど」
Debian「全然こっちは問題ないですから。」
Debian「もうひとつ言っておくと、使用する鍵をちゃんと指定すればssh接続できますから!こんな感じで。」
Debianは覚えていた編
忘れたのはクライアント(mac)のキーチェーン
実は問題があるのはDebianではなく、キーチェーンの方でした。
macOS 10.12 Sierra以降、キーチェーンが再起動時に読み込まれなくなる仕様となったそうです。
タイトルに「突然」とありますが、実際には「macの再起動」をトリガーとして本事象が発生します。(事象発生まではmacbookをスリープするだけで、再起動していなかったんでしょうね…)
キーチェーンにDebianとの友情を邪魔させない。
再度ssh-add -K ~/.ssh/client_rsa
を実行することで、一時的には繋がるようになりますが、再起動すると、またssh接続できなくなってしまいます。
そのため、恒久対応として~/.ssh/configに以下の設定を追加します。
もっとDebianと仲良くなる
せっかくconfigの設定をしたので、毎回ポートやipを打たずに済むような設定もしておきます。
これで再起動してもssh ikuma-t
で繋がるようになりました!
感想
コマンドだけでリモートとやり取りするような部分って、「これ何やってんだ?」「どれチェックしたか忘れた…もう一回しらみ潰しにやり直してみよう」ってことが多いと思います。
今回はDebianが記憶喪失したというストーリーで擬人化して考えましたが、とっつきにくい内容だからこそ、自分で噛み砕いてコミカルにしてみるのはなかなか効果的でした!
Debian「途中で設定とかストーリー書くの面倒になったでしょ」
私「ファッ!!!」