~/.ssh/config
以下是我在 OS X 10.6.8 Snow Leopard 下的列表(经过了一些编辑) :
Host *
IdentitiesOnly yes
Host foo1
IdentitiesOnly yes
User foo1
HostName example.com
IdentityFile ~/.ssh/foo1_rsa
Host foo2
IdentitiesOnly yes
User foo2
HostName example.com
IdentityFile ~/.ssh/foo2_rsa
# (and so on)
Host bar1
IdentitiesOnly yes
User bar1
HostName example.org
IdentityFile ~/.ssh/bar1_rsa
Host bar2
IdentitiesOnly yes
User bar2
HostName example.org
IdentityFile ~/.ssh/bar2_rsa
# (and so on some more)
Host github
IdentitiesOnly yes
User git
HostName github.com
IdentityFile ~/.ssh/github_rsa
Host heroku
IdentitiesOnly yes
User git
HostName heroku.com
IdentityFile ~/.ssh/heroku_rsa
让我们运行一个命令来看看它是否有效:
$ ssh github
PTY allocation request failed on channel 0
Hi sampablokuper! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.
好的,第一个命令成功了。让我们尝试第二个命令:
$ ssh [email protected]
Permission denied (publickey).
哎呀,第二个命令不起作用。
我的问题是:我该怎么做才能使上述第二条命令产生与第一条命令相同的结果?
注意:添加该-v
选项意味着第二个命令失败,因为 Github 服务器没有提供指定的公钥[电子邮件保护]在~/.ssh/config
(即~/.ssh/github_rsa
)中,它提供它~/.ssh/id_rsa
。
答案1
当你使用时,它会跳过你的配置文件,因为它没有相应的ssh [email protected]
主持人配置,而是依赖于普通的 ssh - 这可能会加载~/.ssh/id_rsa
而不是您的 Github 密钥文件,~/.ssh/github_rsa
。(请注意,如果您有一个现有的ssh 代理运行,那么您的命令可能利用了之前加载的密钥。如果您打开了 Github 桌面客户端,则可能会发生这种情况。)
为了使第二个命令起作用,复制现有的主持人条目github
,将主机更改为github.com
。现在,当您引用该主机时,ssh 有一个配置可以读取。(您也可以更新当前的主持人带有通配符模式的条目,例如github*
.)
以下是一些有关 ssh_config 的参考:http://linux.die.net/man/5/ssh_config。该-v
选项有助于确定是否加载配置以及加载哪些键(如果有)。