Подтвердить что ты не робот

Git и SSH, какой ключ используется?

Скажем, ваш каталог .ssh содержит 30 ключей (15 закрытых и 15 открытых).

Где в Git можно проверить, какой из них используется для подключения к данному удаленному репозиторию?

4b9b3361

Ответ 1

Следующая запись в файле .ssh/config решает проблему

  host git.assembla.com
  user git
  identityfile ~/.ssh/whatever

Где ~/.ssh/whatever - это путь к вашему закрытому ключу

Кроме того, пользователь и хост могут быть выбраны из

git push [email protected]:repo_name.git
         ^__ ^_______________
         user host

Ответ 2

Выполнение ssh в режиме verbose, aka ssh -v [email protected], будет печатать огромную нагрузку отладочной информации, которая также содержит сведения о том, какие файлы ключей он пытается выполнить для входа.

debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/user/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 332
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).

Теперь, если вы объедините это, с помощью шага 4 в Git собственной странице справки SSH ssh -vT [email protected] может дать вам ответ.

Примечание. Вы также можете использовать переключатель -i, чтобы сообщить ssh во время выполнения команды, какой ключевой файл использовать.

Ответ 3

Если он не указан в .ssh/config, он будет использовать файл закрытого ключа по умолчанию.

Файл по умолчанию ~/.ssh/id_rsa или ~/.ssh/id_dsa или ~/.ssh/identity в зависимости от версии протокола.

Ответ 4

Так как git просто использует ssh для подключения, он будет использовать любой ключ ssh, который будет использоваться для подключения к удаленному хосту. Подробнее см. В файле ~/.ssh/config; блок host использует директиву IdentityFile, чтобы указать закрытый ключ для использования. Страница ssh_config(5) содержит полную информацию.

Ответ 5

Это может быть супер-краем, но после запуска ssh -vT [email protected] он показал мне, что проверяет /root/.ssh на наличие ключей, я ожидал, что он проверит мой домашний каталог, и затем я понял, что вошел в систему как root!

Ответ 6

На удаленном сервере отредактируйте файл sshd_config и измените LogLevel с INFO на VERBOSE и перезапустите ssh.

Теперь ваш файл журнала будет содержать отпечаток ключа, который использовался для аутентификации каждого пользователя.

В Ubuntu эти файлы:

/etc/ssh/sshd_config
/var/log/auth.log

но они могут отличаться от другого дистрибутива. Просто Google для их местоположения (некоторые используют /var/log/secure, например).

Ответ 7

Я бы сказал, что наиболее практичным на мой вкус будет:

GIT_SSH_COMMAND='ssh -v' git …

конечно, в зависимости от обстоятельств может быть полезно просто экспортировать его в текущую среду SHELL, чтобы вам не приходилось каждый раз добавлять его вручную. Тогда это будет так:

export GIT_SSH_COMMAND='ssh -v'
git …

- Как предполагает man git, существует несколько переменных среды, которые могут повлиять на операции Git с использованием SSH. Согласно man ssh вы можете получить некоторую информацию об отладке при развертывании опции -v (не только, но и ознакомьтесь с руководством, если вам интересно узнать больше).

какой ключ используется?

На выходе вы увидите что-то вроде...

debug1: Offering public key: …

... что является ответом на ваш д-н.