Следует ли использовать команду sudo
или более высокий уровень привилегий с GIT?
Команду sudo
или более высокий уровень привилегий, например разрешения администратора, не следует использовать с GIT. Если у вас есть очень веская причина для применения команды sudo
, используйте ее с каждой командой (вероятно, будет лучше применить su
для работы с оболочкой от имени привилегированного пользователя). Если вы создадите ключи SSH без sudo
, а затем попытаетесь выполнить такую команду, как sudo git push
, будут использоваться не те ключи, которые вы создали.
Проверка подключения к правильному серверу
Правильно вводить текст не так уж легко. Будьте внимательны при вводе: вы не сможете подключиться к githib.com или guthub.com. В некоторых случаях в корпоративной сети также могут возникнуть проблемы с разрешением записи DNS.
Чтобы убедиться в том, что вы подключаетесь к нужному домену, можно ввести следующую команду:
$ 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
> 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
-
Убедитесь в наличии закрытого ключа, созданного и загруженного в 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@[имя узла]
:
$ 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 в конце строк "identity file" означает, что SSH не удалось найти файл для использования. Далее в строках "Trying private key" также указывается, что файл не найден. Если бы файл существовал, в этих строках были бы значения 1 и "Offering public key" соответственно:
$ ssh -vT git@HOSTNAME
> ...
> 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)
-
В правом верхнем углу любой страницы щелкните фотографию профиля, а затем выберите Параметры.
-
На боковой панели параметров пользователя щелкните Ключи 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)
-
В правом верхнем углу любой страницы щелкните фотографию профиля, а затем выберите Параметры.
-
На боковой панели параметров пользователя щелкните Ключи 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)
-
В правом верхнем углу любой страницы щелкните фотографию профиля, а затем выберите Параметры.
-
На боковой панели параметров пользователя щелкните Ключи SSH и GPG.
-
Сравните список ключей SSH с выходными данными команды
ssh-add
.
Если открытый ключ отсутствует в GitHub Enterprise Server, необходимо добавить ключ SSH в GitHub Enterprise Server, чтобы связать его с компьютером.
Предупреждение. Если вы видите ключ SSH, который вам неизвестен, в GitHub Enterprise Server, сразу удалите его и обратитесь к администратор сайта для получения дополнительной помощи. Неопознанный открытый ключ может указывать на возможную проблему безопасности. Дополнительные сведения см. в разделе Проверка ключей SSH.