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://[email protected]: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://[email protected]: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?

brainfck
sumber
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 [email protected]:443/yourname/yourrepo/tidak akan berhasil. tetapi, jika Anda melakukan git remote set-url origin ssh://[email protected]: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
CB Bailey
sumber
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/
jdpf
sumber
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://[email protected]:11111/home/git/repo.git
Ricky
sumber
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.

Peter
sumber
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.

Greg Hewgill
sumber