以下は、2 つの Linux システム間でのパスワードなしのログインの構成に関する短いメモです。プロセスには、基本的に、公開認証キーを生成し、それをリモート ホストの ~/.ssh/authorized_keys ファイルに追加することが含まれます。
認証キーの生成
SSH 認証キー ファイルが存在しない場合は、ssh-keygen を実行して生成します 指図。パスフレーズの入力を求めるプロンプトが表示されたら、完全にパスワードを使用しないログインが必要な場合は、空白のパスフレーズを使用してください:
# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/user/.ssh/id_rsa. Your public key has been saved in /home/user/.ssh/id_rsa.pub. The key fingerprint is: 1e:b2:f4:89:5a:7f:2d:a5:a5:4d:6d:66:2c:82:d8:18 root@remote-host
公開鍵をリモート ホストにコピーします
ssh-copy-id を使用します コマンドを使用して、新しく生成された認証キーの公開半分をリモート ホスト上の特定のユーザーのホーム ディレクトリにインストールします。 ssh-copy-id コマンドは、ID 情報を ~/.ssh/authorized_keys に自動的に追加します。 リモートホスト上の指定されたユーザーのファイル (必要に応じて ~/.ssh および ~/.ssh/authorized_keys を作成します)。
# ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote-host user@remote-hosts's password:
または、サーバーに openssh-clients (ssh-copy-id コマンド ユーティリティを提供するパッケージ) がインストールされていない場合は、次のコマンドで認証キーをコピーできます:
# cat ~/.ssh/id_rsa.pub | ssh user@remote-host "cat >> ~/.ssh/authorized_keys"
すべてが正しく設定されていれば、パスワードなしでリモート ホストにログインできるはずです。
トラブルシューティング
正しい権限を確認してください
キーベースの ssh 認証を機能させる際の問題の最も一般的な原因は、リモート ssh サーバーのファイルのアクセス許可です
上記の手順に従っても、適切なユーザーに ssh を実行してもパスワードの入力を求められる場合は、アクセス許可を調べてください。 ローカル ユーザーとリモート ユーザーの両方のファイル .ディレクトリのパーミッションは、以下に示すとおりである必要があります。ここに示す例は、ユーザー「oracle」の場合です
drwx------. 25 oracle oinstall 4096 Aug 21 11:01 /home/oracle/ drwx------. 2 oracle oinstall 4096 Aug 17 13:13 /home/oracle/.ssh -rw-------. 1 oracle oinstall 420 Aug 17 13:13 /home/oracle/.ssh/authorized_keys
パーミッションが上記のとおりでない場合は、正しく設定してください:
# chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh/
変更を有効にするために sshd サービスを再起動してください:
# service sshd restart
SElinux を無効にする
SELinux は、sshd がサーバー上の ~/.ssh ディレクトリにアクセスするのを潜在的に防止することもできます。この問題は、restorecon を実行することで除外 (または解決) できます リモートユーザーの ~/.ssh ディレクトリで次のように:
# restorecon -Rv ~/.ssh