如何以不同用户身份启用远程服务器的无密码身份验证?

如何以不同用户身份启用远程服务器的无密码身份验证?

我正在连接到远程服务器,因为tom谁(显然)存在于远程服务器上,但不存在于本地服务器上。

我将id_rsa.pub本地用户生成的密钥复制到远程服务器上bob汤姆的文件中。authorized_keys但是,系统仍然提示我输入密码。

[bob@localserver ~]$ ssh tom@remoteserver

编辑1

为了完整起见,我还重新生成了密钥并将其复制到远程服务器。

ssh-keygen -t rsa
ssh-copy-id -i tom@REMOTESERVER

请参阅此处的调试输出: ssh 调试详细信息

我在调试输出中注意到以下内容。我的id_rsa私钥文件中的每一行(base64 块?)都存在此内容:

debug3: key_read: missing whitespace

编辑2:

远程服务器的权限:

drwx------ 2 tom tom 4096 Aug 15 10:59 .
drwx------ 5 tom tom 4096 Aug 15 11:54 ..
-rw-rw-r-- 1 tom tom  810 Aug 15 10:59 authorized_keys
-rwx------ 1 tom tom  109 Aug 14 09:43 config
-rw------- 1 tom tom 1675 Aug  8 14:58 id_rsa
-rw-r--r-- 1 tom tom  404 Aug  8 14:58 id_rsa.pub
-rw-r--r-- 1 tom tom 1217 Aug 10 09:32 known_hosts

本地服务器的权限:

drwx------ 2 bob bob 4096 Aug 15 11:32 .
drwx------ 7 bob bob 4096 Aug 15 11:32 ..
-rw------- 1 bob bob 1613 Aug 15 11:09 id_rsa
-rw------- 1 bob bob 1675 Aug 15 11:08 id_rsa.bkp
-rw-r--r-- 1 bob bob  405 Aug 15 10:58 id_rsa.pub
-rw-r--r-- 1 bob bob  410 Aug 15 10:59 known_hosts

答案1

您的输出ssh -vv tom@remoteserver包含:

debug1: Offering public key: /home/bob/.ssh/id_rsa

此时,客户端找到了您的私钥并尝试使用它进行身份验证。 - 但是,那服务器拒绝这样做。原因或许可以找到服务器日志。

疯狂猜测:您有文件权限问题。

仔细检查服务器上的正确权限ls -la ~/.ssh。更好的是:用于ssh-copy-id将公钥复制到远程服务器。它将处理正确的权限。

man sshd_config说:

   StrictModes
          Specifies whether sshd(8) should check file modes and ownership  of  the
          user's  files  and  home directory before accepting login.  This is nor‐
          mally desirable  because  novices  sometimes  accidentally  leave  their
          directory  or  files world-writable.  The default is ``yes''.  Note that
          this does not apply to ChrootDirectory, whose permissions and  ownership
          are checked unconditionally.

基本上只有用户本身应该能够读取/写入~/.ssh.

答案2

尝试对远程主机上的authorized_keys 文件使用权限600。 644 也可以,但它不应该是组和/或其他可写的。

有用的链接:

https://stackoverflow.com/questions/5698665/strange-that-ssh-authorized-keys-will-not-work-if-it-is-a-chmod-of-664

相关内容