我花了大约 3 个小时试图弄清楚如何使用 putty 从我的 Windows 机器连接到 Linux 机器,而无需发送密码。
这是连接到使用 OpenSSH 的 Ubuntu 服务器。私钥是 SSH-2 RSA,1024 位。我使用 SSH2 进行连接。
我已经遇到了更常见的问题:
- Putty 生成的公钥格式“错误”。我已更正此问题(如上所示)这篇博文)。但是,由于我还没有连接,我无法完全确认此文件的格式是否正确。密钥现在都在一行上,我尝试在文件末尾添加/删除换行符。我还尝试了几次公共文件修改过程,以确保我没有搞砸手动转换。即便如此,我还是无法验证此处的准确性。
- 权限也一度出现错误,具体来说,这意味着文件具有太多权限。我也必须解决这个问题,我知道它已经过去了,因为我不再看到相关错误/var/log/auth.log。
- 我都试过了授权密钥和授权密钥2以防服务器有旧版本的 OpenSSH,但这并没有改变什么。
- 我确实有用户访问权限。密钥文件失败后,我可以输入密码
我所掌握的唯一剩余的信息是它声称我输入的密码错误:
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
对服务器端的补充,可以帮助您了解正在发生的事情。