Menggunakan repositori jarak jauh dengan port non-standar


125

Saya menyiapkan proyek git lokal saya untuk repositori jarak jauh. Repositori jarak jauh sedang disajikan pada port non-standar (4019).

Tapi itu tidak berhasil. Sebagai gantinya saya mendapatkan pesan kesalahan berikut:

ssh: connect to host git.host.de:4019 port 22: Connection refused
fatal: The remote end hung up unexpectedly
error: failed to push to 'ssh://root@git.host.de:4019/var/cache/git/project.git'

Konfigurasi git lokal saya adalah sebagai berikut :

[core]
  repositoryformatversion = 0
  filemode = true
  bare = false
  logallrefupdates = true
[remote "origin"]
  url = ssh://root@git.host.de:4019/var/cache/git/project.git
  fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
  remote = origin
  merge = refs/heads/master

(Port dan host adalah placeholder untuk port dan host sebenarnya.)

Apa yang salah dengan konfigurasi git saya?


8
Sepertinya jika Anda tidak meletakkannya ssh://di depan url secara eksplisit , sepertinya itu adalah format yang berbeda. begitu ssh://example.com:444/etc/juga / etc / di example.com melalui port 44. Sedangkan example.com:444/etc// 444 / etc / di example.com melalui port 22.
Kzqai

5
Komentar @zai itu penting. yaitu jika Anda melakukannya git remote set-url origin git@altssh.bitbucket.org:443/yourname/yourrepo/tidak akan berhasil. tetapi, jika Anda melakukan git remote set-url origin ssh://git@altssh.bitbucket.org:443/yourname/yourrepo/ini akan berhasil
oak

Untuk Google-fu - Saya mengalami masalah ini dengan phabricator ketika saya menyetelnya ke port non-default 2222. Sekarang, beres!
pengguna3791372

Jawaban:


116

Jika Anda meletakkan sesuatu seperti ini di .ssh/config:

Host githost
HostName git.host.de
Port 4019
User root

maka Anda harus dapat menggunakan sintaks dasar:

git push githost:/var/cache/git/project.git master

4
Konfigurasi SSH mungkin bisa menjadi solusinya, tetapi ini membuat saya tertarik, karena man git-push mengatakan bahwa format url ssh yang diterima adalah ssh: // [user @] host.xz [: port] /path/to/repo.git /
gnud

1
Saya tidak yakin, ini mungkin masalah konfigurasi versi git / ssh karena saya mencoba mengirim ke ssh: // fake @ localhost: 333 / alamat palsu dan mendapatkan (seperti yang diharapkan) "port 333: Sambungan ditolak".
CB Bailey

35
Perhatian siapa saja yang masih membutuhkan ini. Sintaksnya adalah git clone ssh://username@hostname:333/~/repountuk jalur relatif ke direktori beranda Anda atau git clone ssh://username@hostname:333/path/to/repountuk jalur absolut
Brandon Wamboldt

pada mesin windows: c: / windows / system32 / drivers / etc / hosts untuk mengatur nama host jika diperlukan (misalnya mesin / server virtual)
user3791372

Bagaimana ini bisa dilakukan jika saya memiliki IP dan bukan nama host? Saya bertanya karena kami belum menghubungkan nama host kami ke ip kami.
ThisIsNotAnId

130

Metode akses git berbasis SSH dapat ditentukan dalam <repo_path>/.git/configmenggunakan URL lengkap atau sintaks seperti SCP, seperti yang ditentukan di http://git-scm.com/docs/git-clone :

Gaya URL:

url = ssh://[user@]host.xz[:port]/path/to/repo.git/

Gaya SCP:

url = [user@]host.xz:path/to/repo.git/

Perhatikan bahwa gaya SCP tidak mengizinkan perubahan port langsung, sebagai gantinya mengandalkan ssh_configdefinisi host di ~/.ssh/configseperti:

Host my_git_host
HostName git.some.host.org
Port 24589
User not_a_root_user

Kemudian Anda dapat menguji di shell dengan:

ssh my_git_host

dan ubah URI gaya SCP Anda <repo_path>/.git/configsebagai:

url = my_git_host:path/to/repo.git/

1
Soooooo ... yang benar-benar dibutuhkan adalah menambahkan ssh: // di depan url, mungkin.
Kzqai

1
Tidak menyadari bahwa Anda dapat menentukan url ssh atau scp (default) tidak mengizinkan nomor port. Senang mendengarnya.
Powerlord

1
scp sebenarnya mengizinkan nomor port (tetapi tombol opsinya harus kapital P):scp -P 2020 file/to/copy user@host:path/to/copy/file/to
Drew

1
Bagi saya itu cukup untuk ditambahkan ssh://ke saya url. Jika protokol hilang maka penggunaan git port default: 22. Terima kasih.
Marek Podyma

28

Coba ini

git clone ssh://user@32.242.111.21:11111/home/git/repo.git

1
Hai Ricky, ini berhasil untuk saya dengan sintaks git clone ssh: // user @ machine: port / path-to-repo, di mana Anda menulis mesin harus menjadi pengguna, terima kasih
rtrujillor

9

Ini menghindari masalah Anda daripada memperbaikinya secara langsung, tetapi saya akan merekomendasikan menambahkan ~/.ssh/configfile dan memiliki sesuatu seperti ini

Host git_host
HostName git.host.de
User root
Port 4019

maka kamu dapat memiliki

url = git_host:/var/cache/git/project.git

dan Anda juga bisa ssh git_hostdan scp git_host ...dan semuanya akan bekerja keluar.


7

SSH tidak menggunakan :sintaks saat menentukan port. Cara termudah untuk melakukannya adalah dengan mengedit ~/.ssh/configfile Anda dan menambahkan:

Host git.host.de
  Port 4019

Kemudian tentukan saja git.host.detanpa nomor port.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.