LinuxのSSHへのパスワードレスログインに失敗した場合の解決策
LinuxでSSHの秘密鍵認証を設定する手順は次の通りです。
- SSH鍵ペアを作成:以下のコマンドをローカルマシンで実行してSSH鍵ペアを作成:
ssh-keygen -t rsa
id_rsa(秘密鍵)とid_rsa.pub(公開鍵)の2つのファイルが生成されます。
- ssh-copy-idコマンドを使用して公開鍵をターゲットサーバーのauthorized_keysファイルにコピーする 例えば、公開鍵をターゲットサーバーのuserというユーザー名のホームディレクトリにコピーする場合は、次のようにコマンドを実行します:
ssh-copy-id user@remote_server_ip
リモートサーバのパスワードを入力すると、公開鍵が宛先サーバにコピーされます。
- SSH 鍵認証の設定:リモートサーバーのSSH設定ファイル(/etc/ssh/sshd_config)で以下の設定が有効になっていることを確認する。
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
これらの設定がコメントアウトされていないか確認し、「Yes」に設定されていることを確認します。
- SSHサービスの再起動:リモートサーバで以下のコマンドを実行して SSH サービスを再起動します:
sudo service ssh restart
上記を実施してもまだSSHのパスワードレスログインができない場合は、以下の項目を実施しているかご確認ください。
- 公開鍵と秘密鍵ファイル(id_rsa、id_rsa.pub)がローカルの ~/.ssh/ ディレクトリに生成されているか確認してください。
- 公開鍵が正しく宛先サーバーにコピーされているか確認する:ssh-copy-idコマンドを使用して、公開鍵が宛先サーバー上の正しい場所に(通常は宛先サーバーの~/.ssh/authorized_keysファイル)コピーされたことを確実にします。
- ターゲットサーバーのSSH設定が適切か確認する: ターゲットサーバーのSSH設定ファイル(/etc/ssh/sshd_config)で、特にRSAAuthentication、PubkeyAuthentication、AuthorizedKeysFileの設定が適切であることを確認する。
- SSHサービスの再起動を実施:ターゲットサーバのSSH設定を変更後、確実にSSHサービスの再起動を行ってください。
問題が解決しない場合は、対象サーバの/var/log/auth.logファイルを調べて詳細なエラー情報を確認し、問題解決に役立てることができます。