SSHキーを使用して、ServerA(SunOS)からServerB(キーボードインタラクティブログインのあるカスタムLinux)へのアクセスを設定しようとしています。概念実証として、2つの仮想マシン間でそれを行うことができました。今私の現実のシナリオでは、それは機能していません。
ServerAでキーを作成し、ServerBにコピーしました。chmodした.sshフォルダを両方のServerA、Bで700に変更しました。
ここに私が得たもののログがあります。
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: Peer sent proposed langtags, ctos:
debug1: Peer sent proposed langtags, stoc:
debug1: We proposed langtags, ctos: en-US
debug1: We proposed langtags, stoc: en-US
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: dh_gen_key: priv key bits set: 125/256
debug1: bits set: 1039/2048
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'XXX.XXX.XXX.XXX' is known and matches the RSA Host key.
debug1: Found key in /XXX/.ssh/known_hosts:1
debug1: bits set: 1061/2048
debug1: ssh_rsa_verify: signature correct
debug1: newkeys: mode 1
debug1: set_newkeys: setting new keys for 'out' mode
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: newkeys: mode 0
debug1: set_newkeys: setting new keys for 'in' mode
debug1: SSH2_MSG_NEWKEYS received
debug1: done: ssh_kex2.
debug1: send SSH2_MSG_SERVICE_REQUEST
debug1: got SSH2_MSG_SERVICE_ACCEPT
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Trying private key: /XXXX/.ssh/identity
debug1: Trying public key: /xxx/.ssh/id_rsa
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Trying private key: /xxx/.ssh/id_dsa
debug1: Next authentication method: keyboard-interactive
Password:
Password:
ServerBは、独自の独自のLinuxであるため、アクションがかなり制限されています。
何が起こっているのでしょうか?
回答を編集:
問題は、sshd_config(承認された回答を参照)でこれらの設定を有効にしておらず、ServerAからServerBにキーを貼り付けるときに、キーを3つの別々の行として解釈することでした。
私がやったようにssh-copy-idを使用できない場合に備えて、キーの最初の行を「ServerB」authorized_keysファイルに最後の2文字なしで貼り付け、次に行1の欠けている文字と行2の最初の文字を入力してください。これにより、最初との間に「新しい行」が追加されなくなりますキーの2行目。 3dラインで繰り返します。
あなたの鍵は適切にコピーされていないと思います。ssh-copy-id
が利用可能な場合は、それを使用することをお勧めします。
$ ssh-copy-id user@remote_server
Password:
パスワードを入力すると、SSHキーがコピーされ、再度パスワードを入力しなくてもsshを実行できるようになります。
ServerBでSSH構成を確認し、いくつかのことを確認してください。
$ vi /etc/ssh/sshd_config
もう1つは、これらの設定を確認することです。
RSAAuthentication yes
PubKeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
AuthorizedKeysFileの値は、公開SSHキーを貼り付ける必要がある場所です。
次を使用してSSH-Key情報を収集できます:ssh-add -L
更新済み
ssh-copy-id
が存在しない場合は、古い方法で行うことができます。
$ cat ~/.ssh/id_rsa.pub | ssh user@remote_Host 'cat >> /home/user/.ssh/authorized_keys'
デバッグログに、サーバーがプライベートRSAキーを受け入れなかったことが示されています。特定の正しい鍵ファイルを指定するか、サーバーに正しい公開鍵ファイルがあることを確認する必要があります。
@Fredrikが言ったように、ファイルのアクセス許可も役割を果たすことができます。 SSHは、他のユーザーが書き込み可能な公開キーエントリと他のユーザーが読み取り可能な秘密キーエントリの使用を拒否します。
ls -l ~/.ssh
を使用してリモートマシン上のファイルの権限を確認し、権限を設定する必要があります。chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/<private_key>
例:chmod 600 ~/.ssh/id_rsa
chmod 700 ~/.ssh/<public_key>
例:chmod 700 ~/.ssh/id_rsa.pub
chmod 700 /home/vmirea/.ssh
上記に基づいて、私は問題が何であるか言うことができません。しかし、私がこれに遭遇したほとんどの場合、その理由は、(ユーザーだけでなく、グループや他のユーザーに対しても読み取り可能であるように)キーの読み取り権限が過度に設定されているためです。それは私が探し始めるところです。
これらの問題(これはある通常は権限に関連しています)は、サーバー側からはるかに簡単にデバッグできます。 /usr/sbin/sshd -d -p 2222
を使用してデバッグモードで別のsshdを開始し、ポート2222で別のsshdを開始してから、クライアント側でssh -p 2222 user@sshserver
を実行することをお勧めします。クライアントが認証しようとしたときにsshdから何が出てくるかを確認します。
権限の問題は/home/$USER/.ssh
だけである必要はありません。 /
、/home
、または/home/$USER
の問題である可能性もあります。それらのいずれかがグループ書き込み可能である場合は、問題になる可能性があります。
もう1つの一般的な問題は、authorized_keysファイルのキーの途中に誤って貼り付けて改行を入れることです。
キーを設定する最も簡単な方法は、
ssh-copy-id <remotehost>
接続するマシン(ワークステーションなど)
それはあなたのパスワードを尋ね、それからあなたのキーをコピーして適切に許可を設定するべきです。