Chuyển tiếp SSH qua đường hầm SSH


30

Hoàn cảnh của tôi :

Tôi (localhost) -> Máy chủ A (ip: 100.100.100.100) => (máy chủ B (ip: 192.168.25.100), máy chủ ....)

Tôi có thể SSH vào máy chủ vì nó có một ip thực sự nếu sau đó tôi muốn kết nối với máy chủ b, tôi sẽ ssh máy chủ b với ip đó (192.168.25.100)

thí dụ:

từ máy tính của tôi:

ssh user@100.100.100.100

sau đó trong 100.100.100.100,

ssh user@192.168.25.100

điều này sẽ đưa tôi đến máy chủ B với ssh

Nếu tôi muốn kết nối trực tiếp với máy chủ b thì sao? Làm thế nào tôi có thể làm điều đó?

thí dụ:

từ oc của tôi:

ssh@192.168.25.100

tôi đã thử như sau:

ssh -L 22:localhost:22 user@100.100.100.100

không thành công

Câu trả lời:


30

Vấn đề của bạn là ràng buộc người nghe với localhost: 22; đã có một sshd lắng nghe về điều đó. Đường hầm kết nối ssh thông qua kết nối ssh là hoàn toàn hợp pháp và tôi làm điều đó mọi lúc, nhưng bạn cần chọn các cổng không sử dụng cho người nghe chuyển tiếp của bạn.

Thử

me% ssh user@100.100.100.100 -L 2201:192.168.25.100:22

sau đó

me% ssh localhost -p 2201

Bạn nên kết thúc trên máy chủ B (trừ khi có gì đó đã ràng buộc với tôi: 2201, trong trường hợp đó, chọn một cổng khác).


Cảm ơn đã trả lời nhanh chóng! tuy nhiên, nó hoạt động như thế nào, làm thế nào tôi có thể chuyển tiếp tất cả các kết nối thay vì chỉ ssh (22)?
tom91136

1
Đó là một VPN toàn diện mà bạn đang tìm kiếm, không chỉ là chuyển tiếp cổng. Có một bài viết về cách thực hiện vpn-over-ssh tại bodhizazen.net/Tutorials/VPN-Over-SSH , nhưng nó yêu cầu truy cập root từ xa thông qua ssh trên A. Hoặc bạn có thể xem xét OpenVPN hoặc các giải pháp VPN khác, nhưng một lần nữa, bạn sẽ cần đặc quyền trên A để thực hiện những công việc này.
MadHatter hỗ trợ Monica

cảm ơn rất nhiều, một điều cuối cùng, nếu tôi chỉ muốn kết nối với A thì sao?
tom91136

me% ssh user@100.100.100.100; không phải chúng ta đã bao gồm điều đó sao? hoặc bạn có nghĩa là "điều gì sẽ xảy ra nếu tôi muốn VPN toàn diện thành A?", trong trường hợp đó câu trả lời của tôi là viết tắt.
MadHatter hỗ trợ Monica

1
Đối với những người muốn VPN qua SSH, không có quyền truy cập root trên máy chủ nhưng nó có Python, hãy thử sshript .
André Paramés

23

Bạn không phải sử dụng chuyển tiếp cổng ssh để ssh vào máy tính nội bộ thông qua proxy. Bạn có thể sử dụng tính năng ssh để thực thi lệnh trên máy chủ đầu tiên bạn kết nối để ssh vào máy tính thứ 3.

ssh -t user@100.100.100.100 ssh user@192.168.25.100

Các -tlực lượng tùy chọn ssh để phân bổ một pseudo-tty để bạn có thể chạy một lệnh tương tác.

Điều này có thể làm việc với các phím ssh là tốt. Nếu bạn có khóa riêng và khóa chung trên máy A và khóa chung của bạn trong các tệp khóa được ủy quyền trên máy B và C, thì bạn có thể sử dụng -Atùy chọn để chuyển tiếp kết nối tác nhân xác thực.


10

Tôi đã sử dụng một giải pháp khác nhau. Tôi đã sử dụng một ProxyCommandtùy chọn (ở đây trong ~/.ssh/config):

Host myinsidehost1 myinsidehost2 myinsidehost3
ProxyCommand ssh externalhost ssh %h sshd -i

Điều này không thiết lập bất kỳ đường hầm port-to-port nào, thay vào đó là đường hầm ssh bằng cách sử dụng stdin / out tiêu chuẩn. Phương pháp này có một nhược điểm là thực sự có ba kết nối ssh để xác thực. Nhưng để kết nối với máy chủ nội bộ, bạn chỉ cần gõ:

ssh myinsidehost2

... vì vậy bạn không cần quan tâm đến việc chọn bất kỳ IP nào cho đường hầm đó.


1
Đây là loại xếp chồng SSH duy nhất mà tôi thấy hoạt động. Tôi đã được thử corkscrewhoặc nc( netcat) nhưng không có công việc nào liền mạch như thế này.
Phương Nguyễn

7

Theo trang man ssh, ProxyCommand là phương thức đúng

cú pháp là:

ProxyCommand ssh -W %h:%p user@jumphost 2> /dev/null

Tôi không chắc chắn -Wtùy chọn tồn tại khi câu hỏi này đã được trả lời. Nhưng với các phiên bản mới hơn của ứng dụng khách ssh, tôi đồng ý rằng sự kết hợp ProxyCommand-Wlà phương thức ưa thích. Có thể thêm một số bối cảnh hiển thị cả cách nó có thể được sử dụng trên dòng lệnh cũng như ví dụ về một phần cho .ssh/config.
kasperd 21/07/2015

Bất kỳ ý tưởng nào để tìm thông tin thay đổi / thông tin phiên bản cho chúng tôi biết phiên bản SSH nào có -Wlệnh và phiên bản nào không? Một chút googling đã không mang lại câu trả lời nhanh chóng cho tôi ...
dmh

-Wđã được giới thiệu với OpenSSH 5.4, được phát hành vào năm 2010. Vì vậy, câu trả lời là có @kasperd
0xC0000022L

7

Kể từ OpenSSH 7.3 (cuối năm 2016), cách dễ nhất là cài đặt ProxyJump . Trong của bạn ~/.ssh/config:

Host B
  ProxyJump A

Hoặc trên dòng lệnh , -J B.

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.