Linux サーバーには root ではなく 2 人のユーザーがいます。最初のユーザーの特定のSSHサーバーへのSSH接続(キーベースの認証)を確立すると成功します。
/* debug messages removed for brevity */
debug1: Next authentication method: publickey
debug1: Offering public key: .ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 149
debug1: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Enter passphrase for key '.ssh/id_rsa':
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
これで、2 番目のユーザーで指定された秘密鍵ファイルを使用しますが、鍵ベースの認証は-i .ssh/SD
成功しません。この時点まで、すべてのSSHクライアントデバッグメッセージはまったく同じです。
/* debug messages removed for brevity */
debug1: Next authentication method: publickey
debug1: Trying private key: .ssh/SD
debug1: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Enter passphrase for key '.ssh/SD':
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
Permission denied (publickey).
2番目のケースでは、SSHクライアントが公開鍵を提供しないのはなぜですか?これはキーベースの認証に不可欠なステップですか?
ベストアンサー1
2つを確認したい。
別のSSHキーを使用しているようですので、権限が正しいことを確認してください。 .ssh フォルダーは 0700、rsa 秘密鍵は 0600、公開鍵は 0644 でなければなりません。
ls -l ~/.ssh
閲覧権限のため。公開鍵が2番目のサーバーに送信されたことを確認してください。
ssh-copy-id ~/.ssh/SD.pub
を使用して公開鍵を2番目のサーバーにコピーできます。一度実行すると、サーバーにログインして(ルートまたはパスワードで)そのファイルが存在することを確認でき、cat ~/.ssh/authorized_keys
ローカルシステムに正しい出力が必要です。cat ~/.ssh/SD.pub
以前に追加した場合は、追加のキーがある可能性があります。
これらの両方がうまく見えますが、まだ入力できない場合は、/var/log/secureでサーバーログを確認するか、フォアグラウンドで2番目のSSHサーバーを実行して何が起こっているかを確認できます。リモートサーバーで実行
sudo $(which sshd) -p 6666 -D -d
次に、システムで次のコマンドを使用して新しいSSHデーモンにログインします。
ssh -p 6666 -i ~/.ssh/SD <SERVER>
サーバー端末に印刷されたログ情報を表示できます。これには、ログインが失敗した理由に関する詳細情報が含まれる場合があります。
2番目のsshdデーモンの説明。セキュリティ上の理由から、権限は通常0755ですが、sudoが必要です。また、sshdバイナリへのフルパスを提供する必要があります。これが$(which sshd)
コマンドに含まれる理由です。-p 6666
ポートを設定します(私は任意のポートを選択しました)。デバッグが有効な-D
状態でフォアグラウンドで実行されます-d
。