1

Вот (несколько отредактированный) список моего ~/.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 git@github.com
Permission denied (publickey).

О-о, вторая команда не сработала.

У меня вопрос: что я могу сделать, чтобы вторая команда, приведенная выше, давала тот же результат, что и первая команда?

NB. Добавление опции -v предполагает, что вторая команда завершается ошибкой, потому что вместо того, чтобы предлагать серверу Github открытый ключ, указанный для git@github.com в ~/.ssh/config (то есть ~/.ssh/github_rsa), она предлагает ~/.ssh/id_rsa .

1 ответ1

4

Когда вы используете ssh git@github.com , он пропускает ваш конфигурационный файл, поскольку у него нет соответствующего настроенного хоста , и вместо этого он использует простой ssh - который, вероятно, загружает ~/.ssh/id_rsa вместо вашего ключа Github. файл ~/.ssh/github_rsa . (Обратите внимание, что если у вас был запущен существующий ssh-agent , ваша команда может использовать ранее загруженный ключ. Это может произойти, если вы открыли клиент Github для настольных компьютеров.)

Чтобы ваша вторая команда работала, продублируйте существующую запись Host для github , изменив хост на github.com . Теперь, когда вы ссылаетесь на этот хост, ssh имеет конфигурацию для чтения. (В качестве альтернативы вы можете обновить текущую запись хоста шаблоном подстановки, например, github* .)

Вот несколько ссылок на ssh_config: http://linux.die.net/man/5/ssh_config. Опция -v полезна при определении того, загружается ли конфигурация и какие ключи, если они есть, загружаются.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .