突然拒否されたssh接続を復活させる方法
terminalからさくらのVPSサーバにssh接続しようとしたところ、 急に
Permission denied (publickey).
と拒否されました。(ついこの前まで接続できてたやん…)
もしかしたら、最近macOSのバージョンアップをしたのが関係あるのかな?と思いましたが実際の原因は不明です。 また同じことが起きたときのために対処方法をメモしておきます。
【環境】
(リモートサーバ)
・ さくらのVPS
・ Debian
(ローカル)
・macOS
1.ローカルPC側で公開鍵・秘密鍵を再発行する
$ cd ~/.ssh $ ssh-keygen -f client_rsa -t rsa -b 2048 Generating public/private rsa key pair. client_rsa already exists. Overwrite (y/n)? (上書きして良いかと聞かれるので y と入力) Enter passphrase: パスワードを設定する場合は入力してEnter。不要ならEnter。 Enter some passphrase again: もう一度同じように入力。
(本当は元々発行していた鍵を消してから再作成した方が良いのかもしれませんが、今回はそのまま上書きしました…)
.sshを覗くと鍵ができている
$ ls ~/.ssh client_rsa client_rsa.pub
作った鍵をパスワード管理システム(キーチェーン)に登録しておくと、 サーバへの接続の際に鍵を指定しなくてよくなる(-iオプションが不要に)
$ ssh-add -K ~/.ssh/client_rsa ←鍵の登録
2.サーバ側のssh設定を変更する
さくらのVPSはブラウザからマイページにアクセスして、VNCコンソールを立ち上げて操作する。
$ sudo vim /etc/ssh/sshd_config
ドーンと設定一覧が出てくるので、
PasswordAuthentication no
を
PasswordAuthentication yes
に書き換える。
書き換え終わったらsshdを再起動する。
$ sudo servise sshd restart
3.ローカルPCから、サーバ側に公開鍵を送信する
$ ssh-copy-id -i ~/.ssh/client_rsa.pub -p 設定したポート番号 サーバのユーザー名@サーバのIPアドレス
色々な文字が出てきて、最後に
サーバのユーザー名@サーバのIPアドレス's password:
と聞かれるので、サーバのログインパスワードを入力する。
無事に送信されるとNumber of key(s) added: 1 〜何たらかんたら〜
と文字が出てくる。
4.サーバ側のssh設定を元に戻す
VNCコンソールを立ち上げて操作する。
$ sudo vim /etc/ssh/sshd_config
先ほど変更した
PasswordAuthentication yes
を
PasswordAuthentication no
に戻す
書き換え終わったらsshdを再起動する。
$ sudo servise sshd restart
5.ローカルPCからサーバにssh接続できるか確認する
$ ssh -p ポート番号 サーバーのユーザー名@サーバーのIPアドレス
※キーチェーンに鍵を登録していない場合には -iで鍵を指定するのでこのようになる
$ ssh -i ~/.ssh/client_rsa -p ポート番号 サーバーのユーザー名@サーバーのIPアドレス
無事に接続できたら一件落着👶🏻
再設定の方法を調べるに当たって過去の自分の勉強日報にとても助けられ、 記録を残しておくのは大事だなと心から実感しました👩🏻💻