在Mac终端中使用PPK文件连接SSH远程连接

171

我一直在Windows XP上使用Putty,并使用.ppk文件连接到我的Linux服务器(多个服务器)。

在服务器上,我有以下文件夹和文件 ~/.ssh/authorized_keys

现在我想要使用Mac通过终端连接。我已经手动设置了到服务器的远程连接,想知道如何使用ppk文件或其中的公私钥来进行设置。

请注意:我已经在Windows上使用私钥/公钥登录,因此不需要使用keygen创建新密钥,我只是想知道如何设置现有密钥。(换句话说,我已经在服务器上有授权密钥列表和公私钥)。

3个回答

443

你可以直接从Mac上的终端使用ssh,但需要使用.PEM密钥而非putty.PPK密钥。你可以在Windows上使用PuttyGen将.PEM转换为.PPK,但我不确定反过来是否可行。

你也可以使用portbrew在Mac上使用putty进行密钥转换:

sudo port install putty
或者
brew install putty

这也将安装puttygen。为了让puttygen输出一个.PEM文件:

puttygen privatekey.ppk -O private-openssh -o privatekey.pem

获得密钥后,打开终端窗口并执行以下操作:

ssh -i privatekey.pem user@my.server.com

私钥必须具有严格的安全设置,否则SSH会发出警告。确保只有用户可以读取密钥。

chmod go-rw privatekey.pem

1
sudo port ?? 这肯定不存在... 至少在 Mavericks 中是这样的。 - Pedro Luz
23
您也可以使用brew安装putty:brew install putty。请注意,这里不需要使用sudo ;) - GabLeRoux
2
有用的答案!!谢谢! 对于那些没有安装端口的人,可以按照以下链接安装git: http://codingsteps.com/installing-and-using-putty-on-mac-os-x/ - Viraj
3
当我尝试运行puttygen命令时,出现了什么错误? 输入密码加载密钥: 断言失败: (random_active),函数 random_byte,文件 ./../sshrand.c,行 313。 Abort trap: 6. 该错误意味着无法使用随机数生成器来加载密钥。可能是由于加密算法或随机数生成库的问题导致的。 - fastasleep
6
请先执行 brew uninstall 命令卸载旧版本,然后使用 brew install putty --HEAD 安装最新版本。这种方法对我有效。 - Dokie
显示剩余9条评论

40

将 PPK 转换为 OpenSSH

在 OS X 中,首先安装 Homebrew,然后运行:

brew install putty

将你的密钥放在某个目录下,例如你的主目录。现在将 PPK 密钥转换为 SSH 密钥对:

生成私钥:

cd ~

puttygen id_dsa.ppk -O private-openssh -o id_dsa

生成公钥:

puttygen id_dsa.ppk -O public-openssh -o id_dsa.pub

将这些密钥移动到 ~/.ssh,并确保对于你的私钥设置了私有权限:

mkdir -p ~/.ssh
mv -i ~/id_dsa* ~/.ssh
chmod 600 ~/.ssh/id_dsa
chmod 666 ~/.ssh/id_dsa.pub

连接到SSH服务器

ssh -i ~/.ssh/id_dsa username@servername

端口转发来连接远程MySQL服务器

ssh -i ~/.ssh/id_dsa -L 9001:127.0.0.1:3306 username@serverName

22

有一种方法可以在不在您的Mac上安装putty的情况下完成此操作。 您可以使用Windows上的PuTTYgen轻松将现有的PPK文件转换为PEM文件。

启动PuTTYgen,然后使用“Load”按钮加载现有的私钥文件。从“Conversions”菜单中选择“导出OpenSSH密钥”,并将私钥文件保存为.pem文件扩展名。

将PEM文件复制到您的Mac并将其设置为仅由您的用户可读:

chmod 400 <private-key-filename>.pem

然后您应该能够使用ssh连接到远程服务器

ssh -i <private-key-filename>.pem username@hostname

20
可以在不在Mac上安装Putty的情况下完成此操作。您可以使用Windows上的PuTTYgen轻松将现有的PPK文件转换为PEM文件。所以在Mac上完成此操作的最佳方法是在Windows上完成吗? - Roee Gavirel
12
@sigi,我的回答原意是为了帮助。据我理解,问题的主要目标是使用来自Windows计算机的现有.ppk文件从Mac连接到Linux服务器。鉴于提问者可以访问Windows计算机,因此在将文件复制到Mac之前将.ppk文件转换为.pem文件与首先将其复制到Mac并在那里进行转换一样有效。我建议采用这种方法,因为有些人可能不想在Mac上安装他们不需要的其他软件。 - dasfrosty
4
这个答案非常有帮助,因为它正好解决了一个问题:从Windows转到Mac的人如果已经有一个ppk文件,更可能想要从Windows导出,而不是为了没有特定目的安装PuTTY在Mac上。这正是我选择做的事情。 - trevorsky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接