SSHでPermission denied (publickey,gssapi-keyex,gssapi-with-mic)の対処法

Linuxサーバを構築するときには、次のように設定するのがよいと言われています。
  • 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
カテゴリ:

人気記事