Для небольшого объяснения, почему конфиг, размещенный в вопросе, не работает, но ваш ответ делает:
Когда вы вызываете ssh bitbucket
, ssh ищет в вашем конфигурационном файле хост с именем bitbucket
, который определен с ключевым словом Host
. Затем, используя ключевое слово HostName
, вы можете определить реальное имя хоста для использования. В вашем случае вы определяете bitbucket
как псевдоним для IP 207.233.240.182, который, как я полагаю, используется для bitbucket.org
Он не работал для ваших команд mercurial, потому что удаленный сервер, вероятно, определен как bitbucket.org
, а не псевдоним bitbucket
. После того, как вы изменили файл конфигурации на тот, который был предложен в вашем ответе, ssh может эффективно сопоставить удаленный сервер с именем хоста, и все в порядке!
К вашему сведению, вы также можете использовать подстановочный знак для сопоставления с образцом, например:
Host bitbucket.*
HostName 207.223.240.182
User hg
IdentityFile ~/.ssh/bitbucket
Также будет работать, потому что при просмотре конфигурации SSH заменит * на что-нибудь еще.