尝试通过 SSH 进入远程计算机但仍要求输入密码。
我有多台计算机运行 SElinux,其中只有一台计算机让我在没有密码的情况下使用 ssh 时遇到困难。
我执行了 ssh-copy-id 并且可以在 .ssh/authorized_keys 中看到我的密钥。
我 chmod 700 .ssh 和 chmod 600 ./ssh/* 中的所有文件
如果我执行 ssh -v 这是我的输出:
OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to wcmisdlin05 [10.52.208.224] port 22.
debug1: Connection established.
debug1: identity file /home/jsmith/.ssh/identity type -1
debug1: identity file /home/jsmith/.ssh/id_rsa type 1
debug1: identity file /home/jsmith/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.3
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: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'wcmisdlin05' is known and matches the RSA host key.
debug1: Found key in /home/jsmith/.ssh/known_hosts:9
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: gssapi-keyex
debug1: No valid Key exchange context
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure. Minor code may provide more information
Credentials cache file '/tmp/krb5cc_501' not found
debug1: Unspecified GSS failure. Minor code may provide more information
Credentials cache file '/tmp/krb5cc_501' not found
debug1: Unspecified GSS failure. Minor code may provide more information
debug1: Unspecified GSS failure. Minor code may provide more information
debug1: Next authentication method: publickey
debug1: Offering public key: /home/jsmith/.ssh/id_rsa
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Trying private key: /home/jsmith/.ssh/identity
debug1: Trying private key: /home/jsmith/.ssh/id_dsa
debug1: Next authentication method: password
有人能告诉我为什么它不能在这台远程计算机上工作吗?
答案1
我经常遇到类似的情况漏洞在涉及 SELinux 的 CentOS 6 机器上ssh-copy-id
。
创建授权密钥文件时,ssh-copy-id
它会使用正确的权限创建它,但使用错误的 SELinux 标签。修复此问题的方法是使用以下命令将标签恢复为其策略默认值:
restorecon -R ~/.ssh
答案2
如果可能的话,从服务器端调试这些事情总是容易得多。如果你能在另一个端口上以调试模式启动 sshd,它会立即告诉你密钥被拒绝的原因(我大胆猜测是你的主目录是组可写的)。例如,你可以使用 在端口 2222 上以调试模式启动 sshd /usr/sbin/sshd -d -p 2222
,然后使用 进行连接ssh -p 2222 user@remotehost
。
答案3
提到 SElinux 的发帖者一针见血地指出了我的问题,我不想使用 selinux 但忘了禁用它,而服务器在启动时就启用了 selinux。
ssh -v
调试有帮助。密钥被接受:
debug1: Found key in /var/lib/amanda/.ssh/known_hosts:19
debug1: ssh_rsa_verify: signature correct
然后我得到了错误
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure. Minor code may provide more information
Credentials cache file '/tmp/krb5cc_502' not found
debug1: Unspecified GSS failure. Minor code may provide more information
Credentials cache file '/tmp/krb5cc_502' not found
debug1: Unspecified GSS failure. Minor code may provide more information
debug1: Unspecified GSS failure. Minor code may provide more information
Credentials cache file '/tmp/krb5cc_502' not found
我的解决方法是关闭 selinux,setenforce 0
然后在 /etc/selinux 中禁用。然后 ssh 无密码登录就可以正常工作了。
答案4
该问题可能是由于 SE-Linux 标签被更改引起的,例如 docker bind-mounts 的 :Z 或 :z 选项
尝试运行这些:
chcon --recursive unconfined_u:object_r:user_home_dir_t:s0 ${HOME}
chcon --recursive unconfined_u:object_r:ssh_home_t:s0 ${HOME}/.ssh