Określ port SSH dla Git

18

Używam niestandardowego portu ssh (1234) dla większości serwerów, z którymi się łączę. W moim pliku konfiguracyjnym ssh mam:

Port 1234

Ale github.com używa portu 22. Kiedy próbuję połączyć się z githubem, oczywiście próbuje użyć portu 1234. W tej chwili muszę edytować moją konfigurację ssh, aby wszystko działało.

Oto fragment mojego git config:

[remote "origin"]
        url = [email protected]:asdf/asdf.git
James Ward
źródło

Odpowiedzi:

27

Zobacz, jak poprawnie skonfigurować plik ~ / .ssh / config (man 5 ssh_config). Możesz łatwo określić różne ustawienia dla różnych hostów. Aby rozwiązać problem, ustawiłeś

Host github.com
Port 22
Host *
Port 1234

Zajrzyj na stronę podręcznika ssh_config, która wyjaśnia wszystko, co musisz wiedzieć na kilku pierwszych stronach.

daff
źródło
24

Utworzenie sekcji w ~/.ssh/configto dobre rozwiązanie, ale warto wiedzieć o innej metodzie.

Wspólna składnia podobna do scpuser@host:path nie ma miejsca na port, ale Git obsługuje również ssh:schemat URL, którego można użyć do określenia portu:

ssh://[email protected]:22/asdf/asdf.git

Chociaż ssh:URL obsługuje specyfikację portów, nie obsługuje ścieżek względnych (np. Nie ma bezpośredniego odpowiednika składni podobnej do scp , user@host:pathgdzie pathnie zaczyna się od ukośnika).

GitHub traktuje ścieżki względne i bezwzględne identycznie, więc działa dla nich, ale może nie działać dla wszystkich repozytoriów Git opartych na SSH. W przypadku prostego hostingu opartego na SSH może być konieczne wstawienie /home/username/lub /Users/username/przejście z ścieżek względnych na bezwzględne. Niektóre systemy hostingowe mogą wcale nie obsługiwać ścieżek bezwzględnych (chociaż nazwałbym taki brak wsparcia błędem).

Chris Johnsen
źródło
Dzięki Chris. Najbardziej podoba mi się ta ścieżka, ponieważ nie wymaga mucking z moją konfiguracją ssh. Dzięki!
James Ward,
1
fyi, jeśli serwer ma „nagie” repozytorium, to ciąg połączenia wyglądałby bardziej ssh://[email protected]:22/asdf/asdf(bez .git)
Xeoncross 23.01.11
3

(Podoba mi się, gdy znajdę odpowiedź zaraz po zadaniu).

Zmodyfikowałem moją konfigurację ssh, aby określić port dla każdego hosta, zamiast być ustawieniem globalnym:

Host asdf.com
    Port 1234

Host github.com
    User git
    Hostname github.com
    Port 22
James Ward
źródło