我已经使用PuTTYgen生成了密钥对,并使用Pageant进行了登录,因此在系统启动时,只需输入一次密码。
如何在Linux中实现这一目标?我听说过,keychain
但是我听说它使用不同的密钥对格式-我不想更改Windows密钥,如果我可以在Windows和Linux中以相同的方式无缝连接,那就太好了。
我已经使用PuTTYgen生成了密钥对,并使用Pageant进行了登录,因此在系统启动时,只需输入一次密码。
如何在Linux中实现这一目标?我听说过,keychain
但是我听说它使用不同的密钥对格式-我不想更改Windows密钥,如果我可以在Windows和Linux中以相同的方式无缝连接,那就太好了。
Answers:
puttygen
支持将您的私钥导出为OpenSSH兼容格式。然后,您可以使用OpenSSH工具重新创建公用密钥。
Conversions->Export OpenSSH
并导出您的私钥~/.ssh/id_dsa
(或id_rsa
)。使用以下命令创建RFC 4716版本的公共密钥 ssh-keygen
ssh-keygen -e -f ~/.ssh/id_dsa > ~/.ssh/id_dsa_com.pub
将RFC 4716版本的公钥转换为OpenSSH格式:
ssh-keygen -i -f ~/.ssh/id_dsa_com.pub > ~/.ssh/id_dsa.pub
It is required that your private key files are NOT accessible by others
的错误就像我跑cd ~/.ssh
和chmod 700 id_rsa
如果您拥有的只是来自用户的PuTTY格式的公钥,则可以将其转换为标准的openssh格式,如下所示:
ssh-keygen -i -f keyfile.pub > newkeyfile.pub
我一直忘了这个,所以我要在这里写下。非极客,继续前进。
在Windows上最常用的方式是使用Putty / Puttygen。Puttygen提供了一个简洁的实用程序,可将Linux私钥转换为Putty格式。但是,没有解决的问题是,当您使用puttygen保存公钥时,它将在Linux服务器上不起作用。Windows将一些数据放在不同的区域并添加换行符。
解决方案:在使用puttygen创建密钥对时进入公共密钥屏幕时,请复制公共密钥并将其粘贴到扩展名为.pub的文本文件中。这样您将节省sysadmin沮丧的工作时间。
但是,系统管理员总是会得到一个奇怪的密钥文件,该密钥文件不会在身份验证日志中抛出任何错误消息,只是找不到密钥,尝试输入密码。即使其他人的键工作正常,您也已将该键发送给用户15次。
ssh-keygen -i -f keyfile.pub > newkeyfile.pub
应该将现有的puttygen公钥转换为OpenSSH格式。
Comment:
行复制用户的注释,并将其粘贴到与新键相同的行上,并用空格分隔。我不知道为什么默认情况下ssh-keygen不会这样做。
decode blob failed: invalid format
另外,如果您想从PuTTY格式的密钥文件中获取私钥和公钥,则可以puttygen
在* nix系统上使用。对于大多数基于apt的系统,它puttygen
是该putty-tools
软件包的一部分。
从PuTTY格式的密钥文件输出私钥:
$ puttygen keyfile.pem -O private-openssh -o avdev.pvk
对于公共密钥:
$ puttygen keyfile.pem -L
brew install putty
puttygen inppk -O private-openssh -o outpem
和puttygen inppk -L
(或ssh-keygen -y -f outpem
)
sudo apt-get install putty
这将自动安装puttygen工具。
现在要转换要与SSH命令一起使用的PPK文件,请在终端中执行以下命令
puttygen mykey.ppk -O private-openssh -o my-openssh-key
然后,您可以通过SSH通过以下方式进行连接:
ssh -v user@example.com -i my-openssh-key
http://www.graphicmist.in/use-your-putty-ppk-file-to-ssh-remote-server-in-ubuntu/#comment-28603
我最近从Linux的Putty迁移到Linux的Remmina时遇到了这个问题。因此,我使用.putty
目录已经有8年了,因此我的目录中有许多用于Putty的PPK文件。为此,我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;
很快并且很关键,完成了腻子所有文件的工作。如果找到带有密码的密钥,它将停止并先询问该密钥的密码,然后继续。
我认为(几年前)TCSgrad试图问的是如何使Linux像他的Windows计算机一样工作。也就是说,有一个代理(寻呼机)保存着私钥的解密副本,因此密码短语只需要放入一次即可。然后,ssh客户端putty可以登录到其公钥被列为“授权”的计算机,而无需输入密码提示。
类似的是Linux 作为ssh客户端,具有代理,该代理持有解密的私钥,因此,当TCSgrad键入“ ssh host”时,ssh命令将获取其私钥,而不会提示输入密码。主机当然必须在〜/ .ssh / authorized_keys中持有公钥。
使用ssh-agent(寻呼机模拟物)和ssh-add(向寻呼机添加私钥的模拟物)可以完成这种情况的Linux模拟。
对我有用的方法是使用:$ ssh-agent $ SHELL $ SHELL是使代理运行并保持运行所需的魔术。我发现网上的某个地方结束了几个小时,我的头靠在墙上。
现在,我们有一个运行选美的模拟,一个没有加载密钥的代理。
本身键入$ ssh-add将(默认情况下)添加〜/ .ssh中默认标识文件中列出的私钥。
可以在此处找到更多详细信息的网络文章
PPK→具有PuttyGen和Docker的OpenSSH RSA。
私钥:
docker run --rm -v $(pwd):/app zinuzoid/puttygen private.ppk -O private-openssh -o my-openssh-key
公钥:
docker run --rm -v $(pwd):/app zinuzoid/puttygen private.ppk -L -o my-openssh-key.pub