我一直在Windows XP上使用Putty,并使用.ppk文件连接到我的Linux服务器(多个服务器)。
在服务器上,我有以下文件夹和文件 ~/.ssh/authorized_keys
现在我想要使用Mac通过终端连接。我已经手动设置了到服务器的远程连接,想知道如何使用ppk文件或其中的公私钥来进行设置。
请注意:我已经在Windows上使用私钥/公钥登录,因此不需要使用keygen创建新密钥,我只是想知道如何设置现有密钥。(换句话说,我已经在服务器上有授权密钥列表和公私钥)。
你可以直接从Mac上的终端使用ssh
,但需要使用.PEM
密钥而非putty
的.PPK
密钥。你可以在Windows上使用PuttyGen将.PEM
转换为.PPK
,但我不确定反过来是否可行。
你也可以使用port
或brew
在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
将 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
有一种方法可以在不在您的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
brew install putty
。请注意,这里不需要使用sudo
;) - GabLeRouxbrew uninstall
命令卸载旧版本,然后使用brew install putty --HEAD
安装最新版本。这种方法对我有效。 - Dokie