我知道如何设置一个新的SSH密钥对与Github。
如果有人给我一个私钥,并告诉我通过Mac上的SSH连接到服务器,我该如何设置?
注:我无法更改服务器设置。
我假设你的Mac上有标准的OpenSSH ; 如果你使用的是一个漂亮的GUI程序,那么这可能不起作用。 我也假设你已经获得了一个OpenSSH标准密钥。 (商用ssh.com密钥的格式可能不同;至less在十年前,我上次使用的是仍使用商用SSH的提供商。)
也许你已经有了私钥; 检查ls -l ~/.ssh/id_*以查看是否已经安装了私钥。 如果你这样做(而且你想保持这个关键),那么你将有更多的工作要做。
如果您还没有私钥,请查看文件的第一行。 它看起来像这样:
-----BEGIN RSA PRIVATE KEY-----
如果它说RSA ,就像我的,然后将文件存储到~/.ssh/id_rsa 。 如果它说DSA ,将其存储到~/.ssh/id_dsa 。
如果~/.ssh目录还不存在,请创build它:
mkdir ~/.ssh chmod 700 ~/.ssh
chmod 700很重要 – ssh对权限是挑剔的:如果偶数组写入可用,则可能有问题。
我不知道最简单的方法来存储文件。 如果您有一个独立的文件(电子邮件附件,网站下载等),您可以简单地将文件移动到位:
mv Path/to/the/file ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa
chmod 600很重要 – ssh对权限是挑剔的:如果偶数组读取可用,则可能有问题。 我不是在开玩笑 – 我花了太多的时间debugging连接问题,这些问题是由ssh过度严格的权限检查造成的。 你可以做到400 ,防止错误地覆盖它,但我的600是没有不良后果的。
如果您已将文件复制粘贴到电子邮件文本或网页文本中,则需要使用某种文本编辑器通过文本本身的复制和粘贴来保存文件。 (不要使用Word,BBEdit或TextMate或者任何苹果公司称之为纯文本编辑器的工具。)
现在testing一下:
ssh hostname
例如:
$ ssh haig Enter passphrase for key '/home/sarnold/.ssh/id_rsa':
如果您还需要提供用户名:
ssh username@hostname
重要的一点是for键 – 如果只是要求input密码,那么可能是远程端点的密码,这是行不通的。 如果它要求密钥的密码,那么你正在运行。
如果你已经有了一个你想要继续使用的私钥,把这个文件保存到其他的东西里; 例如~/.ssh/id_rsa_for_mithra ,然后将一个新的Host项添加到~/.ssh/configconfiguration文件中:
host mithra IdentityFile ~/.ssh/id_rsa_for_mithra
在这里,我假定主机名是mithra 。 使用您提供的任何名称或IP地址。
~/.ssh/config文件也可以用来指定每个主机的用户名,如果你想避免在命令行上一直给它。
最后一点:大多数ssh用户使用ssh-agent来存储他们的私钥的解密版本,而不是重新input密码来解锁它。 我知道一个ssh代理已经集成到了OS X中 – 这是值得研究如何使用它的。 也许就像先运行ssh-add一样简单。 (我喜欢ssh-add -t 3600 ,所以这个密钥在解密后的版本被丢弃了一个小时之前就工作了,如果我离开工作站而不需要我运行ssh-add -D ,这有助于保护密钥材料我离开。)
在寻找pipe理Amazon EC2密钥的方式时,我发现了您的问题。 像你一样,我已经有了github的钥匙。
我所做的是重复现有的id_rsa文件。
cp ~/.ssh/id_rsa ~/.ssh/id_rsa_amazonhost.pem
然后通过使用Amazon提供的私钥进行剪切/粘贴来replace此新文件( id_rsa_amazonhost.pem )的内容。
然后,我添加了一个条目〜/ .ssh / config(根据需要replacemy-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 my-username @ my-hostname