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 git@github.com
Permission denied (publickey).

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

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

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

1 ответ

Решение

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

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

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

Другие вопросы по тегам