如何在 ssh 中添加(给定的)私钥,其公钥已在服务器上设置

如何在 ssh 中添加(给定的)私钥,其公钥已在服务器上设置

我知道如何使用 github 设置新的 ssh 密钥对。

如果有人给了我一个私钥并告诉我通过 Mac 上的 ssh 连接到服务器,我该如何设置?

注意:我无法更改服务器设置。

答案1

我认为标准OpenSSH在您的 Mac 上可用;如果您使用的是漂亮的 GUI 程序,那么这可能不起作用。我还假设您已获得 OpenSSH 标准密钥。(商业ssh.com密钥的格式可能不同;至少十年前是这样,当时我上次使用仍使用商业 SSH 的提供商。)

也许您已经有一个私钥;请检查ls -l ~/.ssh/id_*您是否已经安装了私钥。如果已经安装了(并且您想保留该密钥),那么您将需要做更多工作。

如果你还没有私钥,请查看文件的第一行。它看起来像这样:

-----BEGIN RSA PRIVATE KEY-----

如果显示RSA,就像我的一样,则将文件存储到~/.ssh/id_rsa。如果显示DSA,则将其存储到~/.ssh/id_dsa

如果该~/.ssh目录尚不存在,请创建它:

mkdir ~/.ssh
chmod 700 ~/.ssh

重要的是chmod 700——ssh对权限很挑剔:如果甚至组写入可用,您可能会遇到问题。

我不知道存储文件的最简单方法。如果您有独立文件(电子邮件附件、网站下载等),您可以简单地将文件移动到位:

mv Path/to/the/file ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa

chmod 600重要——ssh对权限很挑剔:如果甚至组读取可用,您可能会遇到问题。我不是在开玩笑——我一生中花了太多时间调试连接问题,最终归结为 的权限检查过于严格ssh。您可以做到这一点400并防止自己错误地覆盖它,但我的这样做600没有任何不良后果。

如果您已将文件复制并粘贴到电子邮件文本或网页文本中,则需要使用某种文本编辑器通过复制并粘贴文本本身来保存文件。(不要使用 Word。BBEdit 或 TextMate 或 ...... 无论 Apple 称其为纯文本编辑器 ...... 都可以。)

现在测试一下:

ssh hostname

例如:

$ ssh haig
Enter passphrase for key '/home/sarnold/.ssh/id_rsa': 

如果您还需要提供用户名:

ssh username@hostname

重要的是用于密钥-- 如果它只是要求输入密码,那么它可能是远程端点的密码,这样就行不通了。如果它要求输入密钥的密码,那么你正在运行。


如果您已经拥有想要继续使用的私钥,请将该文件存储到其他地方;例如~/.ssh/id_rsa_for_mithra,然后在配置文件Host中添加新条目~/.ssh/config

host mithra
    IdentityFile ~/.ssh/id_rsa_for_mithra

此处,我假设主机名为mithra。使用您指定的任何名称或 IP 地址。


~/.ssh/config如果您想避免一直在命令行上提供用户名,该文件还可以用于指定每个主机的用户名。

最后要说的是:大多数ssh用户使用来ssh-agent存储私钥的解密版本,而不是一直重新输入密码来解锁。我理解ssh 代理已集成到 OS X 中如今——值得研究如何使用它。也许它就像ssh-add先运行一样简单。(我喜欢ssh-add -t 3600,所以密钥在解密版本被丢弃之前可以工作一个小时。如果我离开工作站而不需要运行,这有助于保护密钥材料ssh-add -D。)

答案2

我在寻找管理 Amazon EC2 密钥的方法时发现了您的问题。和您一样,我已经有一个 github 密钥。


我所做的是复制现有id_rsa文件。

cp ~/.ssh/id_rsa ~/.ssh/id_rsa_amazonhost.pem

id_rsa_amazonhost.pem然后通过剪切/粘贴用亚马逊提供的私钥替换这个新文件()的内容。

然后我向 ~/.ssh/config 添加了一条条目(根据需要进行替换my-hostnamemy-username

Host my-hostname.example.com
    IdentityFile  ~/.ssh/id_rsa_amazonhost.pem
    User my-username    

這讓我能够ssh my-hostname如愿。


对于一次性连接,你可以跳过 ~/.ssh/config 文件,只需运行

ssh -i id_rsa_amazonhost.pem 我的用户名@我的主机名

相关内容