设置基于密钥的身份验证后,SSH 仍然要求输入密码

tra*_*tto 11 linux ssh authentication

我已经成功地为从我的 A 机器到我的 B 机器的 root 用户创建了一个基于密钥的身份验证。

现在,我在 B 机器上创建了一个新用户,与在 A 机器上相同,我们称他为USER。我在 B 机器上为他创建了一个主目录/home/USER,我想为他从机器 A 到 B 机器创建基于密钥的身份验证。

所以,我在一台机器上跑

  1. ssh-keygen -t rsa,接受所有路径,所以/home/USER/.ssh/id_rsa没有短语
  2. ssh-copy-id -i /home/USER/.ssh/id_rsa.pub USER@BmachinesIP, 输入密码并得到按摩

现在尝试登录机器 bla bla bla

所以一切似乎都很好。

但是当我尝试连接时,ssh USER@BmachinesIP我被要求输入密码。我试图查看日志并运行ssh -vvv USER@BmachinesIP,这是输出的一部分:

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: Offering public key: /home/USER/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/USER/.ssh/id_dsa
debug3: no such identity: /home/USER/.ssh/id_dsa
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
USER@BmachinesIP's password:
Run Code Online (Sandbox Code Playgroud)

那么,谁能告诉我我做错了什么或者我应该改变什么?也许问题出在权限上,它们是:

在一台机器上:

drwx------  2 USER USER    SIZE DATE TIME .ssh
-rw-------  1 USER USER 1675 2011-10-31 14:36 id_rsa
-rw-r--r--  1 USER USER 413 2011-10-31 14:36 id_rsa.pub
Run Code Online (Sandbox Code Playgroud)

在 B 机器上:

drwx------  2 USER defaultGroup    SIZE DATE TIME .ssh
-rw-------    1 USER defaultGroup    SIZE DATE TIME authorized_keys
Run Code Online (Sandbox Code Playgroud)

tra*_*tto 15

我找到了解决办法。权限有问题。

/home/USER 在远程机器上被授予所有权限,但对于基于密钥的身份验证,它必须设置为 755

  • 哇。令人惊讶的是,关于权限的调试输出为零,即使它们是正确的公钥配置的核心。 (3认同)
  • 基本上你需要这些权限:`chmod ow ~/; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys`,然后它就可以工作了。复制自Maxime R. 的回答:http://askubuntu.com/questions/54670/passwordless-ssh-not-working (2认同)
  • 我已经完成了所有这些权限更改,但当我 ssh 时它仍然要求我输入密码。我还验证了两台机器(Ubuntu)上的私钥相同。很纳闷。 (2认同)