Tentukan Port SSH untuk Git

18

Saya menggunakan port ssh non-standar (1234) untuk sebagian besar server yang saya hubungkan. Jadi dalam file konfigurasi ssh saya, saya punya:

Port 1234

Tetapi github.com menggunakan port 22. Ketika saya mencoba menghubungkan ke github, ia jelas mencoba menggunakan port 1234. Saat ini saya harus mengedit konfigurasi ssh saya untuk membuat semuanya berfungsi.

Berikut ini cuplikan dari konfigurasi git saya:

[remote "origin"]
        url = [email protected]:asdf/asdf.git
James Ward
sumber

Jawaban:

27

Lihat saja cara mengatur file ~ / .ssh / config Anda dengan benar (man 5 ssh_config). Anda dapat menentukan pengaturan yang berbeda untuk host yang berbeda dengan mudah. Untuk mengatasi masalah Anda, Anda akan mengatur

Host github.com
Port 22
Host *
Port 1234

Lihat halaman manual ssh_config, ini menjelaskan semua yang perlu Anda ketahui pada beberapa halaman pertama.

daff
sumber
24

Menyiapkan bagian dalam ~/.ssh/configadalah solusi yang bagus, tetapi mungkin berguna untuk mengetahui tentang metode lain.

Sintaks mirip- scp umum dari user@host:pathtidak memiliki tempat untuk port, tetapi Git juga mendukung ssh:skema URL yang dapat digunakan untuk menentukan port:

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

Sementara ssh:URL mendukung spesifikasi port, URL tidak mendukung jalur relatif (mis. Tidak ada ekuivalen langsung dengan sintaks seperti scp diuser@host:path mana pathtidak dimulai dengan garis miring).

GitHub memperlakukan jalur relatif dan absolut secara identik, sehingga ini berfungsi untuk mereka, tetapi mungkin tidak bekerja untuk semua repositori Git berbasis SSH. Untuk hosting berbasis SSH sederhana, Anda mungkin perlu memasukkan /home/username/atau /Users/username/ketika beralih dari jalur relatif ke absolut. Beberapa sistem hosting mungkin tidak menangani jalur absolut sama sekali (meskipun saya cenderung menyebut kurangnya dukungan bug).

Chris Johnsen
sumber
Terimakasih Chris. Saya paling suka jalan ini karena tidak perlu mucking dengan konfigurasi ssh saya. Terima kasih!
James Ward
1
fyi, jika server memiliki repo "telanjang" maka string koneksi akan terlihat lebih seperti ssh://[email protected]:22/asdf/asdf(tanpa. git)
Xeoncross
3

(Senang ketika saya menemukan jawaban tepat setelah menanyakannya.)

Saya memodifikasi konfigurasi ssh saya untuk menentukan port untuk setiap host alih-alih menjadi pengaturan global:

Host asdf.com
    Port 1234

Host github.com
    User git
    Hostname github.com
    Port 22
James Ward
sumber
2

Menemukan tautan ini, dan meskipun itu membantu entri blog saya dapat membantu memperjelasnya:

https://prestongarrison.com/change-port-git-is-using-for-ssh/

Pada dasarnya saya pikir jauh lebih baik untuk mengedit file .git / config Anda dan melakukan perubahan.

Preston Garrison
sumber