git từ xa thêm với cổng SSH khác


336

Trong Git, làm cách nào tôi có thể thêm máy chủ gốc từ xa khi máy chủ của tôi sử dụng cổng SSH khác?

git remote add origin ssh://user@host/srv/git/example

Câu trả lời:


573

Bạn chỉ có thể làm điều này:

git remote add origin ssh://user@host:1234/srv/git/example

1234 là cổng ssh đang được sử dụng


10
Cám ơn. Chỉ là phần bổ sung: trong phần đường dẫn, sử dụng đường dẫn tuyệt đối, không phải là đường dẫn tương đối đến thư mục nhà của người dùng ...
Snicolas

@Snicolas: Tại sao người ta không sử dụng đường dẫn tương đối?
Hannes

12
@Sincolas Nó hoạt động nếu bạn có repo trong thư mục nhà của người dùng: /home/someuser/git-repose/example.git -> ssh: // someuser @ <host>: <port> / ~ / git-repos / example.git . btw: bạn nhận được một <name> .git repo bởi git clone --bare <adress>
MartinL

@Jameo Đó một con đường tuyệt đối.
igorw

48
Lưu ý rằng nó sẽ không hoạt động nếu bạn loại bỏ giao thức. tức là nếu bạn thử cách sau, nó sẽ không hoạt động. git remote add origin user@host:1234/srv/git/example
Bijay Rungta

137

Bạn cần chỉnh sửa tập tin ~ / .ssh / config của bạn. Thêm một cái gì đó như sau:

Host example.com
    Port 1234

Một tìm kiếm nhanh trên google cho thấy một vài tài nguyên khác nhau giải thích nó chi tiết hơn tôi.


16
Nó đã làm việc cho tôi. Tôi thích cách tiếp cận này tốt hơn là dán nó trong điều khiển từ xa. Cảm ơn! Không cần chỉ định một đường dẫn tuyệt đối theo cách này.
Michael van Rooijen

Điều này làm việc tuyệt vời. Ngoài ra, theo cách đó tôi có thể có một khóa cụ thể thay vì id_rsa mặc định. Không chỉ vậy, máy chủ của tôi rất kén chọn và ít nhiều bạn phải có nó đủ nhanh mà không thành công nếu bạn bao gồm mật khẩu. Vì vậy, tôi sử dụng PasswordAuthentication nolà tốt.
Alexis Wilke

4
Tốt hơn là để nó ở xa hơn là ẩn nó trong tệp cấu hình như thế này: khi bạn có mọi thứ ở một nơi, bạn không bao giờ có thể quên số cổng khác nhau và bạn chỉ cần sao chép và dán URL cho bất kỳ ai khác sử dụng.
MarcH

1
@MarcH Nó thực sự phụ thuộc vào tình hình. Tôi thích sử dụng số cổng ngẫu nhiên trên các phiên bản VPS của mình. Có cổng bên trong tệp cấu hình là một cách bạn có thể giữ lại thông tin đó từ cộng tác viên (Đó là khi bạn có nhiều điều khiển từ xa, máy chủ từ xa triển khai khác với repo Mã nguồn bên trong).
Ragunath Jawahar

@RagunathJawahar Tôi không nghĩ sử dụng số cổng ngẫu nhiên là trường hợp sử dụng rất phổ biến.
MarcH

29

Câu trả lời tốt nhất không làm việc cho tôi. Tôi cần ssh://từ sự cầu xin.

# does not work
git remote set-url origin user@example.com:10000/aaa/bbbb/ccc.git
# work
git remote set-url origin ssh://user@example.com:10000/aaa/bbbb/ccc.git

17

Đối với những người bạn chỉnh sửa ./.git/config

[remote "external"]                                                                                                                                                                                                                                                            
  url = ssh://evanc@www.foo.com:11720/aaa/bbb/ccc                                                                                                                                                                                                               
  fetch = +refs/heads/*:refs/remotes/external/* 

1
Hoàn hảo. Một câu hỏi mặc dù, làm thế nào để tôi làm điều này cho mô hình con? Nó dường như không hoạt động.
m4l490n

10

Thay vì sử dụng ssh://tiền tố giao thức, bạn có thể tiếp tục sử dụng biểu mẫu URL thông thường để truy cập git qua SSH, với một thay đổi nhỏ. Xin nhắc lại, URL thông thường là :

git@host:path/to/repo.git

Để chỉ định một cổng thay thế, đặt dấu ngoặc quanh user@hostphần, bao gồm cả cổng:

[git@host:port]:path/to/repo.git

Nhưng nếu thay đổi cổng chỉ là tạm thời, bạn có thể yêu cầu git sử dụng lệnh SSH khác thay vì thay đổi URL từ xa của kho lưu trữ của bạn:

export SSH_GIT_COMMAND='ssh -p port'
git clone git@host:path/to/repo.git # for instance

2
Thêm dấu ngoặc vuông xung quanh git @ host: port hoạt động rất tốt đối với tôi. Tôi đang sử dụng gitlab và trên máy chủ đó yêu cầu một cổng không chuẩn nhưng tôi cũng không thể sử dụng đường dẫn tuyệt đối đến repo (tôi không biết điều đó). Cảm ơn bạn
Thomas Le

1
Đây có vẻ là phương pháp linh hoạt nhất đối với tôi vì nó hỗ trợ các đường dẫn tương đối và không phụ thuộc vào cấu hình ssh
user2882096
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.