OS X - заставить обычные команды SSH использовать конфигурацию SSH

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,

sampablokuper
источник

Ответы:

4

Когда вы используете ssh git@github.com, он пропускает ваш конфигурационный файл, так как он не имеет соответствующего хозяин настроен, и вместо этого полагается на простой 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 Параметр полезен при определении того, загружается ли конфигурация и какие ключи, если они есть, загружаются.

Brian
источник
2
Вместо дублирования раздела, вы можете добавить более одного имени к одному оператору Host: Host github github.com User git
aviv
Спасибо. Я закончил тем, что использовал предложенную Авивом вариацию решения Брайана.
sampablokuper