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