Я следую двойной процедуре идентификации для bitbucket :
У меня есть 2 аккаунта bitbucket ccmcbeck
и chrisbeck
. Первое личное, второе - работа.
На моем локальном Mac у меня есть это в моем ~/.ssh/config
Host *.work.com
User chris
ForwardAgent yes
IdentityFile ~/.ssh/work_dsa
Host bitbucket-personal
HostName bitbucket.org
User ccmcbeck
ForwardAgent no
IdentityFile ~/.ssh/bitbucket_ccmcbeck_rsa
Host bitbucket-work
HostName bitbucket.org
User chrisbeck
ForwardAgent no
IdentityFile ~/.ssh/bitbucket_chrisbeck_rsa
На моем локальном Mac у меня ssh -T
все хорошо, я получаю:
$ ssh -T git@bitbucket-personal
logged in as ccmcbeck.
$ ssh -T git@bitbucket-work
logged in as chrisbeck.
На моем локальном Mac версия ssh OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
Когда я захожу ssh foo.work.com
в свою коробку Linux, я получаю
$ ssh-add -l
1024 ... /Users/chris/.ssh/work_dsa (DSA)
2048 ... /Users/chris/.ssh/bitbucket_ccmcbeck_rsa (RSA)
2048 ... /Users/chris/.ssh/bitbucket_chrisbeck_rsa (RSA)
У foo.work.com
меня также есть это в моем~/.ssh/config
Host bitbucket-personal
HostName bitbucket.org
User ccmcbeck
ForwardAgent no
IdentityFile ~/.ssh/bitbucket_ccmcbeck_rsa
Host bitbucket-work
HostName bitbucket.org
User chrisbeck
ForwardAgent no
IdentityFile ~/.ssh/bitbucket_chrisbeck_rsa
Тем не менее, foo.work.com
когда я ssh -T
, он ссылается на неправильного пользователя дляgit@bitbucket-work
$ ssh -T git@bitbucket-personal
logged in as ccmcbeck.
$ ssh -T git@bitbucket-work
logged in as ccmcbeck.
На foo.work.com
, версия sshOpenSSH_4.3p2, OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
Почему моя конфигурация вызывает foo.work.com
ссылку на неправильного пользователя?
ssh-add -d
мояbitbucket-personal
личность, тоfoo.work.com
использует правильныйUser
OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
foo.work.com
использует первый, о котором сообщилиssh-add -l
.Ответы:
Мне представляется наиболее вероятным объяснение того, что ssh-agent использует любой загруженный ключ в любое время. Вы можете отбросить это поведение, используя
IdentitiesOnly
директиву в вашем конфигурационном файле следующим образом:Из
ssh man page
:РЕДАКТИРОВАТЬ:
В вашем посте есть следующие строки:
Они ясно показывают, что этот ключ не был принят. Вот почему вы всегда входите в систему как ccmcbeck: этот ключ работает, и без
IdentitiesOnly yes
него клиент пробовал другие ключи, пока не нашел рабочий. Введя это ограничение, мы, по крайней мере, прояснили природу проблемы.Поскольку с вашего Mac у вас, похоже, нет такой проблемы, он должен находиться в клиенте Linux и, в частности, в секретном ключе, который вы пытаетесь использовать. Лучше всего создать новый, локальный для Linux, и поместить его
.pub
аналог вauthorized_keys
. Надеюсь это поможет.EDIT2:
... или вы можете следовать этому ответу SuperUser, чтобы выбрать закрытый ключ, который вы хотите использовать, указав его открытый аналог от перенаправленного агента. Ответ по-прежнему требует использования
IdentitiesOnly yes
опции.источник
ssh -T
либо псевдоним.ccmcbeck
иchrisbeck
работают, если они являются первымиssh-add -l
безIdentitiesOnly yes
. СIdentitiesOnly yes
ONwork.foo.com
, SSH появляется только искать местные ключи, а не ключи , передаваемые через SSH агент на моем Mac.work.foo.com
и сослаться на него в~/.ssh/config
. Если вы обновите свой ответ, я приму