编辑:这个问题被重新设计,以使其对社区更有用,并且对我来说不那么具体。
关于 ssh 和授权密钥访问的问题似乎经常出现,但似乎很少有明确的答案;
我将 SSH 公钥复制到 authorized_keys 后,服务器仍要求输入密码
那么,在社区看来,彻底解决此类问题的可靠方法是什么?
答案1
分析问题
ssh 连接可能出错的地方有两个,一个是服务器,另一个是客户端。我们希望一次排除一个问题。
在服务器上
要增加服务器上的日志记录,请在 /etc/ssh/sshd_config 文件中设置以下行;
日志级别 DEBUG
还有 DEBUG2 和 DEBUG3 可以将更多的信息发送到日志。
要监视日志,请使用命令尾部-f /var/log/auth.log
在客户端
您可以使用 -v 选项为客户端连接添加详细程度。
SSH-V[电子邮件保护]
还有 -vv 和 -vvv 可以增加输出的详细程度
发现错误
使用上述命令在服务器上设置日志监控,然后尝试使用上述详细程度从客户端连接到它。现在,仔细检查每个输出并查找不能的,没有权限的,没有这样的身份:或RSA1 标识符不正确's 等等。如果你的处境与我类似,这些很可能就是问题所在。
常见陷阱
权限 - 客户端
证书和known_hosts(通常在~.ssh中找到)都需要用户可读。在最简单的情况下,id_rsa、id_rsa.pub和knwon_hosts应该由您的用户组拥有并属于您的用户组,并且应该可供用户读取,以下是“默认”设置。
-rw------- 用户名 用户名 id_rsa
-rw-r--r-- 用户名 用户名 id_rsa.pub
-rw-r--r-- 用户名 用户名 known_hosts
权限 - 服务器端
再次,证书和这次的 authorized_keys 文件必须可由登录的用户读取。默认值如下所示:
-rw------- 用户名 用户名 authorized_keys
-rw-r--r-- 用户名 用户名 id_rsa
加密驱动器/目录
服务器上的 SSH 需要能够查看/读取 authorized_keys 文件和相关服务器证书;因此,如果它们位于加密设备上,则会话必须处于活动状态,以便守护进程可以读取该设备。这通常出现在您可以通过密码登录时,并且当该会话处于活动状态时,您可以通过授权密钥登录,而无需密码。