Windows 到 Linux:带有 SSH 和私钥/公钥对的 Putty

Windows 到 Linux:带有 SSH 和私钥/公钥对的 Putty

我花了大约 3 个小时试图弄清楚如何使用 putty 从我的 Windows 机器连接到 Linux 机器,而无需发送密码。

这是连接到使用 OpenSSH 的 Ubuntu 服务器。私钥是 SSH-2 RSA,1024 位。我使用 SSH2 进行连接。

我已经遇到了更常见的问题:

  1. Putty 生成的公钥格式“错误”。我已更正此问题(如上所示)这篇博文)。但是,由于我还没有连接,我无法完全确认此文件的格式是否正确。密钥现在都在一行上,我尝试在文件末尾添加/删除换行符。我还尝试了几次公共文件修改过程,以确保我没有搞砸手动转换。即便如此,我还是无法验证此处的准确性。
  2. 权限也一度出现错误,具体来说,这意味着文件具有太多权限。我也必须解决这个问题,我知道它已经过去了,因为我不再看到相关错误/var/log/auth.log
  3. 我都试过了授权密钥授权密钥2以防服务器有旧版本的 OpenSSH,但这并没有改变什么。
  4. 我确实有用户访问权限。密钥文件失败后,我可以输入密码

我所掌握的唯一剩余的信息是它声称我输入的密码错误:

sshd[22288]: Failed password for zzzzzzz from zz.zz.zz.zz port 53620 ssh2

即便如此,据我所知,这只是一个懒惰的 try/catch,因为我认为根本不需要密码

我在 /var/log 文件中没有看到任何其他有用的信息。还有什么问题?

答案1

  • 使用 PuttyGen 生成您的密钥。
  • 右键单击“粘贴的公钥...”文本框并选择select all
  • 再次单击鼠标右键并选择copy
  • 连接到您的主机并编辑.ssh/authorized_keys,然后粘贴您的密钥,删除您尝试跟随该视频时的任何其他预先存在的内容。
  • 验证您的~/.ssh文件夹0700是否chmod 0700 ~/.ssh/
  • 您的authorized_keys文件应该0600如此chmod 0600 ~/.ssh/authorized_keys

在此处输入图片描述

答案2

这意味着密钥交换没有发生或者失败。

请下载命令行工具 plink.exe(与下载 putty.exe 的位置相同)并进行一些调试

plink -v -i yourprivatekeyfile user@server

除了服务器所说的内容之外,看看它还告诉您什么。

您可以在 powershell 或 cmd 窗口中执行此操作。

如果你已经生成了默认的 putty 公共文件,你可以使用以下命令进行转换

ssh-keygen -i -f 你的puttypubkey文件 > openssh.key

添加到你的 authorized_keys 中

答案3

按照@Zoredache 的建议生成密钥对并将公钥存储在服务器上。输入保护私钥的密码,然后单击Save private key并保存密钥(例如,在您的用户配置文件中)。从密钥文件中删除除您自己之外所有人的权限。

为了能够使用私钥进行身份验证,您需要将其提供给 PuTTY。加载它与Pageant或者在PuTTY配置对话框中输入Connection > SSH > Auth(单击Browse...并选择刚刚保存的文件)。

在同一个对话框中,Session在相应的字段中输入要连接的主机名或 IP 地址。切换到子类别Logging并单击All session output,然后单击Open

当终端窗口打开时,右键单击标题栏并选择Event Log。此客户端日志是auth.log对服务器端的补充,可以帮助您了解正在发生的事情。

相关内容