Укажите SSH-порт для Git


16

Я использую нестандартный порт ssh (1234) для большинства серверов, к которым я подключаюсь. Итак, в моем файле конфигурации SSH у меня есть:

Port 1234

Но github.com использует порт 22. Когда я пытаюсь подключиться к github, он явно пытается использовать порт 1234. Сейчас мне нужно отредактировать конфигурацию ssh, чтобы все заработало.

Вот фрагмент из моего конфига git:

[remote "origin"]
        url = git@github.com:asdf/asdf.git

Ответы:


24

Просто посмотрите, как правильно настроить файл ~ / .ssh / config (man 5 ssh_config). Вы можете легко указать разные настройки для разных хостов. Чтобы решить вашу проблему, вы должны установить

Host github.com
Port 22
Host *
Port 1234

Загляните на страницу руководства ssh_config, она объясняет все, что вам нужно знать на первых страницах.


22

Настройка раздела в ~/.ssh/configявляется хорошим решением, но может быть полезно узнать о другом методе.

Обычный scp- подобный синтаксис user@host:pathне имеет места для порта, но Git также поддерживает ssh:схему URL, которая может использоваться для указания порта:

ssh://git@github.com:22/asdf/asdf.git

Хотя ssh:URL поддерживает спецификацию порта, он не поддерживает относительные пути (например, нет прямого эквивалента синтаксису, подобному scp,user@host:path где pathне начинается с косой черты).

GitHub одинаково обрабатывает относительные и абсолютные пути, поэтому он работает для них, но может не работать для всех Git-репозиториев на основе SSH. Для простого хостинга на основе SSH может потребоваться вставить /home/username/или /Users/username/при переключении с относительных на абсолютные пути. Некоторые хостинговые системы могут вообще не обрабатывать абсолютные пути (хотя я бы назвал такой недостаток поддержки ошибкой).


Спасибо, Крис. Мне нравится этот путь лучше всего, потому что он не требует взлома с моей конфигурации SSH. Спасибо!
Джеймс Уорд

1
к вашему сведению, если на сервере есть «голое» репо, то строка подключения будет выглядеть больше ssh://git@github.com:22/asdf/asdf(без .git)
Xeoncross

3

(Мне нравится, когда я нахожу ответ сразу после того, как спросил его.)

Я изменил мою конфигурацию ssh, чтобы указать порт для каждого хоста вместо того, чтобы быть глобальным параметром:

Host asdf.com
    Port 1234

Host github.com
    User git
    Hostname github.com
    Port 22

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.