我只是build立了一个新的Debian服务器。 我禁用了根SSH和密码authentication,所以你必须使用密钥文件。
对于我的主要用户来说,一切都按预期工作。 我使用了ssh-keygen -t dsa并获得了公钥和私钥。 把一个放在授权密钥里,把另一个放在pem文件中。
我想创build一个用户,我可以部署的东西,所以我做了基本相同的过程。 我adduser编辑它,做了一个.ssh文件夹,运行ssh-keygen -t dsa (我也试过RSA),把钥匙放在适当的位置。
没有运气。 我得到一个Permission denied (publickey)错误。 当我使用完全相同的密钥作为帐户,同样的错误。 当我启用密码authentication时,我可以通过SSHlogin密码。
我如何debugging?
编辑
详细的SSH输出(deployer.pem是正确的键):
debug2:key:/Users/eli/.ec2/deployer.pem(0x100126830) debug2:key:/Users/eli/.ec2/deployer.pem(0x100126b30) debug2:key:/Users/eli/.ec2/deployer.pem(0x0) debug1:可以继续的身份validation:publickey debug3:重新开始,传递一个不同的列表publickey debug3:首选公钥,键盘交互,密码 debug3:authmethod_lookup publickey debug3:其余的首选项:键盘交互式,密码 debug3:authmethod_is_enabled publickey debug1:下一个validation方法:publickey debug1:提供公钥:/Users/eli/.ssh/id_rsa debug3:send_pubkey_test debug2:我们发送了一个publickey包,等待回复 debug1:可以继续的身份validation:publickey debug1:提供公钥:eli.pem debug3:send_pubkey_test debug2:我们发送了一个publickey包,等待回复 debug1:可以继续的身份validation:publickey debug1:提供公钥:/Users/eli/.ec2/deployer.pem debug3:send_pubkey_test debug2:我们发送了一个publickey包,等待回复 debug1:可以继续的身份validation:publickey debug1:提供公钥:/Users/eli/.ec2/deployer.pem debug3:send_pubkey_test debug2:我们发送了一个publickey包,等待回复 debug1:可以继续的身份validation:publickey debug1:尝试私钥:/Users/eli/.ec2/deployer.pem debug1:读取完成的PEM私钥:键入DSA debug3:sign_and_send_pubkey debug2:我们发送了一个publickey包,等待回复 debug1:可以继续的身份validation:publickey debug2:我们没有发送数据包,禁用方法 debug1:没有更多的身份validation方法来尝试。 权限被拒绝(publickey)。
两部分:首先,debugging你的SSH服务器。 编辑/etc/ssh/sshd_config并将LogLevel增加为DEBUG。 然后强制你的ssh服务器用killall -HUP <sshd pid>重新加载它的configuration。
这将导致服务器将更多的细节添加到/var/log/secure和/或/var/log/auth日志文件中。
其次(实际上你不能先尝试这个),增加客户端的debugging级别。 ssh到箱子里
$ ssh -vvv hostname
这将打印出更多有关过程失败的信息。
如果你打开了你的ssh服务器上的debugging级别,不要忘了在完成时把它关掉。
你有没有检查关键文件的权限? .ssh/id_dsa文件应该是600,并由用户拥有。 运行ssh -v root@host来查看是否有问题。
如果用户的主目录,用户主目录下的.ssh目录或用户的authorized_keys文件可由除用户(组或其他用户)之外的任何人写入,则密钥validation将彻底失败,因为.ssh / authorized_keys文件不能更长的时间是可信的(因为另一个用户可以replace或修改它,从而以该用户身份login)。
尝试:
chmod go-w ~USER ~USER/.ssh ~USER/.ssh/authorized_keys
看看是否清除你的问题。
chown -R username. /home/username/.ssh
chmod 700 /home/username/.ssh
chmod 400 /home/username/.ssh/id_dsa /home/username/.ssh/id_dsa.pub
chmod 600 /home/username/.ssh/authorized_keys
这里有一些基于我尝试通过Pubkey身份validation(例如ssh rsa)获得ssh工作时遇到的问题的提示:
除了上面的提示(权限,-vvv)之外: – 在目标服务器上,通过passwd -S用户名或passwd -s用户名检查帐户信息。 输出看起来像[username] [stat] [pwchg] [min] [max] [warn]。 如果[stat]列显示LK,则需要解锁帐户passwd -u用户名。 如果[pwchg]date早于[max]天,则需要通过passwd -x 999或passwd用户名更改最大date或更改用户名的密码
例:
# uname -n myserver # pwd /export/home/santac # ls -l .ssh -rw------- 1 santac users 796 Jul 8 00:27 authorized_keys # cat .ssh/authorized_keys ssh-rsa AAABBBCCCboogaboogaAAABBBCCCidonthinkyougetthatthisisbogusbutwhattheheck== santac@otherserv # date Wed Jul 8 00:55:10 GMT 2015 # passwd -S santac santac LK 03/05/14 7 60 10 (note stat is LK or locked) # passwd -u santac # passwd -S santac santac PS 03/05/14 7 60 10 (note [pwchg] date is older than 60 days) # passwd santac Enter New Password: Confirm New Password: # passwd -S santac santac PS 07/08/15 7 60 10 (all good now) FROM THE OTHER SERVER: # uname -n otherserv # pwd /export/home/santac # ls -l .ssh -rw------- 1 santa users 1675 Jul 6 20:23 id_rsa -rw------- 1 santa users 394 Jul 6 20:23 id_rsa.pub # cat .ssh/id_rsa.pub ssh-rsa AAABBBCCCboogaboogaAAABBBCCCidonthinkyougetthatthisisbogusbutwhattheheck== santac@otherserv LOOKS GOOD...