3

Я следую двойной процедуре идентификации для bitbucket:

У меня есть 2 аккаунта 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 ssh-версия - OpenSSH_4.3p2, OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008

Почему из-за моей конфигурации foo.work.com ссылается на неправильного пользователя?

1 ответ1

3

Мне представляется наиболее вероятным объяснение того, что ssh-agent использует любой загруженный ключ в любое время. Вы можете отбросить это поведение, используя директиву IdentitiesOnly в вашем конфигурационном файле следующим образом:

 Host bitbucket-personal
 HostName bitbucket.org
 User ccmcbeck
 ForwardAgent no
 IdentityFile ~/.ssh/bitbucket_ccmcbeck_rsa
 IdentitiesOnly yes

 Host bitbucket-work
 HostName bitbucket.org
 User chrisbeck
 ForwardAgent no
 IdentityFile ~/.ssh/bitbucket_chrisbeck_rsa
 IdentitiesOnly yes

Со страницы руководства ssh man page:

Указывает, что ssh(1) должен использовать только файлы идентификации аутентификации, настроенные в файлах ssh_config, даже если ssh-agent(1) предлагает больше идентификаторов. Аргумент к этому ключевому слову должен быть «да» или «нет». Эта опция предназначена для ситуаций, когда ssh-agent предлагает много разных идентификаторов. По умолчанию используется значение «нет».

РЕДАКТИРОВАТЬ:

В вашем посте есть следующие строки:

 debug1: SSH2_MSG_SERVICE_ACCEPT received
 debug2: key: /home/chrisb/.ssh/bitbucket_chrisbeck_rsa ((nil))
 debug1: Authentications that can continue: publickey

Они ясно показывают, что этот ключ не был принят. Вот почему вы всегда входите в систему как ccmcbeck: этот ключ работает, и без IdentitiesOnly yes Только да , клиент пробовал другие ключи, пока не нашел работающий. Введя это ограничение, мы хотя бы прояснили природу проблемы.

Поскольку с вашего Mac у вас, похоже, нет такой проблемы, он должен находиться в клиенте Linux и, в частности, в секретном ключе, который вы пытаетесь использовать. Лучше всего создать новый, локальный для Linux, и поместить его аналог .pub среди authorized_keys ключей . Надеюсь это поможет.

EDIT2:

... или вы можете следовать этому ответу SuperUser, чтобы выбрать закрытый ключ, который вы хотите использовать, указав его открытый аналог от перенаправленного агента. Ответ по-прежнему требует использования опции IdentitiesOnly yes .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .