尝试SSH到远程计算机,但仍要求输入密码


18

尝试通过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

有人可以告诉我为什么它不能在这台远程计算机上工作吗?


5
查看/var/log/secure(如果有权限)和/var/log/messages(如果是SELinux)。否则,它~/.ssh/authorized_keys与SSH客户端发送的内容和发送的内容之间不匹配。
亚伦·科普利2013年

Answers:


17

我经常在CentOS 6机器上遇到类似的错误,涉及ssh-copy-id SELinux的。

ssh-copy-id创建授权密钥文件将其与适当的权限创建它,而是用错了SELinux的标签。解决此问题的方法是使用以下命令将标签恢复为其默认策略:

restorecon -R ~/.ssh


1
好答案。但是对于SELinux新手来说,知道如何检查列表和检查权限也将很有趣。
zrajm 2015年

14

如果可能的话,从服务器端调试这些东西总是容易得多。如果您可以在调试模式下在另一个端口上启动sshd,它将立即告诉您为什么拒绝密钥(我的猜测是您的主目录是组可写的)。例如,您可以使用,在调试模式下在端口2222上启动sshd /usr/sbin/sshd -d -p 2222,然后通过进行连接ssh -p 2222 user@remotehost


4
非常感谢您的疯狂猜测(主目录可组写入)。那正是我的情况。
Sergei Kurenkov 2015年

@skwllsp-如果您的情况正确,请接受此答案。
鹿猎人

1
@鹿猎人,这个问题是另一个人问的,不是我。我不能接受这个答案。
谢尔盖·库伦科夫

@skwllsp-对不起,很抱歉。
鹿猎人

chmod 744到我的主目录已解决-与该答案有关,谢谢!
Brandt Solovij '02

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无密码登录对我有用。


1

我前一段时间在RHEL5上经历过这种情况(我不知道这是否是您正在使用的发行版),并且发现这只是当我使用ssh-copy-id时。尝试将密钥文件scp'到正确的文件夹,然后当然重置权限


0

就我而言,问题是authorized_keys文件格式不正确。

应该有不换行的格式定义(间ssh-rssssh-dss......)和公共密钥本身。


0

之前我在使用ssh和keyfile时遇到了麻烦。在这种情况下,将我的ID密钥重命名为“ id_rsa”很有帮助。不幸的是,我为不同的服务器使用了不同的密钥。因此,该方法的用途有限。一次性使用可能会有所帮助。

其次,今天我仅在一个XTerm会话中再次遇到此错误,并且在同一个服务器/软管计算机的其他6个xterm会话中,一切工作正常。因此,我比较env了两次会议的输出。我发现这是工作会议,非工作会议中没有:

SSH_AUTH_SOCK=/run/user/1001/keyring/ssh 

我将该作业粘贴到不工作的会话中:

export SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
ssh  user@host
... Welcome ...

换句话说,该解决方案对我有用。

我对SSH_AUTH_SOCKET做了一些检查。从这个答案:

代理用于与其他进程进行通信的unix文件套接字的路径

我猜想这对于基于结果的关键解析至关重要。


-1

debug1:提供公用密钥:/home/jsmith/.ssh/id_ rsa

...

debug1:尝试使用私钥:/home/jsmith/.ssh/id_ dsa

在我看来,私钥/公钥根本不匹配。密钥名称告诉我们,公钥是RSA密钥,私钥是DSA。

尝试生成scp服务器的新对和公钥。


可以通过将两个密钥的指纹与ssh-keygen -l -f ~/.ssh/id_rsa' and ssh-keygen -l -f〜/ .ssh / id_rsa.pub` 进行比较来验证是否确实是这种情况。但是,我认为如果不匹配,它甚至不会提供密钥。我认为这只是一个服务器由于尚未确定的原因而被拒绝,因此它尝试了另一个。

-2

我建议检查./ssh以及用户主目录,密钥文件和authorized_keys文件上的权限,因为如果您希望ssh无密码连接正常工作,则不允许所有人在其中写入和读取。这涉及源计算机和目标计算机。老实说,即使拥有更大的权利,有时它仍然有效,但事实并非如此。


1
请检查:serverfault.com/questions/464411/…。您的帖子也是多余的,因为您还没有阅读其他人写的内容。
鹿猎人
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.