我设置了一个客户端linux计算机,通过带有priv / pub密钥对的ssh / sshfs连接到linux服务器,因此不需要密码 . 我用这个方法:

http://www.linuxproblem.org/art_9.html

  • 在客户端上,使用 ssh-keygen -t rsa 创建priv / pub密钥对

  • 在服务器上创建 .ssh 目录: ssh user@192.168.1.111 mkdir -p .ssh

  • 将公钥添加到服务器的授权密钥: cat .ssh/id_rsa.pub | ssh user@192.168.1.111 'cat >> .ssh/authorized_keys'

这有效 . 但是,当我在另一台计算机上尝试以下任一方法时,它们都会失败( Note: I tried this on two other computers and both failed ):

  • 在第二台计算机上创建一个新的priv / pub密钥对,就像在第一台计算机上一样,将pub密钥导出到服务器 (This fails)

  • id_rsaid_rsa.pub 复制到新客户端计算机上的 .ssh 目录并使用 (this also fails)

在第二个和第三个客户端上,它一直询问远程用户的密码(而不是密钥文件的密码) . 我现在在3台不同的计算机上试过这个,它只适用于我设置的第一个客户端 . 没有其他人工作 . 为什么服务器只接受第一个?

查看日志,我在成功的客户端和被拒绝的客户端中看到以下区别:

//Rejected
/var/log/audit/audit.log:type=USER_AUTH msg=audit(1394819951.391:76): user pid=1787 uid=0 auid=4295967295 ses=4295967295 subj=system_u:system_r:sshd_t:s0-s0:d0.c1023 msg='op=pubkey acct="myuser" exe="/usr/sbin/sshd" hostname=? addr=192.168.1.138 terminal=ssh res=failed'

//Successful
/var/log/audit/audit.log:type=USER_AUTH msg=audit(1394821121.443:114): user pid=1865 uid=0 auid=4395767295 ses=4395767295 subj=system_u:system_r:sshd_t:s0-s0:d0.c1023 msg='op=pubkey_auth rport=56096 acct="myuser" exe="/usr/sbin/sshd" hostname=? addr=192.168.1.125 terminal=? res=success'

不同的是成功的一个有 rport=56096 而另一个没有"rport" .