SSHでPermission denied (publickey,gssapi-keyex,gssapi-with-mic)の対処法
- rootでのSSHログインを禁止
- sshでのパスワードログインを禁止。代わりに公開鍵認証を使う
- 一般ユーザを作成する
一般ユーザで公開鍵認証でログイン、という方式のみ許可する
ということになります。
さて、Amazon EC2でサーバを作成して、上記3つの設定を施して、いざ一般ユーザでSSHログインしようしたら、下記のようなエラーが出てしまいました。
$ ssh -i ~/.ssh/my_private_key userfoo@ec2-12-34-56-78.ap-northeast-1.compute.amazonaws.com
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
うむむ。。
リモートサーバの /etc/ssh/sshd_config を編集して、
PermitRootLogin yes
にすると、rootログインはできます。$ ssh -i ~/.ssh/my_private_key root@ec2-12-34-56-78.ap-northeast-1.compute.amazonaws.com
→ログイン成功
なぜ一般ユーザでログインできないのか。。。解決方法
数時間格闘してわかったのですが、リモートサーバのuserfooのホームディレクトリに公開鍵ファイル(/home/userfoo/.ssh/authorized_keys)を置いてなかったのが原因でした。
リモートサーバのrootの公開鍵をコピーしたら解決しました。
$ mkdir /home/userfoo/.ssh
$ su -
$ cp /root/.ssh/authorized_keys /home/userfoo/.ssh/
$ chown userfoo.userfoo /home/userfoo/.ssh/authorized_keys
$ chmod 0700 /home/userfoo/.ssh
$ chmod 0644 /home/userfoo/.ssh/authorized_keys