我的机器最近停止接受传入的公共密钥身份验证。我有一个从Windows计算机ssh进入的ubuntu 11.04桌面。我用腻子选美。我能够进行连接,但只能通过交互式密码身份验证进行连接,而不能通过已设置的rsa密钥进行连接。
我已经验证了密钥在〜/ .ssh / authorized_keys中列出。我该如何解决此问题以及如何检查?
我的机器最近停止接受传入的公共密钥身份验证。我有一个从Windows计算机ssh进入的ubuntu 11.04桌面。我用腻子选美。我能够进行连接,但只能通过交互式密码身份验证进行连接,而不能通过已设置的rsa密钥进行连接。
我已经验证了密钥在〜/ .ssh / authorized_keys中列出。我该如何解决此问题以及如何检查?
Answers:
如果公钥身份验证不起作用:确保在服务器端,您的主目录(~
),~/.ssh
目录和~/.ssh/authorized_keys
文件都只能由其所有者写入。特别是,他们都不是该组可写的(即使用户独自在该组中)。chmod 755
还是chmod 700
可以,chmod 770
不是。
出现问题时应检查的内容:
ssh -vvv
以查看大量调试输出。如果您发布问题询问为什么不能与ssh连接,请包括此输出(您可能希望匿名使用主机名和用户名)。/var/log/auth.log
。我遇到了同样的问题,最后发现这是因为我对主目录进行了加密。SSH在您登录之前无法读取authorized_keys文件,因此基本上它会强制您首先进行密码验证。请参阅以下链接中有关加密主目录的部分:
https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Encrypted_Home_Directory
如果检查目录的权限,则有一个“。”。在它们之后,您可能已经启用了selinux,它将与密钥交换混为一谈,并且默认为手动密码识别。
您可以按照以下说明禁用SELinux进行故障排除:http : //www.centos.org/docs/5/html/5.1/Deployment_Guide/sec-sel-enable-disable-enforcement.html,或仅编辑/ etc / selinux / config文件,并将其从“ enforcing”更改为“ disabled”。
希望这可以帮助。
chmod 600 ~/.ssh/authorized_keys
-该文件可组写入。(viapyrosoft.co.uk/blog/2013/01/12/…)–
restorecon ~ -R
)上恢复系统配置的上下文是一个很好的起点。
我会确保您在/ etc / ssh / sshd_config中的设置正确。
要仅强制使用PKI并禁止密码,请找到该行
#PasswordAuthentication yes
在文件中,取消注释并将其设置为
PasswordAuthenticate no
我还将仔细阅读设置的其余部分,以确保它们有意义。特别是,由于已知DSA被泄露,请尝试确保使用RSA密钥。
由于需要对两台不同机器之间的通信进行故障排除,因此我~/.ssh
在客户端输入了两个私钥。
~/.ssh/identity
我没有为每个服务器主机配置各自的私钥,而是为所有主机配置了辅助(在这种情况下是错误的)密钥:
Host *
IdentityFile ~/.ssh/identity_b
更正~/.ssh/identity
解决了该问题:
Host a
IdentityFile ~/.ssh/identity_a
Host b
IdentityFile ~/.ssh/identity_b
不知何故,这对我有用:
root @ kaiser:〜#vim / etc / ssh / sshd_config
将此行从yes更改为no 28 StrictModes否
再试一次
sysadmin @ suselinux1:〜> con sysadmin kaiser欢迎使用Ubuntu 12.04.1 LTS(GNU / Linux 3.2.0-25-generic i686)
上次登录时间:2012年11月1日星期五10月13日15:40:11 sysadmin @ kaiser:〜$ date vie nov 9 17:53:11 CST 2012 sysadmin @ kaiser:〜$
sshd
文档的动机,而这些文档并不会完全属于“不错的星期六阅读”类别
~
,~/.ssh
并且~/.ssh/authorized_keys
它们只能由您写(特别是没有组写权限)。查找在/var/log/auth.log
尝试登录时创建的日志条目。将其复制粘贴到您的问题中(如果愿意,请编辑名称以保护隐私)。还要检查问题是否完全在服务器端:将私钥复制到Linux计算机上(您需要将PuTTY的私钥文件转换为OpenSSH格式),然后查看是否ssh localhost
可行。