SSH突然要求输入密码
一般问题
我有我的电脑(Mac OSX 10.9.4)和一台远程服务器(Ubuntu 14.04.1 LTS)。 我使用ssh-keygen
创建了一个ssh密钥(没有密码),将公钥添加到服务器的.ssh/authorized_keys
,并且全世界都很好。 然后,今天早些时候, ssh
再次要求我输入密码。
什么可能导致它
我真的不确定是什么造成了这种情况 - 这是我最好的猜测:
rm
倒是他们)。 从我的命令历史记录中可以看出,我没有删除与ssh相关的文件,只是.git,.gitignore和各种* .sw文件? vim中剩下的文件。 ssh-keygen -l -f ~/.ssh/authorized_keys
以查看(我认为)该文件中的密钥的指纹。 相关日志
当我运行ssh -v -i ~/.ssh/mykey_rsa user@serverip
,我得到这个:
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /Users/myusername/.ssh/config
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 50: Applying options for *
debug1: Connecting to {ip address} [{ip address}] port 22.
debug1: Connection established.
debug1: identity file .ssh/mykey_rsa type 1
debug1: identity file .ssh/mykey_rsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version
OpenSSH_6.6.1p1 Ubuntu-2ubuntu2
debug1: match: OpenSSH_6.6.1p1 Ubuntu-2ubuntu2 pat OpenSSH*
debug1: Miscellaneous failure (see text)
No credentials cache file found
debug1: An invalid name was supplied
unknown mech-code 0 for mech 1 2 752 43 14 2
debug1: Miscellaneous failure (see text)
unknown mech-code 0 for mech 1 3 6 1 5 5 14
debug1: Miscellaneous failure (see text)
unknown mech-code 2 for mech 1 3 6 1 4 1 311 2 2 10
debug1: An unsupported mechanism was requested
unknown mech-code 0 for mech 1 3 5 1 5 2 7
debug1: Miscellaneous failure (see text)
unknown mech-code 0 for mech 1 3 6 1 5 2 5
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5-etm@openssh.com none
debug1: kex: client->server aes128-ctr hmac-md5-etm@openssh.com 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: Server host key: RSA {fingerprint}
debug1: Host '{ip address}' is known and matches the RSA host key.
debug1: Found key in /Users/myusername/.ssh/known_hosts:16
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: .ssh/otherkey_rsa
debug1: Authentications that can continue: publickey,password
debug1: Offering RSA public key: .ssh/mykey_rsa
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: password
user@serverip's password:
我发现它有点奇怪,它在我告诉它使用的那个之前尝试了一个不同的ssh密钥(otherkey_rsa)(mykey_rsa),但是我对ssh的解释不够深刻。
同时,远程服务器的/var/log/auth.log
地说
Aug 12 02:04:19 servername sshd[22147]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Aug 12 02:04:19 servername sshd[22147]: Authentication refused: bad ownership or modes for directory /root
权限
本地/在我的电脑上:
~/ drwxr-xr-x+ 105 myusername staff 3570 Aug 11 23:14
~/.ssh/ drwx------ 13 myusername staff 442 Aug 11 23:14
~/.ssh/mykey_rsa.pub -rw-r--r-- 1 myusername staff 397 Aug 5 20:52
~/.ssh/mykey_rsa -rw------- 1 myusername staff 1675 Aug 5 20:52
远程/在服务器上:
~/ drwxr-xr-x 8 501 staff 4096 Aug 12 02:16
~/.ssh/ drwx------ 2 remoteuser root 4096 Aug 12 01:49
~/.ssh/authorized_keys -rw------- 1 remoteuser root 794 Aug 12 01:44
我真的很难接受这一点,并会非常感激帮助! 谢谢!
正如aecolley在超级用户指出的那样,答案正在我的脸上。 问题在于权限,原因是拥有uid 501的用户拥有我的主目录。 你为什么问? 因为我偶尔会(偶然地)使用rsync
从我的笔记本电脑复制一堆文件,并且rsync
似乎已经使用我的笔记本电脑的用户ID(501,OS X上的默认值)。
chown root .
从我在服务器上的主目录修复了这个问题。
也许它可能对某人有用。
我在Ubuntu上遇到了同样的问题:有一天,我尝试推入git repo并获得密码提示。 在我的情况下,问题是〜/ .ssh / config文件的权限错误(root是文件所有者)。
要解决此问题,我必须更改文件所有者,然后重新登录。
我只花了半个小时在优胜美地这个问题上把我的头发拉出来。 我的所有权限都是正确的,关键在正确的位置,配置是正确的,等等。
发生了什么事情是这样的:我使用迁移助理将一些文件从这台机器转移到另一台机器上,导致交互式用户会话退出,但实际上并没有重启机器,所以当我重新登录并启动tmux
它重新连接到存活会话。 显然,这导致它失去某种安全权限来访问钥匙串,在那里存储我的密钥密码,并且它不会再提示我。 只需重新启动tmux即可解决问题!
上一篇: SSH suddenly asking for password
下一篇: Groovy SSL signature verification: signature length not correct?