Следует ли использовать команду sudo
или более высокий уровень привилегий с GIT?
Команду sudo
или более высокий уровень привилегий, например разрешения администратора, не следует использовать с GIT.
Если у вас есть очень хорошая причина , необходимо использовать sudo
ее, убедитесь, что вы используете ее с каждой командой. Если вы создадите ключи SSH без sudo
, а затем попытаетесь выполнить такую команду, как sudo git push
, будут использоваться не те ключи, которые вы создали.
Проверка подключения к правильному серверу
Чтобы убедиться в том, что вы подключаетесь к нужному домену, можно ввести следующую команду:
ssh -vT git@HOSTNAME
ssh -vT git@HOSTNAME
Вы должны увидеть следующий результат:
> OpenSSH_8.1p1, LibreSSL 2.7.3
> debug1: Reading configuration data /Users/YOU/.ssh/config
> debug1: Reading configuration data /etc/ssh/ssh_config
> debug1: /etc/ssh/ssh_config line 47: Applying options for *
> debug1: Connecting to HOSTNAME port 22.
Подключение должно выполняться через порт 22.
Подключение с помощью пользователя git
Все подключения, в том числе к удаленным URL-адресам, должны выполняться от имени пользователя git. Если вы попытаетесь подключиться с именем пользователя GitHub Enterprise Server, произойдет сбой:
$ ssh -T GITHUB-USERNAME@HOSTNAME
> Permission denied (publickey).
Если подключение завершилось сбоем и вы используете удаленный URL-адрес с именем пользователя GitHub Enterprise Server, вы можете переключить удаленный URL-адрес на пользователя git.
Чтобы проверить подключение, введите следующую команду:
ssh -T git@HOSTNAME
ssh -T git@HOSTNAME
Вы должны увидеть следующий результат:
> Hi USERNAME! You've successfully authenticated...
Проверка наличия используемого ключа
-
Откройте ТерминалТерминалGIT Bash.
-
Убедитесь в наличии закрытого ключа, созданного и загруженного в SSH.
# start the ssh-agent in the background $ eval "$(ssh-agent -s)" > Agent pid 59566 $ ssh-add -l -E sha256 > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
Если у вас установлено приложение GitHub Desktop, его можно использовать для клонирования репозиториев, не прибегая к ключам SSH.
-
При использовании GIT Bash включите ssh-agent:
# start the ssh-agent in the background $ eval "$(ssh-agent -s)" > Agent pid 59566
Если вы используете другую командную строку терминала, например GIT для Windows, включите ssh-agent:
# start the ssh-agent in the background $ eval $(ssh-agent -s) > Agent pid 59566
Примечание. Команды eval, приведенные выше, запускают ssh-agent вручную в вашей среде. Эти команды могут завершиться ошибкой, если ssh-agent уже выполняется как фоновая системная служба. В этом случае рекомендуется проверка соответствующую документацию для вашей среды.
-
Убедитесь в наличии закрытого ключа, созданного и загруженного в SSH.
$ ssh-add -l -E sha256 > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
-
Откройте ТерминалТерминалGIT Bash.
-
Убедитесь в наличии закрытого ключа, созданного и загруженного в SSH.
$ ssh-add -l -E sha256 > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
Команда ssh-add
должна вывести длинную строку из цифр и букв. Если она ничего не выводит, необходимо создать новый ключ SSH и связать его с GitHub Enterprise Server.
Совет. В большинстве систем закрытые ключи по умолчанию (~/.ssh/id_rsa
и ~/.ssh/identity
) автоматически добавляются в агент проверки подлинности SSH. Вам не нужно выполнять команду ssh-add path/to/key
, если имя файла не было переопределено при создании ключа.
Получение дополнительных сведений
Вы также можете проверить, используется ли ключ, попытавшись подключиться к git@HOSTNAME
:
ssh -vT git@HOSTNAME
ssh -vT git@HOSTNAME
Результат будет выглядеть следующим образом.
> ...
> debug1: identity file /Users/YOU/.ssh/id_rsa type -1
> debug1: identity file /Users/YOU/.ssh/id_rsa-cert type -1
> debug1: identity file /Users/YOU/.ssh/id_dsa type -1
> debug1: identity file /Users/YOU/.ssh/id_dsa-cert type -1
> ...
> debug1: Authentications that can continue: publickey
> debug1: Next authentication method: publickey
> debug1: Trying private key: /Users/YOU/.ssh/id_rsa
> debug1: Trying private key: /Users/YOU/.ssh/id_dsa
> debug1: No more authentication methods to try.
> Permission denied (publickey).
В этом примере SSH не обнаружил никаких ключей.
- "-1" в конце строк "файл удостоверений" означает, что SSH не удалось найти файл для использования.
- Строки "Попробовать закрытый ключ" указывают, что файл не найден.
Если файл существует, эти строки будут иметь значение "1" и "Предложение открытого ключа", как в этом выходных данных:
> ...
> debug1: identity file /Users/YOU/.ssh/id_rsa type 1
> ...
> debug1: Authentications that can continue: publickey
> debug1: Next authentication method: publickey
> debug1: Offering RSA public key: /Users/YOU/.ssh/id_rsa
Проверка подключения открытого ключа к учетной записи
Чтобы установить безопасное подключение, необходимо предоставить GitHub Enterprise Server открытый ключ.
-
Откройте терминал.
-
Запустите агент SSH в фоновом режиме.
$ eval "$(ssh-agent -s)" > Agent pid 59566
-
Найдите и запишите отпечаток открытого ключа.
$ ssh-add -l -E sha256 > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
-
В правом верхнем углу любой страницы на GitHubщелкните фото профиля, а затем нажмите кнопку "Параметры".
-
В разделе "Access" боковой панели щелкните SSH и ключи GPG.
-
Сравните список ключей SSH с выходными данными команды
ssh-add
.
-
Откройте командную строку.
-
Запустите агент SSH в фоновом режиме.
$ ssh-agent -s > Agent pid 59566
-
Найдите и запишите отпечаток открытого ключа.
$ ssh-add -l -E sha256 > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
-
В правом верхнем углу любой страницы на GitHubщелкните фото профиля, а затем нажмите кнопку "Параметры".
-
В разделе "Access" боковой панели щелкните SSH и ключи GPG.
-
Сравните список ключей SSH с выходными данными команды
ssh-add
.
-
Откройте терминал.
-
Запустите агент SSH в фоновом режиме.
$ eval "$(ssh-agent -s)" > Agent pid 59566
-
Найдите и запишите отпечаток открытого ключа. Если вы используете OpenSSH 6.7 или более поздней версии:
$ ssh-add -l > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA)
Если вы используете OpenSSH 6.8 или более ранней версии:
$ ssh-add -l -E md5 > 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA)
-
В правом верхнем углу любой страницы на GitHubщелкните фото профиля, а затем нажмите кнопку "Параметры".
-
В разделе "Access" боковой панели щелкните SSH и ключи GPG.
-
Сравните список ключей SSH с выходными данными команды
ssh-add
.
Если открытый ключ отсутствует в GitHub Enterprise Server, необходимо добавить ключ SSH в GitHub Enterprise Server, чтобы связать его с компьютером.
Предупреждение. Если вы видите ключ SSH, который вам неизвестен, в GitHub Enterprise Server, сразу удалите его и обратитесь к ваш администратор сайта для получения дополнительной помощи. Неопознанный открытый ключ может указывать на возможную проблему безопасности. Дополнительные сведения см. в разделе Проверка ключей SSH.