git zdalne dodawanie z innym portem SSH


336

Jak w Git mogę dodać serwer zdalnego pochodzenia, gdy mój host używa innego portu SSH?

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

Odpowiedzi:


573

Możesz po prostu to zrobić:

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

1234 jest używany port ssh


10
Dzięki. Tylko uzupełnienie: w części ścieżki użyj ścieżki bezwzględnej, a nie ścieżki względnej do katalogu domowego użytkownika ...
Snicolas

@Snicolas: Dlaczego nie należy używać ścieżki względnej?
Hannes

12
@ Sincolas Działa, jeśli masz repozytorium w katalogu domowym użytkowników: /home/someuser/git-repos/example.git -> ssh: // someuser @ <host>: <port> / ~ / git-repos / przyklad.git . btw: dostajesz <nazwa> .git repo przez git clone --bare <adres>
MartinL

@Jameo Jest to ścieżka absolutna.
igorw 12.12

48
Pamiętaj, że nie będzie działać, jeśli usuniesz protokół. tzn. jeśli spróbujesz wykonać następujące czynności, nie zadziała. git remote add origin user@host:1234/srv/git/example
Bijay Rungta,

137

Musisz edytować plik ~ / .ssh / config. Dodaj coś takiego:

Host example.com
    Port 1234

Szybkie wyszukiwanie w Google pokazuje kilka różnych zasobów, które wyjaśniają to bardziej szczegółowo niż ja.


16
To zadziałało dla mnie. Podobało mi się to podejście bardziej niż trzymanie go w git remote. Dzięki! W ten sposób nie trzeba podawać ścieżki bezwzględnej.
Michael van Rooijen

To działa świetnie. Również w ten sposób mogę mieć określony klucz zamiast domyślnego id_rsa. Mało tego, mój serwer jest wybredny i mniej więcej musisz go mieć wystarczająco szybko, co nie powiedzie się, jeśli podasz hasło. Więc też używam PasswordAuthentication no.
Alexis Wilke

4
Lepiej jest mieć go na pilocie niż ukryć go w pliku konfiguracyjnym w ten sposób: kiedy masz wszystko w jednym miejscu, nigdy nie możesz zapomnieć o innym numerze portu i możesz po prostu skopiować i wkleić adres URL, aby użyć go ktokolwiek inny.
MarcH

1
@MarcH Tak naprawdę zależy to od sytuacji. Lubię używać losowych numerów portów na moich instancjach VPS. Posiadanie portu w pliku konfiguracyjnym to jeden ze sposobów, w jaki można ukryć te informacje od współpracowników (gdy masz wiele pilotów, zdalny host wdrażania różni się od wewnętrznego repozytorium kodu źródłowego).
Ragunath Jawahar

@RagunathJawahar Nie sądzę, aby używanie losowych numerów portów było bardzo częstym przypadkiem użycia.
MarcH

29

Najlepsza odpowiedź nie działa dla mnie. Potrzebowałem ssh://od samego początku.

# 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

Dla tych, którzy edytują ./.git/config

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

1
Doskonały. Jedno pytanie: jak to zrobić dla submodułów? Wydaje się, że to nie działa.
m4l490n

11

Zamiast używać ssh://prefiksu protokołu, możesz nadal używać konwencjonalnego formularza URL do uzyskiwania dostępu do git przez SSH, z jedną małą zmianą. Przypominamy, że konwencjonalny adres URL to :

git@host:path/to/repo.git

Aby określić alternatywny port, umieść nawiasy wokół user@hostczęści, w tym portu:

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

Ale jeśli zmiana portu jest tylko tymczasowa, możesz powiedzieć gitowi, aby używał innej komendy SSH zamiast zmieniać zdalny adres URL repozytorium:

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

2
Dodanie nawiasów kwadratowych wokół git @ host: port działało dla mnie pięknie. Korzystam z gitlab i na tym serwerze wymaga niestandardowego portu, ale nie mogę również użyć bezwzględnej ścieżki do repozytorium (nie wiem). Dziękuję
Thomas Le

1
Wydaje mi się to najbardziej elastyczną metodą, ponieważ obsługuje ścieżki względne i nie polega na konfiguracjach ssh
user2882096,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.