Sử dụng kho lưu trữ từ xa với cổng không chuẩn


125

Tôi đang thiết lập dự án git cục bộ của mình cho một kho lưu trữ từ xa. Kho lưu trữ từ xa đang được phục vụ trên một cổng không chuẩn (4019).

Nhưng nó không hoạt động. Thay vào đó tôi nhận được thông báo lỗi sau:

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'

Cấu hình git cục bộ của tôi như sau :

[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

(Cổng và máy chủ lưu trữ là trình giữ chỗ cho cổng và máy chủ thực tế.)

Có gì sai với cấu hình git của tôi?


8
Có vẻ như nếu bạn không đặt ssh://trước url một cách rõ ràng , nó nghĩ rằng đó là một định dạng khác. vậy ssh://example.com:444/etc/là / etc / on example.com qua cổng 44. Trong khi đó example.com:444/etc/là / 444 / etc / on example.com qua cổng 22.
Kzqai

5
@Kzqai nhận xét là quan trọng. tức là nếu bạn làm git remote set-url origin git@altssh.bitbucket.org:443/yourname/yourrepo/nó sẽ không làm việc. nhưng, nếu bạn làm git remote set-url origin ssh://git@altssh.bitbucket.org:443/yourname/yourrepo/điều này sẽ hoạt động
sồi

Đối với Google-fu - Tôi gặp vấn đề này với máy phát điện khi tôi đặt nó thành cổng không mặc định là 2222. Bây giờ, đã được sắp xếp!
dùng3791372

Câu trả lời:


116

Nếu bạn đặt một cái gì đó như thế này trong .ssh/config:

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

sau đó bạn sẽ có thể sử dụng cú pháp cơ bản:

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

4
Cấu hình SSH có thể là một cách giải quyết, nhưng điều này khiến tôi quan tâm, bởi vì người đàn ông git-đẩy nói rằng định dạng url ssh được chấp nhận là ssh: // [user @] host.xz [: port] /path/to/repo.git /
gnud

1
Tôi không chắc chắn, đó có thể là sự cố phiên bản git / ssh cấu hình vì tôi đã cố gắng đẩy sang ssh: // fake @ localhost: 333 / địa chỉ giả và nhận (như mong đợi) "cổng 333: Kết nối bị từ chối".
CB Bailey

35
Chú ý bất cứ ai vẫn cần điều này. Cú pháp git clone ssh://username@hostname:333/~/repodành cho một đường dẫn liên quan đến thư mục chính của bạn hoặc git clone ssh://username@hostname:333/path/to/repocho một đường dẫn tuyệt đối
Brandon Wamboldt

trên máy windows: c: / windows / system32 / driver / etc / hosts để đặt tên máy chủ nếu cần (ví dụ: máy ảo / máy chủ)
user3791372

Làm thế nào điều này có thể được thực hiện nếu tôi có IP và không phải tên máy chủ? Tôi hỏi vì chúng tôi chưa liên kết tên máy chủ của chúng tôi với ip của chúng tôi.
ThisIsNotAnId

129

Phương pháp truy cập git dựa trên SSH có thể được chỉ định <repo_path>/.git/configbằng cách sử dụng URL đầy đủ hoặc cú pháp giống SCP, như được chỉ định trong http://git-scm.com/docs/git-clone :

Kiểu URL:

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

Phong cách SCP:

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

Lưu ý rằng kiểu SCP không cho phép thay đổi cổng trực tiếp, thay vào đó dựa vào ssh_configđịnh nghĩa máy chủ trong ~/.ssh/config: như:

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

Sau đó, bạn có thể kiểm tra trong một vỏ với:

ssh my_git_host

và thay đổi URI kiểu SCP của bạn <repo_path>/.git/configthành:

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

1
Soooooo ... có lẽ tất cả những gì thực sự cần thiết là thêm ssh: // trước url, có lẽ.
Kzqai

1
Không nhận ra bạn có thể chỉ định các url ssh hoặc scp (mặc định) không cho phép số cổng. Tốt để biết.
Powerlord

1
scp thực sự cho phép số cổng (nhưng phím tùy chọn phải là vốn P):scp -P 2020 file/to/copy user@host:path/to/copy/file/to
Drew

1
Đối với tôi nó là đủ để thêm ssh://vào của tôi url. Nếu giao thức bị thiếu thì git sử dụng cổng mặc định : 22. Cảm ơn bạn.
Marek Podyma

28

Thử cái này

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

1
Xin chào Ricky, nó đã làm việc với tôi với cú pháp git clone ssh: // user @ machine: port / path-to-repo, nơi bạn viết máy phải là người dùng, cảm ơn
rtrujillor

9

Điều này tránh được sự cố của bạn thay vì khắc phục trực tiếp, nhưng tôi khuyên bạn nên thêm một ~/.ssh/configtệp và có một cái gì đó như thế này

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

sau đó bạn có thể có

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

và bạn cũng có thể ssh git_hostscp git_host ...và tất cả mọi thứ sẽ làm việc ra.


7

SSH không sử dụng :cú pháp khi chỉ định một cổng. Cách dễ nhất để làm điều này là chỉnh sửa~/.ssh/config tệp và thêm:

Máy chủ git.host.de
  Cổng 4019

Sau đó chỉ định git.host.demà không cần số cổng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.