ssh 密钥密码在 Windows 中有效,但在 linux 中无效

Posted

技术标签:

【中文标题】ssh 密钥密码在 Windows 中有效,但在 linux 中无效【英文标题】:ssh key passphrase works in windows but not in linux 【发布时间】:2012-03-26 17:42:42 【问题描述】:

我正在用 git 做一个项目。 在 Windows 中,我使用 git 扩展来管理这个项目,并访问他们给我一个 .ppk 密钥的公共存储库。我使用他们给我的密码将它加载到 git 扩展中,并且它可以工作。

现在我设置了一个 linux (ubuntu-32bit) 虚拟机,我也想从这台机器访问存储库。

从我在此站点中看到的另一个线程中,我使用以下命令来克隆存储库:

ssh-agent bash -c 'ssh-add /home/myHome/mykey.ppk; git clone git@serveraddress:project.git'

然后,shell 告诉我插入密码

Enter passphrase for /home/myHome/mykey.ppk:

但是当我插入它时,它告诉我这是一个错误的密码。我已经检查了很多次,并且我确定我使用的密码与在 Windows 中使用的密码相同。那么如何在Linux中正确使用key呢?

提前感谢您的回复。

【问题讨论】:

您用来克隆存储库的命令看起来有些奇怪。这是您问题中的标记错误吗?如果没有,您可能应该先熟悉 Linux 命令行。 我已经在另一个线程中检查了这里的命令,它使用私钥而不将其存储到 ssh 配置中。 【参考方案1】:

Linux SSH 客户端(通常是 OpenSSH)无法读取 Windows SSH 客户端 Putty 使用的 PPK 格式。您需要先将提供给您的“PPK”密钥转换为 OpenSSH 密钥。在 Linux 上安装“putty”并使用puttygen 命令行工具:

$ sudo aptitude install putty
$ mkdir -p ~/.ssh
$ puttygen ~/mykey.ppk -o ~/.ssh/id_rsa -O private-openssh

输入您的密码,您将在标准位置~/.ssh/id_rsa 中获得一个与 OpenSSH 兼容的密钥。之后,您可以使用ssh-add(不带任何参数!)将此密钥添加到 SSH 代理。

您也可以在 Windows 上使用 putty 提供的 PUTTYgen 程序。

【讨论】:

谢谢。好向导。我使用了 Windows PUTTYGen。我加载了密钥文件并转到“转换 > 导出 OpenSSH 密钥”,然后将其保存为 .pem 我收到puttygen: ./../sshrand.c:313: random_byte: Assertion `random_active' failed -- 似乎是一个已知问题github.com/Homebrew/homebrew/issues/25734 bigbadonk420:使用 sudo 运行 puttygen。

以上是关于ssh 密钥密码在 Windows 中有效,但在 linux 中无效的主要内容,如果未能解决你的问题,请参考以下文章

如何通过环境变量传递 ssh 密钥密码

windows下如何实现ssh免密码登录

使用 ssh 密钥登录到 windows openssh 服务器

如果文件名是默认值,SSH 密钥有效,但重命名时无效

使用SSH密钥连接Github

Windows SSH 要求输入密码