Chỉ định cổng SSH cho Git


17

Tôi sử dụng cổng ssh không chuẩn (1234) cho hầu hết các máy chủ tôi kết nối. Vì vậy, trong tập tin cấu hình ssh của tôi, tôi có:

Port 1234

Nhưng github.com sử dụng cổng 22. Khi tôi cố gắng kết nối với github, rõ ràng là nó cố gắng sử dụng cổng 1234. Ngay bây giờ tôi phải chỉnh sửa cấu hình ssh của mình để mọi thứ hoạt động.

Đây là một đoạn trong cấu hình git của tôi:

[remote "origin"]
        url = git@github.com:asdf/asdf.git

Câu trả lời:


26

Chỉ cần xem cách thiết lập chính xác tệp ~ / .ssh / config của bạn (man 5 ssh_config). Bạn có thể chỉ định các cài đặt khác nhau cho các máy chủ khác nhau một cách dễ dàng. Để giải quyết vấn đề của bạn, bạn sẽ đặt

Host github.com
Port 22
Host *
Port 1234

Hãy xem trang hướng dẫn ssh_config, nó giải thích mọi thứ bạn cần biết trên một vài trang đầu tiên.


24

Thiết lập một phần trong ~/.ssh/configlà một giải pháp tốt, nhưng có thể hữu ích khi biết về một phương pháp khác.

Cú pháp giống như scp phổ biến của user@host:pathkhông có vị trí cho một cổng, nhưng Git cũng hỗ trợ ssh:lược đồ URL có thể được sử dụng để chỉ định cổng:

ssh://git@github.com:22/asdf/asdf.git

Mặc dù ssh:URL hỗ trợ đặc tả cổng, nhưng nó không hỗ trợ các đường dẫn tương đối (ví dụ: không có tương đương trực tiếp với cú pháp giống như scp của user@host:pathnơi pathkhông bắt đầu bằng dấu gạch chéo).

GitHub xử lý các đường dẫn tương đối và tuyệt đối giống hệt nhau, vì vậy nó hoạt động với chúng, nhưng nó có thể không hoạt động đối với tất cả các kho Git dựa trên SSH. Đối với lưu trữ dựa trên SSH đơn giản, bạn có thể cần phải chèn /home/username/hoặc /Users/username/khi chuyển từ đường dẫn tương đối sang đường dẫn tuyệt đối. Một số hệ thống lưu trữ có thể không xử lý các đường dẫn tuyệt đối (mặc dù tôi có xu hướng gọi sự thiếu hỗ trợ như vậy là một lỗi).


Cảm ơn Chris. Tôi thích đường dẫn này nhất vì nó không yêu cầu mucking với cấu hình ssh của tôi. Cảm ơn!
Phường James

1
fyi, nếu máy chủ có repo "trần" thì chuỗi kết nối sẽ trông giống hơn ssh://git@github.com:22/asdf/asdf(không có .git)
Xeoncross

3

(Yêu nó khi tôi tìm thấy câu trả lời ngay sau khi hỏi nó.)

Tôi đã sửa đổi cấu hình ssh của mình để chỉ định cổng cho mỗi máy chủ thay vì là cài đặt chung:

Host asdf.com
    Port 1234

Host github.com
    User git
    Hostname github.com
    Port 22

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.