OS X - 使普通 SSH 命令使用 SSH 配置

OS X - 使普通 SSH 命令使用 SSH 配置

~/.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选项有助于确定是否加载配置以及加载哪些键(如果有)。

相关内容