我们有两台服务器刚刚升级到 CentOS 7,从那时起,我们的密钥都无法用于任何用户的 ssh 访问,总是需要密码。
这在我们的其他服务器上不会发生,在这些相同的机器上使用 CentOS 6 也不会发生。我检查了 .ssh 目录和授权文件夹的权限,这是最常见的,然后我在谷歌上搜索这个问题时发现,.ssh 中的所有文件都归正确的用户所有。
谷歌或 StackExchange 中的其他答案都没有帮助,因为它们都归结为拼写错误或权限问题。输出看起来与这个问题中提供的非常相似/相同(为什么该用户的 SSH 密钥身份验证失败? (CENTOS 7)),但是对他们有用的解决方案对我们不起作用,因为我在使用 ssh-copy-id 时没有收到权限错误。
有人有什么想法或建议吗?
编辑:更多相关信息:
- 更新后的服务器正在运行 OpenSSH_7.4,而人们尝试使用 ssh 的其他服务器正在运行 OpenSSH_5.3
- 这是 ssh -vvv 输出(已编辑):
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013 debug1: Reading configuration data /etc/ssh/ssh_config debug1: Applying options for * debug2: ssh_connect: needpriv 0 debug1: Connecting to {servername} [159.28.23.7] port 22. debug1: Connection established. debug1: identity file /{home directory}/{username}/.ssh/identity type -1 debug1: identity file /{home directory}/{username}/.ssh/identity-cert type -1 debug3: Not a RSA1 key file /{home directory}/{username}/.ssh/id_rsa. debug2: key_type_from_name: unknown key type '-----BEGIN' debug3: key_read: missing keytype debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug2: key_type_from_name: unknown key type '-----END' debug3: key_read: missing keytype debug1: identity file /{home directory}/{username}/.ssh/id_rsa type 1 debug1: identity file /{home directory}/{username}/.ssh/id_rsa-cert type -1 debug1: identity file /{home directory}/{username}/.ssh/id_dsa type -1 debug1: identity file /{home directory}/{username}/.ssh/id_dsa-cert type -1 debug1: identity file /{home directory}/{username}/.ssh/id_ecdsa type -1 debug1: identity file /{home directory}/{username}/.ssh/id_ecdsa-cert type -1 debug1: Remote protocol version 2.0, remote software version OpenSSH_7.4 debug1: match: OpenSSH_7.4 pat OpenSSH* debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_5.3 debug2: fd 3 setting O_NONBLOCK debug1: SSH2_MSG_KEXINIT sent debug3: Wrote 864 bytes for a total of 885 debug1: SSH2_MSG_KEXINIT received debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],ssh-rsa,ssh-dss debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,[email protected] debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,[email protected] debug2: kex_parse_kexinit: hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96 debug2: kex_parse_kexinit: hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96 debug2: kex_parse_kexinit: none,[email protected],zlib debug2: kex_parse_kexinit: none,[email protected],zlib debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: first_kex_follows 0 debug2: kex_parse_kexinit: reserved 0 debug2: kex_parse_kexinit: curve25519-sha256,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 debug2: kex_parse_kexinit: ssh-rsa,rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519 debug2: kex_parse_kexinit: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected],aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,cast128-cbc,3des-cbc debug2: kex_parse_kexinit: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected],aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,cast128-cbc,3des-cbc debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1 debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1 debug2: kex_parse_kexinit: none,[email protected] debug2: kex_parse_kexinit: none,[email protected] debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: first_kex_follows 0 debug2: kex_parse_kexinit: reserved 0 debug2: mac_setup: found hmac-sha1 debug1: kex: server->client aes128-ctr hmac-sha1 none debug2: mac_setup: found hmac-sha1 debug1: kex: client->server aes128-ctr hmac-sha1 none debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<2048<8192) sent debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP debug3: Wrote 24 bytes for a total of 909 debug2: dh_gen_key: priv key bits set: 152/320 debug2: bits set: 1019/2048 debug1: SSH2_MSG_KEX_DH_GEX_INIT sent debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY debug3: Wrote 272 bytes for a total of 1181 debug3: check_host_in_hostfile: host {servername} filename /{home directory}/{username}/.ssh/known_hosts debug3: check_host_in_hostfile: host {servername} filename /{home directory}/{username}/.ssh/known_hosts debug3: check_host_in_hostfile: match line 1 debug3: check_host_in_hostfile: host 159.28.23.7 filename /{home directory}/{username}/.ssh/known_hosts debug3: check_host_in_hostfile: host 159.28.23.7 filename /{home directory}/{username}/.ssh/known_hosts debug3: check_host_in_hostfile: match line 1 debug1: Host '{servername}' is known and matches the RSA host key. debug1: Found key in /{home directory}/{username}/.ssh/known_hosts:1 debug2: bits set: 1035/2048 debug1: ssh_rsa_verify: signature correct debug2: kex_derive_keys debug2: set_newkeys: mode 1 debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug3: Wrote 16 bytes for a total of 1197 debug2: set_newkeys: mode 0 debug1: SSH2_MSG_NEWKEYS received debug1: SSH2_MSG_SERVICE_REQUEST sent debug3: Wrote 52 bytes for a total of 1249 debug2: service_accept: ssh-userauth debug1: SSH2_MSG_SERVICE_ACCEPT received debug2: key: /{home directory}/{username}/.ssh/identity ((nil)) debug2: key: /{home directory}/{username}/.ssh/id_rsa (0x7f769e632270) debug2: key: /{home directory}/{username}/.ssh/id_dsa ((nil)) debug2: key: /{home directory}/{username}/.ssh/id_ecdsa ((nil)) debug3: Wrote 84 bytes for a total of 1333 debug1: Authentications that can continue: publickey,password debug3: start over, passed a different list publickey,password debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password debug3: authmethod_lookup publickey debug3: remaining preferred: keyboard-interactive,password debug3: authmethod_is_enabled publickey debug1: Next authentication method: publickey debug1: Trying private key: /{home directory}/{username}/.ssh/identity debug3: no such identity: /{home directory}/{username}/.ssh/identity debug1: Offering public key: /{home directory}/{username}/.ssh/id_rsa debug3: send_pubkey_test debug2: we sent a publickey packet, wait for reply debug3: Wrote 628 bytes for a total of 1961 debug1: Authentications that can continue: publickey,password debug1: Trying private key: /{home directory}/{username}/.ssh/id_dsa debug3: no such identity: /{home directory}/{username}/.ssh/id_dsa debug1: Trying private key: /{home directory}/{username}/.ssh/id_ecdsa debug3: no such identity: /{home directory}/{username}/.ssh/id_ecdsa debug2: we did not send a packet, disable method debug3: authmethod_lookup password debug3: remaining preferred: ,password debug3: authmethod_is_enabled password debug1: Next authentication method: password
编辑2:还值得注意的是,本地用户似乎不会发生这种情况,只有用户目录位于我们所有服务器之间共享的位置的用户才会发生这种情况。
答案1
该解决方案最终与 PAM 本身几乎无关。问题实际上是与 SELinux 的交互,我们通常不使用 SELinux,但我们认为它是默认安装和激活的。将其设置为宽容模式立即解决了问题,用户可以再次使用他们的密钥。