Допустим, ваш .sshкаталог содержит 30 ключей (15 закрытых и 15 открытых).
Где в Git можно проверить, какой из них используется для подключения к данному удаленному репозиторию?
Допустим, ваш .sshкаталог содержит 30 ключей (15 закрытых и 15 открытых).
Где в Git можно проверить, какой из них используется для подключения к данному удаленному репозиторию?
Ответы:
Следующая запись в .ssh/configфайле решает проблему.
host git.assembla.com
user git
identityfile ~/.ssh/whatever
Где ~/.ssh/whateverпуть к твоему закрытому ключу
Кроме того, пользователя и хоста можно выбрать из
git push git@git.assembla.com:repo_name.git
^__ ^_______________
user host
Выполнение ssh в подробном режиме, также известном как ssh -v user@host, напечатает огромное количество отладочной информации, которая также содержит сведения о том, какие ключевые файлы он пытается выполнить для входа.
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 git@github.comвы сможете получить ответ.
Примечание. Вы также можете использовать -iпереключатель, чтобы указать ssh во время выполнения команды, какой ключевой файл использовать.
ssh -vv user@host 2> >(grep Offering)- это упростит задачу. Последний файл должен быть открытым ключом. Например:debug1: Offering RSA public key: /Users/macbookpro/.ssh/id_rsa
githubэто не то же самое, что git.
Если он не указан в .ssh/configфайле, будет использоваться файл закрытого ключа по умолчанию.
Файл по умолчанию - ~/.ssh/id_rsaили ~/.ssh/id_dsaили в ~/.ssh/identityзависимости от версии протокола.
Я бы сказал, что наиболее практичным на мой вкус будет:
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: …
… Что является ответом на ваш вопрос.
set GIT_SSH_COMMAND=ssh -v. Это помогло мне понять, что ssh-config Inlcude-Path должен выглядеть примерно так в Windows: Include /C/Users/YourUserName.ssh/configчтобы сделать ssh и, таким образом, git использовать файл конфигурации, который затем использует, например, HOST *запись для указания файла идентификации, который использует git / ssh.
Поскольку gitиспользуется только sshдля подключения, он будет использовать любой ключ, который sshбудет использоваться для подключения к удаленному хосту. Подробности смотрите в ~/.ssh/configфайле; hostблок использует IdentityFileдирективу , чтобы указать закрытый ключ для использования. На ssh_config(5)странице руководства содержится полная информация.
/etc/ssh/ssh_config
/etc/ssh_configпо всей видимости, файл, полный прокомментированных записей
~/.ssh/configсебя.
Это может быть супер-край, но после запуска ssh -vT git@github.comон показал мне, что он проверяет /root/.sshключи, я ожидал, что он проверит мой домашний каталог, а затем я понял, что вошел в систему как root!
sshспособ допроса является правильным решением. Спасибо.
На удаленном сервере отредактируйте файл sshd_config и измените LogLevel с INFO на VERBOSE и перезапустите ssh.
Теперь ваш файл журнала будет содержать отпечаток ключа, который использовался для аутентификации каждого пользователя.
В Ubuntu это следующие файлы:
/etc/ssh/sshd_config
/var/log/auth.log
но они могут отличаться в другом дистрибутиве. Просто укажите их местоположение в Google (например, некоторые используют / var / log / secure).