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
JuanPablo
źródło

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

igorw
źródło
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.

bramp
źródło
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 [email protected]:10000/aaa/bbbb/ccc.git
# work
git remote set-url origin ssh://[email protected]:10000/aaa/bbbb/ccc.git
kujiy
źródło
17

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

[remote "external"]                                                                                                                                                                                                                                                            
  url = ssh://[email protected]:11720/aaa/bbb/ccc                                                                                                                                                                                                               
  fetch = +refs/heads/*:refs/remotes/external/* 
Evan Carroll
źródło
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
Konrad Rudolph
źródło
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,