为什么 SSH 不尊重我的授权密钥?

pno*_*ata 3 linux ssh ssh-keys authorized-keys ubuntu-12.04

我家里有 2 台笔记本电脑,都运行 Ubuntu 12.04(台式机),并且都使用相同的 NetGear wifi 路由器。我在其中一台机器上使用了一种称为“MAC 绑定”的技术,以便路由器在每次尝试连接到 Internet 时始终为其分配相同的 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
Run Code Online (Sandbox Code Playgroud)

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

Nat*_*n C 6

第一步:用/etc/init.d/sshd restart. 此外,请确保对authorized_users 文件的权限正确。验证、使用chmod 600 ~/.ssh/authorized_keys并确保它归您登录的用户所有。

  • 桌面部分无关紧要(因为只是 GUI 使它成为“桌面”)。`/var/log/secure.log` 是否有任何引用密钥的内容? (2认同)
  • 我重新生成了@NathanC 建议的密钥 - 现在它可以工作了!谢谢大家!! (2认同)

Ern*_*tas 5

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