我正在连接到远程服务器,因为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 也可以,但它不应该是组和/或其他可写的。
有用的链接: