Skip to main content

Использование SSH через порт HTTPS

Иногда брандмауэры отказываются в полной мере разрешать подключения по протоколу SSH. Если использование клонирования HTTPS с кэшированием учетных данных недоступно, можно попытаться выполнить клонирование с помощью SSH-подключения, выполненного через порт HTTPS. Большинство правил брандмауэра должны разрешать этот вариант, но прокси-серверы могут этому помешать.

Warning

Пользователи GitHub Enterprise Server: доступ к GitHub Enterprise Server по SSH через порт HTTPS в настоящее время не поддерживается.

Чтобы проверить, возможно ли подключение по протоколу SSH через порт HTTPS, выполните следующую команду SSH:

$ ssh -T -p 443 git@ssh.github.com
# Hi USERNAME! You've successfully authenticated, but GitHub does not
# provide shell access.

Если она выполнена успешно, все в порядке. В противном случае вам может потребоваться выполнить руководство по устранению неполадок.

Note

Имя узла для порта 443 не github.comявляетсяssh.github.com.

В этой статье содержатся команды или примеры, использующие github.com домен. Вы можете получить доступ к GitHub в другом домене, например octocorp.ghe.com.

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

git clone ssh://git@ssh.github.com:443/YOUR-USERNAME/YOUR-REPOSITORY.git

Включение SSH-подключений по протоколу HTTPS

Если вы можете выполнить SSH git@ssh.github.com через порт 443, можно переопределить параметры SSH, чтобы принудительно подключиться к GitHub.com для выполнения через этот сервер и порт.

Чтобы настроить это в файле конфигурации SSH, измените файл по пути ~/.ssh/config и добавьте следующий раздел:

Host github.com
    Hostname ssh.github.com
    Port 443
    User git

Это можно проверить, подключив еще раз к GitHub.com:

$ ssh -T git@github.com
# Hi USERNAME! You've successfully authenticated, but GitHub does not
# provide shell access.

Обновление известных узлов

При первом взаимодействии с GitHub после переключения на порт 443 может появиться предупреждение о том, что узел не known_hostsнайден или найден другим именем.

# The authenticity of host '[ssh.github.com]:443 ([140.82.112.36]:443)' can't be established.
# ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
# This host key is known by the following other names/addresses:
#     ~/.ssh/known_hosts:32: github.com
# Are you sure you want to continue connecting (yes/no/[fingerprint])?

Это безопасно ответить на этот вопрос, предполагая, что отпечаток SSH соответствует одному из опубликованных отпечатков пальцев GitHub. Список отпечатков пальцев см. в разделе Отпечатки ключей SSH на GitHub.