如何将使用PuTTYgen(Windows)生成的SSH密钥对转换为ssh-agent和Keychain(Linux)使用的密钥对

眉间皱痕 提交于 2020-02-25 20:06:30

我使用PuTTYgen生成密钥对并使用Pageant登录,因此我必须在系统启动时输入一次密码短语。

我如何在Linux中实现这一目标? 我听说过keychain但我听说它使用了不同的密钥对格式 - 我不想更改我的Windows密钥,如果我可以在Windows和Linux中以相同的方式无缝连接,那就太好了。


#1楼

如果您拥有的是PuTTY样式格式的用户公钥,您可以将其转换为标准的openssh格式,如下所示:

ssh-keygen -i -f keyfile.pub > newkeyfile.pub

参考

文章副本

我一直忘了这个,所以我要在这里写。 非极客,只是继续走路。

在Windows上制作密钥的最常用方法是使用Putty / Puttygen。 Puttygen提供了一个简洁的实用程序来将linux私钥转换为Putty格式。 但是,未解决的问题是,当您使用puttygen保存公钥时,它将无法在Linux服务器上运行。 Windows将一些数据放在不同的区域并添加换行符。

解决方案:当您在puttygen中创建密钥对时进入公钥屏幕,复制公钥并将其粘贴到扩展名为.pub的文本文件中。 阅读这样的帖子,你会节省系统管理员数小时的挫败感。

但是,系统管理员,你总是得到一个不会在auth日志中抛出错误消息的密钥文件,除了找不到密钥,尝试密码; 即使其他人的钥匙工作正常,你已经将这个钥匙发回给用户15次。

ssh-keygen -i -f keyfile.pub > newkeyfile.pub

应该将现有的puttygen公钥转换为OpenSSH格式。


#2楼

我想TCSgrad试图问的问题(几年前)是如何使Linux的行为与他的Windows机器一样。 也就是说,存在代理(选美),其保存私钥的解密副本,使得密码只需要被放入一次。 然后,ssh客户端putty可以登录到其公钥被列为“已授权”而没有密码提示的计算机。

这样做的模拟是, 作为ssh客户端的 Linux有一个持有解密私钥的代理,这样当TCSgrad键入“ssh host”时,ssh命令将获取他的私钥,并且不会被提示输入密码。 当然,主机必须在〜/ .ssh / authorized_keys中保存公钥。

这个场景的Linux模拟是使用ssh-agent(选美模拟)和ssh-add(模拟为加入寻呼的私钥)完成的。

对我有用的方法是使用:$ ssh-agent $ SHELL $ SHELL是我需要让代理运行并保持运行的神奇技巧。 我发现在网上的某个地方,它结束了几个小时的撞击我的头撞墙。

现在我们有了pageant的模拟运行,没有加载密钥的代理。

单独输入$ ssh-add将添加(默认情况下)〜/ .ssh中默认标识文件中列出的私钥。

可以在此处找到包含更多详细信息的Web文章


#3楼

或者,如果您想从PuTTY格式化密钥文件中获取私钥和​​公钥,则可以在* nix系统上使用puttygen 。 对于大多数基于apt的系统, puttygenputty-tools软件包的一部分。

从PuTTY格式化密钥文件输出私钥:

$ puttygen keyfile.pem -O private-openssh -o avdev.pvk

对于公钥:

$ puttygen keyfile.pem -L


#4楼

我最近遇到了这个问题,因为我正在从Putty for Linux迁移到Remmina for Linux。 所以我在.putty目录中有很多.putty文件,因为我已经使用了8年了。 为此,我使用一个简单for命令来执行bash shell来执行所有文件:

cd ~/.putty
for X in *.ppk; do puttygen $X -L > ~/.ssh/$(echo $X | sed 's,./,,' | sed 's/.ppk//g').pub; puttygen $X -O private-openssh -o ~/.ssh/$(echo $X | sed 's,./,,' | sed 's/.ppk//g').pvk; done;

很快就到了这一点,为putty所有的文件完成了工作。 如果找到带密码的密钥,它将停止并首先询问该密钥的密码,然后继续。


#5楼

在linux下创建密钥并使用PuTTYgen将密钥转换为PuTTY格式可能更容易。

腻子常见问题:A.2.2

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!