Windows-to-linux:使用SSH和私钥/公钥对的Putty

我花了大约3个小时,试图找出如何从我的Windows机器使用腻子连接到一个Linux机器,而不必发送密码。

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

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

  1. 腻子以“错误的格式”生成公钥。 我已经纠正了这个(正如在这篇博客文章中所看到的 )。 然而,由于我还没有连接,我不能绝对确认这个文件是在正确的格式。 关键是现在所有的一行,我已经尝试在文件的末尾添加/删除换行符。 我也尝试了公共文件修复过程几次,以确保我没有使手动转换stream失。 即便如此,我无法validation这里的准确性。
  2. 权限也是一次错误,具体意味着该文件有太多的权限。 我也必须解决这个问题,我知道它已经过去了,因为我不再在/var/log/auth.log中看到相关的错误。
  3. 如果服务器有旧版本的OpenSSH,我已经尝试了authorized_keysauthorized_keys2 ,但是这并没有改变。
  4. 我有访问权限作为用户。 在这个密钥文件失败后,我可以input密码

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

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

即使如此,据我所知,这只是一个懒惰的尝试/抓住某处,因为我不认为有一个密码参与

我在任何使用的/ var / log文件中都没有看到其他内容。 还有什么可能是错的?

  • 用PuttyGen生成你的密钥。
  • 右键单击“公共密钥粘贴…”文本框,然后select全select all
  • 再次右键单击并selectcopy
  • 连接到您的主机并编辑.ssh/authorized_keys ,并粘贴您的密钥,从您试图跟随该video时删除任何其他预先存在的东西。
  • validation您的~/.ssh文件夹是0700chmod 0700 ~/.ssh/
  • 你的authorized_keys文件应该是0600所以chmod 0600 ~/.ssh/authorized_keys

在这里输入图像说明

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

请下载cli工具plink.exe(您下载putty.exe的地方)并进行一些debugging

 plink -v -i yourprivatekeyfile user@server 

看看它告诉你什么,除了服务器说什么。

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

如果您已经生成了默认的putty公共文件,则可以将其转换为

ssh-keygen -i -f yourputtypubkeyfile> openssh.key

被添加到您的authorized_keys

按照@Zoredache的build议生成密钥对并将公钥存储在服务器上。 input用于保护私钥的密码,然后单击Save private key并将密钥保存在用户configuration文件中。 从密钥文件中除去您自己的所有权限。

为了能够使用您的私钥进行身份validation,您需要将其提供给PuTTY。 或者用Pageant 加载它,或者在Connection > SSH > Auth下的PuTTYconfiguration对话框中input它(单击Browse...并select刚刚保存的文件)。

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

terminal窗口打开后,右键单击标题栏并select“ Event Log 。 这个客户端日志补充了服务器端的auth.log ,并且可以帮助你了解到底是怎么回事。