Linux
SSH 密鑰身份驗證不斷要求輸入密碼
我正在嘗試使用 SSH 密鑰設置從 ServerA(SunOS)到 ServerB(一些帶有鍵盤互動式登錄的自定義 Linux)的訪問權限。作為概念證明,我能夠在 2 個虛擬機之間進行。現在在我的現實生活場景中它不起作用。
我在 ServerA 中創建了密鑰,將它們複製到 ServerB,chmod’d .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 行中的第一個字元,這將防止在第一個和第一個字元之間添加一個“新行”鍵的第二行。重複 3d 線。
我認為您的密鑰沒有被正確複製,如果您有
ssh-copy-id
可用的,我建議您使用它。$ ssh-copy-id user@remote_server Password:
輸入密碼後,您的 SSH 密鑰將被複製,您應該可以直接 ssh 而不再次提供密碼。
還要檢查您在ServerB上的 SSH 配置並檢查幾件事。
$ vi /etc/ssh/sshd_config
另一件事是檢查這些設置:
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'