ぼくのトラウマ
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
環境
クライアント: CentOS7
サーバー: CentOS7
確認しよう
パーミッション、所有者の設定に原因があることが多いみたい。
公開鍵
サーバー側に保管するよ。
保管場所の確認
公開鍵はファイル名を authorized_keys
に変更。
/home/user/.ssh/authorized_keys
パーミッションの確認
/home/user/.ssh
は 700/home/user/.ssh/authorized_keys
は 600
所有者の確認
/home/user/.ssh
の所有者は user 本人(鍵だけではなくディレクトリも所有者を確認!)/home/user/.ssh/authorized_keys
の所有者は user 本人
こんな感じになるはず
ls -la
コマンドでパーミッション、所有者を確認。
/home/user/.ssh
drwx------. 2 user user 29 10月 1 12:00 .ssh
/home/user/.ssh/authorized_keys
-rw-------. 1 user user 410 10月 1 12:00 authorized_keys
秘密鍵
クライアント側に保存するよ。
保管場所の確認
/home/user/.ssh/id_rsa
パーミッション確認
/home/user/.ssh
は 700/home/user/.ssh/id_rsa
は 600
所有者の確認
/home/user/.ssh
の所有者は user 本人(鍵だけではなくディレクトリも所有者を確認!)/home/user/.ssh/id_rsa
の所有者は user 本人
こんな感じになるはず
ls -la
コマンドでパーミッション、所有者を確認。
/home/user/.ssh
drwx------. 2 user user 29 10月 1 12:00 .ssh
/home/user/.ssh/id_rsa
-rw-------. 1 user user 410 10月 1 12:00 id_rsa
その他、ありそうな原因(随時更新予定)
ホームディレクトリのパーミッション
サーバー側、クライアント側両方のホームディレクトリ /home/user
は user(本人)以外書き込みできないようパーミッションを設定する。
755 とか 700とかであればOK。
drwx------. 26 user user 4096 10月 1 12:00 user
鍵をコピペした場合
クライアント側で作った公開鍵をサーバー側に保存するとき、鍵の中身をコピペした場合。
- 全体が正確にコピペされているかどうか
- 変な改行が入っていないか
秘密鍵のファイル名を変更した場合
秘密鍵のデフォルトのファイル名は id_rsa
ですが、これを変更した場合は ssh
コマンドを叩く際に -i
で鍵の指定が必要です。
例)id_rsa
から id_rsa_test
に変更
$ ssh 192.168.0.123 -i ~/.ssh/id_rsa_test