git remote add з іншим портом SSH


336

Як я можу додати сервер віддаленого походження, коли мій хост використовує інший порт SSH?

git remote add origin ssh://user@host/srv/git/example

Відповіді:


573

Ви можете просто зробити це:

git remote add origin ssh://user@host:1234/srv/git/example

1234 використовується порт ssh


10
Дякую. Просто доповнення: в частині шляху використовуйте абсолютний шлях, а не відносний шлях до домашнього каталогу користувача ...
Snicolas

@Snicolas: Чому не слід використовувати відносний шлях?
Ганнес

12
@Sincolas Це працює, якщо у вас є репо в домашньому каталозі користувачів: /home/someuser/git-repos/example.git -> ssh: // someuser @ <host>: <port> / ~ / git-repos / example.git . btw: ви отримуєте <name> .git repo від git clone --bare <адреса>
MartinL

@Jameo Це є абсолютним шляхом.
igorw

48
Зауважте, що це не спрацює, якщо ви видалите протокол. тобто якщо ви спробуєте наступне, це не вийде. git remote add origin user@host:1234/srv/git/example
Bijay Rungta

137

Вам потрібно відредагувати файл ~ / .ssh / config. Додайте щось подібне:

Host example.com
    Port 1234

Швидкий пошук в Google показує кілька різних ресурсів, які пояснюють це більш детально, ніж я.


16
Це спрацювало для мене. Мені подобається такий підхід краще, ніж наклеювати його на пульт дистанційного керування. Дякую! Ні в якому разі не потрібно вказувати абсолютний шлях.
Майкл van Rooijen

Це чудово працює. Також таким чином я можу мати специфічний ключ замість id_rsa за замовчуванням. Мало того, мій сервер прискіпливий і більш-менш ви повинні мати його досить швидко, що не вдається, якщо ви введете пароль. Тому я використовую PasswordAuthentication noі те.
Алексіс Вілке

4
Краще мати його у віддаленому режимі, ніж приховувати його у конфігураційному файлі так: коли у вас є все лише в одному місці, ви ніколи не можете забути про інший номер порту, а можете просто скопіювати та вставити URL для будь-кого іншого користувача.
MarcH

1
@MarcH Це насправді залежить від ситуації. Мені подобається використовувати випадкові номери портів на моїх екземплярах VPS. Маючи порт всередині конфігураційного файлу - це один із способів відмовити цю інформацію від співпрацівників (саме тоді, коли у вас є кілька віддалених пристроїв, віддалений хост розгортання відрізняється від внутрішнього вихідного коду вихідного коду).
Рагунат Джавахар

@RagunathJawahar Я не думаю, що використання випадкових номерів портів є дуже поширеним випадком використання.
МарчHH

29

Найкраща відповідь не працює для мене. Мені потрібно було ssh://від початку.

# does not work
git remote set-url origin user@example.com:10000/aaa/bbbb/ccc.git
# work
git remote set-url origin ssh://user@example.com:10000/aaa/bbbb/ccc.git

17

Для тих, хто редагує ./.git/config

[remote "external"]                                                                                                                                                                                                                                                            
  url = ssh://evanc@www.foo.com:11720/aaa/bbb/ccc                                                                                                                                                                                                               
  fetch = +refs/heads/*:refs/remotes/external/* 

1
Ідеально. Однак одне питання, як це зробити для підмодулів? Здається, це не працює.
m4l490n

11

Замість того, щоб використовувати ssh://префікс протоколу, ви можете продовжувати використовувати звичайну форму URL для доступу до git через SSH, маючи одну невелику зміну. Як нагадування, звичайною URL-адресою є :

git@host:path/to/repo.git

Щоб вказати альтернативний порт, поставте дужки навколо user@hostчастини, включаючи порт:

[git@host:port]:path/to/repo.git

Але якщо зміна порту є лише тимчасовою, ви можете сказати git використовувати іншу команду SSH замість зміни віддаленої URL-адреси вашого сховища:

export SSH_GIT_COMMAND='ssh -p port'
git clone git@host:path/to/repo.git # for instance

2
Додавання квадратних дужок навколо git @ host: порт прекрасно працював для мене. Я використовую gitlab, і на цьому сервері потрібен нестандартний порт, але я також не можу використовувати абсолютний шлях до репо (я цього не знаю). Дякую
Thomas Le

1
Мені це здається найбільш гнучким методом, оскільки він підтримує відносні шляхи і не покладається на
конфігурації
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.