Вкажіть порт SSH для Git


18

Я використовую нестандартний порт ssh (1234) для більшості серверів, до яких я підключаюся. Отже, у моєму конфігураційному файлі ssh:

Port 1234

Але github.com використовує порт 22. Коли я намагаюся підключитися до github, він, очевидно, намагається використовувати порт 1234. Зараз я маю редагувати свою ssh-конфігурацію, щоб змусити роботу працювати.

Ось фрагмент з моєї конфігурації git:

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

Відповіді:


27

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

Host github.com
Port 22
Host *
Port 1234

Погляньте на сторінку керівництва ssh_config, де пояснено все, що потрібно знати на перших кількох сторінках.


24

Налаштування розділу в ~/.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
fyi, якщо на сервері є "голе" репо, то рядок з'єднання буде виглядати більше ssh://git@github.com:22/asdf/asdf(без .git)
Xeoncross,

3

(Люблю, коли я знаходжу відповідь відразу після її запитання.)

Я змінив ssh config, щоб вказати порт для кожного хоста, а не глобальний параметр:

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.