Кто бы ни проголосовал за «закрыть», этот вопрос - напрямую связан с программированием, по той же причине, по которой здесь разрешены вопросы о GIT
Джеймс Райцев
1
Возможно ... Это действительно вопрос суперпользователя, проблема здесь не в git, а в платформе, на которой он работает. Вы не можете проверить "в git" на предмет проблемы, потому что git все равно, это касается только того, как вы используете ssh и как он настроен. Используете ли вы ssh-agent, какую-либо систему управления ключами, какую операционную систему вы используете, какую версию и т. Д.?
Arafangion
Ответы:
68
Следующая запись в .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 в подробном режиме, также известном как 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 во время выполнения команды, какой ключевой файл использовать.
Вы также можете использовать grep для стандартного вывода ошибок команды ssh, чтобы найти ключевой файл следующим образом: ssh -vv user@host 2> >(grep Offering)- это упростит задачу. Последний файл должен быть открытым ключом. Например:debug1: Offering RSA public key: /Users/macbookpro/.ssh/id_rsa
Джанфранко П.
3
githubэто не то же самое, что git.
ForeverWintr
9
Если он не указан в .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опции (не только, но также, ознакомьтесь с руководством, если вам интересно больше).
ДА. Это должен быть принятый ответ. Для того, чтобы заставить его работать на окнах CMD (тьфу), используйте: set GIT_SSH_COMMAND=ssh -v. Это помогло мне понять, что ssh-config Inlcude-Path должен выглядеть примерно так в Windows: Include /C/Users/YourUserName.ssh/configчтобы сделать ssh и, таким образом, git использовать файл конфигурации, который затем использует, например, HOST *запись для указания файла идентификации, который использует git / ssh.
icyerasor
5
Поскольку gitиспользуется только sshдля подключения, он будет использовать любой ключ, который sshбудет использоваться для подключения к удаленному хосту. Подробности смотрите в ~/.ssh/configфайле; hostблок использует IdentityFileдирективу , чтобы указать закрытый ключ для использования. На ssh_config(5)странице руководства содержится полная информация.
Хм .. файл не существует в моей системе. Должен ли он?
James Raitsev
1
@JAM Какую ОС вы используете? Кроме того, иногда файл конфигурации находится по адресу/etc/ssh/ssh_config
Я использую MACOS. Найден, /etc/ssh_configпо всей видимости, файл, полный прокомментированных записей
Джеймс Райцев
@sarnold Ты мог создать ~/.ssh/configсебя.
xdazz
4
Это может быть супер-край, но после запуска ssh -vT git@github.comон показал мне, что он проверяет /root/.sshключи, я ожидал, что он проверит мой домашний каталог, а затем я понял, что вошел в систему как root!
Ответы:
Следующая запись в
.ssh/config
файле решает проблему.Где
~/.ssh/whatever
путь к твоему закрытому ключуКроме того, пользователя и хоста можно выбрать из
источник
Выполнение ssh в подробном режиме, также известном как
ssh -v user@host
, напечатает огромное количество отладочной информации, которая также содержит сведения о том, какие ключевые файлы он пытается выполнить для входа.Теперь, если вы объедините это с шагом 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
зависимости от версии протокола.источник
Я бы сказал, что наиболее практичным на мой вкус будет:
конечно, в зависимости от обстоятельств может быть полезно просто экспортировать его в текущую среду SHELL, чтобы вам не приходилось каждый раз добавлять его вручную. Тогда было бы так:
-
man git
Предполагается, что есть несколько переменных среды, которые могут повлиять на работу Git с использованием SSH. По словамman ssh
вас, вы можете получить некоторую отладочную информацию при развертывании-v
опции (не только, но также, ознакомьтесь с руководством, если вам интересно больше).В результате вы увидите что-то вроде…
… Что является ответом на ваш вопрос.
источник
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 это следующие файлы:
но они могут отличаться в другом дистрибутиве. Просто укажите их местоположение в Google (например, некоторые используют / var / log / secure).
источник