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 Параметр полезен при определении того, загружается ли конфигурация и какие ключи, если они есть, загружаются.