git add remote dengan port SSH lainnya

336

Di Git, bagaimana saya bisa menambahkan server asal remote ketika host saya menggunakan port SSH yang berbeda?

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

Jawaban:

573

Anda bisa melakukan ini:

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

1234 apakah port ssh sedang digunakan

igorw
sumber
10
Terima kasih. Hanya pelengkap: di bagian jalur, gunakan jalur absolut, bukan jalur relatif ke direktori home pengguna ...
Snicolas
@ Snicolas: Mengapa orang tidak menggunakan jalur relatif?
Hannes
12
@Sincolas Berhasil jika Anda memiliki repo di direktori home pengguna: /home/someuser/git-repos/example.git -> ssh: // someuser @ <host>: <port> / ~ / git-repos / contoh . btw: Anda mendapatkan <name> .git repo oleh git clone --bare <adress>
MartinL
@Jameo Ini adalah jalur absolut.
igorw
48
Perhatikan bahwa itu tidak akan berfungsi jika Anda menghapus protokol. yaitu jika Anda mencoba yang berikut ini, itu tidak akan berhasil. git remote add origin user@host:1234/srv/git/example
Bijay Rungta
137

Anda perlu mengedit file ~ / .ssh / config Anda. Tambahkan sesuatu seperti berikut ini:

Host example.com
    Port 1234

Pencarian google cepat menunjukkan beberapa sumber berbeda yang menjelaskannya lebih detail daripada saya.

bramp
sumber
16
Itu berhasil bagi saya. Saya suka pendekatan ini lebih baik daripada menempel di remote git. Terima kasih! Tidak perlu menentukan jalur absolut dengan cara ini.
Michael van Rooijen
Ini sangat bagus. Juga dengan cara itu saya dapat memiliki kunci tertentu, bukan id_rsa default. Tidak hanya itu, server saya pemilih dan kurang lebih Anda harus segera melakukannya dengan benar yang gagal jika Anda memasukkan kata sandi. Jadi saya menggunakan PasswordAuthentication nojuga.
Alexis Wilke
4
Lebih baik memilikinya di remote daripada menyembunyikannya di file konfigurasi seperti ini: ketika Anda memiliki semuanya di satu tempat, Anda tidak akan pernah bisa melupakan nomor port yang berbeda dan Anda cukup menyalin dan menempel URL untuk digunakan orang lain.
MarcH
1
@ MarkH Sebenarnya tergantung pada situasinya. Saya suka menggunakan nomor port acak pada instance VPS saya. Memiliki port di dalam file konfigurasi adalah salah satu cara Anda dapat menahan informasi itu dari kolaborator (Saat itulah Anda memiliki beberapa remote, host remote penyebaran berbeda dari repo Kode Sumber internal).
Ragunath Jawahar
@ RagunathJawahar Saya tidak berpikir menggunakan nomor port acak adalah kasus penggunaan yang sangat umum.
MarcH
29

Jawaban terbaik tidak berhasil untuk saya. Saya butuhkan ssh://dari awal.

# 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
sumber
17

Bagi Anda yang mengedit ./.git/config

[remote "external"]                                                                                                                                                                                                                                                            
  url = ssh://[email protected]:11720/aaa/bbb/ccc                                                                                                                                                                                                               
  fetch = +refs/heads/*:refs/remotes/external/* 
Evan Carroll
sumber
1
Sempurna. Namun satu pertanyaan, bagaimana saya melakukan ini untuk submodula? Sepertinya tidak berhasil.
m4l490n
11

Daripada menggunakan ssh://awalan protokol, Anda dapat terus menggunakan formulir URL konvensional untuk mengakses git melalui SSH, dengan satu perubahan kecil. Sebagai pengingat, URL konvensional adalah :

git@host:path/to/repo.git

Untuk menentukan port alternatif, letakkan tanda kurung di sekeliling user@hostbagian, termasuk port:

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

Tetapi jika perubahan port hanya bersifat sementara, Anda dapat memberitahu git untuk menggunakan perintah SSH yang berbeda alih-alih mengubah URL jarak jauh repositori Anda:

export SSH_GIT_COMMAND='ssh -p port'
git clone git@host:path/to/repo.git # for instance
Konrad Rudolph
sumber
2
Menambahkan tanda kurung di sekitar git @ host: port bekerja dengan baik untuk saya. Saya menggunakan gitlab dan pada server itu memerlukan port non-standar tetapi saya juga tidak dapat menggunakan path absolut ke repo (saya tidak tahu itu). Terima kasih
Thomas Le
1
Ini sepertinya metode yang paling fleksibel bagi saya karena mendukung jalur relatif dan tidak mengandalkan konfigurasi ssh
user2882096