我一直在尝试在 Linux 服务器上实现无需密码即可使用 ssh。我查看了很多教程,但对一些关键概念缺乏基本的了解。
我有一个在客户端服务器上生成的旧 rsa 公钥,我想使用它。我登录到 Linux 服务器,并将我的 rsa 公钥添加到 /home/user/.ssh/authorized_keys。尝试登录时仍提示我输入密码。
我的问题是这是否是添加密钥的正确 authorized_keys 文件。将它放在我自己的用户目录中似乎很奇怪,但我看到的关于设置 ssh 的大多数解释都告诉我将公钥放在 中 ~/.ssh/authorized_keys
。
作为后续问题,我几年前在客户端上生成的公钥是否是所有 shh 连接的标识符,还是我需要生成一个新的?
更新 正在记录的错误如下:
trying public key file /home/bsayegh/.ssh/authorized_keys
Authentication refused: bad ownership or modes for file /home/bsayegh/.ssh/authorized_keys
文件/目录的权限为:
-rwxrwxrwx. 1 bsayegh root 401 May 24 14:30 authorized_keys
drwx------. 2 bsayegh root 4096 May 24 14:30 .
drwx------. 3 bsayegh bsayegh 4096 May 25 11:38 ..
答案1
如果您有权访问您想要查看的机器的日志文件。特别是/var/log/messages
和/var/log/secure
。通常,您将找到一条消息,说明为什么 sshd 不接受您的公钥身份验证。
一般来说,你需要做以下事情
检查 sshd 是否允许公钥认证(参见
/etc/ssh/sshd_config
)——我认为这是默认设置,因此您至少应该检查选项(例如RSAAuthentication
和)PubkeyAuthentication
是否被明确禁用。chown -R ***(your user name)*** ~/.ssh
-- 您拥有该文件夹chmod 700 ~/.ssh
——只有您才有权访问 .ssh 文件夹。如果没有权限,sshd 会强制不允许访问。chmod 600 ~/.ssh/id_rsa
-- 与文件夹相同。对于您要使用的任何私钥,这都是必需的chmod 600 ~/.ssh/authorized_keys
-- 一些 sshd 守护进程需要这样做来增加一点安全性,通过不让其他人知道他们需要窃取哪些密钥restorecon -R ~/.ssh
-- 当您的系统已激活 SELINUX 时,为了设置属性以使文件可供 sshd 守护进程访问;使用 ls -Z ~/.ssh 检查文件上的一些与 ssh 相关的属性,例如 RedHat 系统上的 ssh_home_t
编辑(2016-06-07)——添加更多规则