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.