SSH突然要求输入密码

一般问题

我有我的电脑(Mac OSX 10.9.4)和一台远程服务器(Ubuntu 14.04.1 LTS)。 我使用ssh-keygen创建了一个ssh密钥(没有密码),将公钥添加到服务器的.ssh/authorized_keys ,并且全世界都很好。 然后,今天早些时候, ssh再次要求我输入密码。

什么可能导致它

我真的不确定是什么造成了这种情况 - 这是我最好的猜测:

  • 我也必须从我的主目录中删除远程服务器上的一些文件时,我不小心复制一个Git仓库那里(我没有从那里过承诺或任何东西,只是复制的东西,然后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即可解决问题!

    链接地址: http://www.djcxy.com/p/80817.html

    上一篇: SSH suddenly asking for password

    下一篇: Groovy SSL signature verification: signature length not correct?