2009-10-13 22 views
100

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).Sử dụng kho lưu trữ từ xa có cổng không chuẩn

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://[email protected]:4019/var/cache/git/project.git' 

git config địa phương của tôi là as follows: (. Các cổng và máy chủ đang giữ chỗ cho các cổng thực tế và máy chủ)

[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 

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

+8

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

+4

@Kzqai nhận xét là quan trọng. tức là nếu bạn làm 'git remote set-url origin [email protected]: 443/yourname/yourrepo /' nó sẽ không hoạt động. nhưng, nếu bạn thực hiện 'git remote set-url origin ssh: //[email protected]: 443/yourname/yourrepo /' điều này sẽ làm việc – oak

+0

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

Trả lời

90

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

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 
+3

Cấu hình SSH có thể là một giải pháp, nhưng điều này khiến tôi quan tâm, bởi vì người đàn ông git-push 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, nó có thể là một vấn đề git/ssh phiên bản cấu hình vì tôi đã cố gắng đẩy đến một địa chỉ ssh: // fake @ localhost: 333/giả mạo và nhận (như mong đợi) "cổng 333: Kết nối bị từ chối ". –

+28

Chú ý bất cứ ai vẫn cần điều này. Cú pháp là 'git clone ssh: // username @ tên máy chủ: 333/~/repo' 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 @ tên máy chủ: 333/path/to/repo' cho một đường dẫn tuyệt đối –

6

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

 
Host git.host.de 
    Port 4019 

Sau đó, xác định chỉ git.host.de mà không có một số cổng.

9

Điều này tránh vấn đề của bạn chứ không phải sửa chữa trực tiếp, nhưng tôi muốn khuyên bạn nên thêm một file ~/.ssh/config 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à mọi thứ sẽ hoạt động.

103

SSH phương pháp truy cập git dựa có thể được quy định tại <repo_path>/.git/config bằng cách sử dụng một địa chỉ URL đầy đủ hoặc một cú pháp SCP-như, theo quy định tại http://git-scm.com/docs/git-clone:

phong cách URL:

url = ssh://[[email protected]]host.xz[:port]/path/to/repo.git/ 

SCP phong cách:

url = [[email protected]]host.xz:path/to/repo.git/ 

Lưu ý rằng phong cách SCP không cho phép thay đổi cổng trực tiếp, thay vào đó, hãy dựa vào máy chủ lưu trữ ssh_config definit ion trong bạn ~/.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 SCP-phong cách của bạn URI trong <repo_path>/.git/config như:

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

Soooooo ... tất cả những gì thực sự cần là thêm ssh: // ở phía trước của url, có thể. – Kzqai

+0

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

+0

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 tệp/tới/copy người dùng @ host: path/to/copy/file/to' – Drew

19

Hãy thử điều này

git clone ssh://[email protected]:11111/home/git/repo.git 
+1

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

Các vấn đề liên quan