Git trên cổng SSH tùy chỉnh


149

Nhà cung cấp VPS của tôi khuyên tôi nên để cổng SSH của mình đến số cổng tùy chỉnh mà họ gán nó theo mặc định (không phải 22). Vấn đề là trong khi tôi biết tôi có thể cung cấp số cổng khi tạo cấu hình từ xa, có vẻ như tôi không thể làm tương tự khi thực hiện một bản sao git. Tôi đang sử dụng gitolite vì vậy tôi sao chép các lệnh như sau:

git clone git@mydomain.com:gitolite-admin

Có cách nào để chuyển đổi điều này sang sử dụng số cổng ssh tùy chỉnh không?

Tôi cũng nên đề cập đến tôi đang chạy cygwin trên windows. Tôi đã thấy nhiều nơi nói rằng thêm cổng tùy chỉnh vào ~/.ssh/configtệp như

Host mydomain.com
    Port 12345

tuy nhiên trong cygwin, tập tin đó dường như không tồn tại.


8
Tên đường dẫn của tệp là .ssh/config(không conf) trong thư mục nhà của người dùng của bạn. Nó không cần thiết cho hoạt động cơ bản, và do đó không tồn tại theo mặc định. Bạn sẽ phải tạo ra nó. Hãy thử vim ~/.ssh/config(hoặc sử dụng trình soạn thảo văn bản đã cài đặt ưa thích của bạn) để mở / tạo nó.
Chris Johnsen


Trên Windows để đọc, /Users/USERX/.ssh/configbạn cần đặt HOMEmôi trường cục bộ của mình thành /Users/USERX.
kenorb

Câu trả lời:


327
git clone ssh://git@mydomain.com:[port]/gitolite-admin

Lưu ý rằng số cổng phải ở đó mà không có dấu ngoặc vuông: []


Điều này không hoạt động tuy nhiên việc chỉnh sửa Chris Johnsen cho phép xóa url khi sử dụng số cổng tùy chỉnh
ryanzec

6
:-) Nếu bạn hỏi tôi, cú pháp URL git là ô uế và ở trên là bình thường hơn
Christo

Tôi sẽ thừa nhận rằng cú pháp bạn đưa ra có tính mô tả hơn nhưng phải nhớ thêm vào số cổng tùy chỉnh là khó chịu. Định cấu hình số cổng đó và sau đó không phải nhớ điều đó dễ dàng hơn một chút nhưng với mỗi cổng của riêng họ (đó là lý do tại sao nó có thể được thực hiện theo cả hai cách) :)
ryanzec

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 clone git@mydomain.com:[port]/gitolite-admin
Bijay Rungta

1
trên Windows với plink, cú pháp làm việc dường như làgit clone ssh://git@mydomain.com:port/home/user/gitolite-admin
Roman Plášil

18

Câu trả lời trên là tốt và tuyệt vời, nhưng không rõ ràng cho người dùng git mới như tôi. Vì vậy, sau một số điều tra, tôi cung cấp câu trả lời mới này.

1 vấn đề với cách tập tin cấu hình ssh là gì?

Khi tệp cấu hình không tồn tại, bạn có thể tạo một tệp. Bên cạnh porttệp cấu hình có thể bao gồm tùy chọn cấu hình ssh khác: user IdentityFilev.v., tệp cấu hình trông giống như

Host mydomain.com
    User git
    Port 12345

Nếu bạn đang chạy linux, hãy cẩn thận, tệp cấu hình phải có sự cho phép nghiêm ngặt: đọc / ghi cho người dùng và không thể truy cập được bởi người khác

2 những gì về cách ssh url?

Thật tuyệt, điều duy nhất chúng ta nên biết là có hai cú pháp cho ssh url trong git

  • cú pháp chuẩn ssh://[user@]host.xz[:port]/path/to/repo.git/
  • cú pháp như scp [user@]host.xz:path/to/repo.git/

Theo mặc định, Gitlab và Github sẽ hiển thị url cú pháp giống như scp và chúng tôi không thể cung cấp cổng ssh tùy chỉnh. Vì vậy, để thay đổi cổng ssh, chúng ta cần sử dụng cú pháp chuẩn


14

Khi bạn muốn có một đường dẫn tương đối từ thư mục chính của bạn (trên bất kỳ UNIX nào), bạn sử dụng cú pháp lạ này:

ssh://[user@]host.xz[:port]/~[user]/path/to/repo

Ví dụ, nếu repo là ở /home/jack/projects/jillwebtrên máy chủ jill.comvà bạn đang đăng nhập như jackvới sshdlắng nghe trên cổng 4242:

ssh://jack@jill.com:4242/~/projects/jillweb

Và khi đăng nhập với tư cách jill(giả sử bạn có quyền truy cập tệp):

ssh://jill@jill.com:4242/~jack/projects/jillweb


Người đàn ông này đã bị bối rối trong một thời gian và chính xác là những gì tôi cần biết. Bạn có biết nơi này được ghi nhận ở đâu không?
Shaun Wilson

@Shaun Wilson Xin lỗi, tôi không nhớ lắm. Nhưng tôi phải mất một thời gian để tìm ra câu trả lời vì vậy tôi nghĩ rằng tôi nên chia sẻ nó ở đây, vì đây là một trong những ngõ cụt của tôi.
Daniel Santos

1
Cảm ơn! Đặc biệt nếu bạn đang sử dụng gói lưu trữ chia sẻ, phần ~ [người dùng] rất quan trọng. Điều này giúp tôi nhân bản repo của tôi.
Jim Wilson

2
@ShaunWilson thông số đường dẫn là một đường dẫn UNIX tiêu chuẩn. Nếu bạn đã đăng nhập vào hệ thống UNIX, ~ là một cách viết tắt cho thư mục chính, nó hữu ích cả để tiết kiệm nhiều thao tác gõ và vì thư mục chính có thể được đặt ở những nơi không chuẩn. Ở trên có thể không hoạt động trên một máy chủ Windows.
Samuel Åslund

@Samuel slund Cảm ơn bạn, tôi đã cập nhật câu trả lời của mình. Tôi thường quên Windows vì ... tôi cũng không có ý gì, nhưng thật kinh khủng khi so sánh. Không hơn không kém, đây là một sự khác biệt quan trọng.
Daniel Santos

9

.

GIT_SSH_COMMAND="ssh -oPort=1234 -i ~/.ssh/myPrivate_rsa.key" \ git clone myuser@myGitRemoteServer:/my/remote/git_repo/path

Điều này có thêm lợi thế là cho phép mọi tùy chọn phù hợp ssh khác (cổng, private.key, IPv6, thiết bị PKCS # 11, ...).

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.