我正在尝试设置从 Windows 7 计算机到 Red-Hat Linux 计算机的公共 SSH 密钥连接。最终目的是从命令终端使用pscp
(PuTTY 版本scp
),而无需重复输入密码。
根据 PuTTY 的文档和其他在线资料,我使用了PuTTYgen生成密钥对。然后我将生成的公钥复制到~/.ssh/authorized_keys
Linux 机器上的一个文件中(据我所知,它运行 OpenSSH 服务器)。
为了检查连接,我运行 PuTTY 并在其 GUI 中的适当位置设置用户名和私钥文件。
但是,当尝试使用 PuTTY 的 SSH 进行连接时,连接使用预设的用户名,但我收到“ Server refused our key
”的错误消息并提示输入密码。
然后我尝试从PuTTYgen的 GUI 添加到authorized_keys
文件,但它也不起作用。
我应该如何建立从 Win 7 到 Linux 的公钥连接?
我如何使用它
pscp
(而不是 PuTTY 的 ssh)?
更新:认为问题可能出在PuTTYgen密钥格式,我ssh-keygen
在 Linux 机器上使用它来创建 RSA 密钥对。它生成了一个id_rsa
私钥和id_rsa.pub
公钥。尝试使用> ssh-add id_rsa
没有成功,因为我得到的答复是“ Could not open a connection to your authentication agent.
”,所以我只使用了> cp id_rsa.pub authorized_keys
。
然后我将这些文件复制到 Windows 机器上,并使用PuTTYgen将私钥转换为PuTTY私钥格式(*.ppk
)。尝试使用新密钥进行连接,我收到“ ”的响应Server refused our key
。
答案1
您必须正确遵循这些。
在 SSH 服务器中配置公钥
通过 SFTP 将公钥复制到 SSH 服务器
put publicy_key
登录SSH服务器验证复制的公钥
ls -l public_key
由于公钥没有任何权限,因此将其更改为400(表示读取)
chmod 400 public_key
使用ssh-keygen工具创建openSSH格式的公钥
ssh-keygen -if public_key > public_key_openssh_format
将创建的openSSH公钥添加到authorized_keys文件中
cat public_key_openssh_format >> ~/.ssh/authorized_keys
检查.ssh文件夹和authorized_keys文件的权限是否有访问权限
ls -al ~/.ssh
使用 PuTTY 验证密钥对
现在,可以使用 PuTTY 验证基于密钥的身份验证。输入主机名和端口
选择私钥(.ppk)
确认安全警报
如果配置正确,连接将成功建立
如果还是卡住了,那么你必须重新创建用户,然后按照步骤再次配置公钥。
可以使用以下命令重新创建用户:
复制用户文件夹并在重新创建之前将其删除。
yast2 users add username=userName cn=" User for test" password="password" gid=100 grouplist=dialout,video type=local
答案2
我得出结论,PuTTY 或 PuTTYgen 有问题。这不是一些与文件格式有关的简单用户错误。如果我计算服务器上授权公钥的哈希值,它会与我生成密钥的客户端上 PuTTYgen 显示的哈希值匹配。然而,服务器拒绝该密钥,就像它不匹配一样。
我已经在 OS X、Linux 和 Cisco & Juniper 路由器上尝试过。PuTTYgen 的 ssh-rsa 公钥不起作用。
如果您使用 OpenSSH 生成密钥,然后将其导入 PuTTYgen 以保存为 PuTTY 的 .ppk,则可以正常工作。
答案3
也许您需要将“连接/SSH/Auth/允许代理转发”选项设置为“true”。ssh-add
完成此操作后,该命令对我有用。