为什么 SSH 不遵守我的授权密钥?

为什么 SSH 不遵守我的授权密钥?

我家里有两台笔记本电脑,都运行 Ubuntu 12.04(桌面版),都使用同一个 NetGear wifi 路由器。我在其中一台机器上使用了一种称为“MAC 绑定”的技术,这样路由器每次尝试连接到互联网时都会为其分配相同的 192.168.1.52 IP 地址。(无关:MAC 绑定只是意味着配置路由器始终将特定的 MAC 地址绑定到特定的 IP。

所以现在,我有 1 台笔记本电脑,它总是被分配一个在 192.168.1.1 到 192.168.1.50 范围内的随机 IP,还有 1 台笔记本电脑(我的“构建服务器”)总是被分配 192.168.1.52。

我正在尝试编写一些 bash 脚本,该脚本将在“客户端”笔记本电脑(随机 IP 机器)上运行,然后ssh进入构建服务器(192.169.1.52 机器);因此,构建服务器必须具有来自我的 LAN 内部的“专用”IP。我不想明确地向这些 bash 脚本提供密码,所以我按照这篇文章生成 SSH 密钥。具体来说,我:

  1. 在我的客户端笔记本电脑上生成 SSH 密钥(生成一个id_rsa.pub文件)
  2. scpid_rsa.pub文件发送到我的构建服务器,并将cat其添加到~/.ssh/authorized_keys文件中。我验证了我的客户端笔记本电脑的 SSH 密钥现在存在于authorized_keys构建服务器上的文件中。
  3. 我关闭了客户端笔记本电脑上的终端,然后重新打开了一个新终端,只是为了确保万无一失(以防 Linux 需要重新启动任何东西等)。
  4. 然后我尝试通过 SSH 连接到构建服务器,仍提示我输入密码!

这是怎么回事?为什么我的构建服务器上的 SSH 不遵守来自客户端笔记本电脑的授权密钥?我需要在构建服务器上重新启动任何东西吗(sshd等等)?我是否错过了这里的关键步骤?如何开始故障排除?提前致谢!

更新:显然 Ubuntu 没有/var/log/secure.log,但是有一个/var/log/auth.log。当我在构建服务器上跟踪此日志,然后尝试从我的客户端笔记本电脑通过 SSH 进入构建服务器时,发生了以下情况:

  1. ssh myuser@buildserver从客户端笔记本电脑运行
  2. 系统提示我输入密码。
  3. 一旦输入密码,我就会在构建服务器的auth.log文件中看到以下输出:

 

May 21 12:02:07 buildserver sshd[28930]: error: RSA_public_decrypt failed: error:0407006A:lib(4):func(112):reason(106)
May 21 12:02:10 buildserver sshd[28930]: pam_sm_authenticate: Called
May 21 12:02:10 buildserver sshd[28930]: pam_sm_authenticate: username = [myuser]
May 21 12:02:10 buildserver sshd[28930]: pam_sm_authenticate: /home/myuser is already mounted
May 21 12:02:10 buildserver sshd[28930]: Accepted password for myuser from 192.168.1.3 port 39821 ssh2
May 21 12:02:10 buildserver sshd[28930]: pam_unix(sshd:session): session opened for user myuser by (uid=0)
May 21 12:02:10 buildserver sshd[29003]: Received disconnect from 192.168.1.3: 11: disconnected by user
May 21 12:02:10 buildserver sshd[28930]: pam_unix(sshd:session): session closed for user myuser

也许我应该提到一些事情:在两台机器上(客户端笔记本电脑和我的构建服务器,用户名/帐户名是myuser) - Linux 是否会因为两台机器上的用户名相同而感到困惑?

答案1

第一步:使用 重启 ssh /etc/init.d/sshd restart。另外,确保 authorized_users 文件的权限正确。要验证,请使用chmod 600 ~/.ssh/authorized_keys并确保它归您以该身份登录的用户所有。

答案2

对我来说,删除 id_rsa.pub 有帮助(我使用的是 ~/.ssh/id_rsa 密钥)。这是因为 id_rsa.pub 与我的 id_rsa 密钥不匹配。

答案3

你的公钥是什么格式的?

我发现很多工具生成这样的密钥:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "1024-bit RSA, converted from OpenSSH by [email protected]"
AAAAB3NzaC1yc2EAAAABIwAAAIEA1on8gxCGJJWSRT4uOrR13mUaUk0hRf4RzxSZ1zRb
YYFw8pfGesIFoEuVth4HKyF8k1y4mRUnYHP1XNMNMJl1JcEArC2asV8sHf6zSPVffozZ
5TT4SfsUu/iKy9lUcCfXzwre4WWZSXXcPff+EHtWshahu3WzBdnGxm5Xoi89zcE=
---- END SSH2 PUBLIC KEY ----

我的authorized_keys文件始终包含这样的密钥:

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA1on8gxCGJJWSRT4uOrR13mUaUk0hRf4RzxSZ1zRbYYFw8pfGesIFoEuVth4HKyF8k1y4mRUnYHP1XNMNMJl1JcEArC2asV8sHf6zSPVffozZ5TT4SfsUu/iKy9lUcCfXzwre4WWZSXXcPff+EHtWshahu3WzBdnGxm5Xoi89zcE=

(公钥全部连接在一行上)

相关内容