ZAPAnet総合情報局 > ZAPAブログ2.0 > SSHで鍵認証できないときのメモ

SSHで鍵認証できないときのメモ

2020年05月10日 プログラミングTIPS
CentOS 8 でSSHの秘密鍵、公開鍵でのログイン設定を試していたら、なぜかログインできなくてハマった時のメモです。

CentOS 8 導入にあたり、テストサーバーにSSHで鍵認証するために、まずはWindows版Tera Termで公開鍵と秘密鍵を生成しました。メニューの設定から「SSH鍵生成」を選べば、生成する鍵の種類を選べます。デフォルトでは、RSA 2048ビットになっていました。RSA 2048ビットよりも、もっと強度の高い方式を選んだ方がいいかとは思います。「bcrypt KDF形式」というよくわからない形式のチェックは外しました。「公開鍵の保存」と「秘密鍵の保存」で、それぞれ「id_rsa.pub」と「id_rsa」ができます。
Tera Term

次に、公開鍵をサーバーにアップロード。サーバーにプレインパスワードでログインし、先ほど作成した「id_rsa.pub」ファイルをTeraTermにドラッグ&ドロップ。SCPで送信。

次に「.ssh」フォルダを作成。
cd ~/
mkdir .ssh
chmod 700 .ssh

次にアップロードしたファイルを「authorized_keys」にリネームして移動。
mv id_rsa.pub /home/ユーザー名/.ssh/authorized_keys
chmod 600 authorized_keys

次にSSHの設定を確認するため、rootでログインし、鍵認証が許可されているか確認。
cat /etc/ssh/sshd_config | egrep '(PubkeyAuthentication|AuthorizedKeysFile)'

許可されていなければ、sshd_configを修正。
vi /etc/ssh/sshd_config

PubkeyAuthentication yes (←もしnoなら、ここをyesにする)

sshdを再起動。
systemctl restart sshd

これで、Tera Termの認証方式としてRSAの秘密鍵(さっき生成したid_rsa)を読み込ませれば、鍵認証できるはずだ…!と思ったのですが…

ログインできない!

ここでログインできなくてしばらくハマってしまいました。sshd_configを見直したり、秘密鍵、公開鍵を生成し直したり。パーミッションの確認をしたり…。

手がかりが見つからなかったので、エラーログを確認してみることにしました。まずエラーログがどこにあるのかわからなかったので、そこから探しました。場所は…
/var/log/secure

でした。

ログを確認してみたところ…
Authentication refused: bad ownership or modes for directory /home/ユーザー名

こんなエラーが。「あれ、さっきchownで変えたはずだけど…?」と思いましたが、変わっていませんでした。

rootでログインしても、chownできなくて、「なんでログインできないの?」と悩んで、やっとわかりました。homeディレクトリ以下のパーミッションが間違っていました。テスト用サーバーのテスト用ユーザーのログイン設定なので、適当に全部777でいいかと思って変更していたら、これが悪さをしていました。以下のようにパーミッションを変更することでログインできるようになりました。
chmod 755 /home/ユーザー名

.sshフォルダとauthorized_keysのパーミッションは何度も確認したのに、ユーザーのホームディレクトリまでパーミッションが関係あるとは想像していませんでした。ハマると解決までに時間がかかります。

ということで、SSHで鍵認証がうまくいかなかった場合は、以下のポイントをチェックしてみてください。
・公開鍵と秘密鍵の鍵ペアは正しく生成できているか。
・鍵は正しくサーバーとクライアントに設置できているか。
・sshd_configを正しく修正して再起動したか。
・.sshのパーミッションを正しく設定したか。
・authorized_keysのパーミッションを正しく設定したか。
・ユーザーのホームディレクトリのパーミッションを正しく設定したか。
・/var/log/secureのエラー内容を見直したか。

以上のことを確認してみて下さい。他にも、サーバー側の設定として、Port番号がクライアント側と合っているか、firewalldの設定は合っているか、などを見直す必要もあるかもしれません。また、調べたところ、公開鍵の最後に改行コードが入っているエラー、SELinuxの設定によるエラーなどもあるそうです。

こんなところで時間を取られると悔しいので、さっさと解決して先に進みましょう。


次の記事Tera Term の鍵認証で自動ログインするマクロ