我知道如何使用 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-hostname
)my-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 我的用户名@我的主机名