Có, sử dụng ProxyCommand
trong cấu hình SSH của bạn.
Tạo tệp cấu hình SSH trong thư mục chính của bạn (trừ khi bạn muốn tạo toàn bộ hệ thống này) , ~/.ssh/config
:
Host unibroker # Machine B definition (the broker)
Hostname 12.34.45.56 # Change this IP address to the address of the broker
User myusername # Change this default user accordingly
# (`user@unibroker` can overwrite it)
Host internalmachine # Machine A definition (the target host)
ProxyCommand ssh -q unibroker nc -q0 hostname.or.IP.address.internal.machine 22
Bây giờ bạn có thể tiếp cận trực tiếp với Máy A bằng cách sử dụng
ssh user@internalmachine
Cũng lưu ý rằng bây giờ bạn có một tên mục tiêu máy chủ SSH duy nhất cho nó, bạn cũng có thể sử dụng tên này trong các ứng dụng khác. Ví dụ:
SCP để sao chép tập tin.
scp somefile user@internalmachine:~/
Trong các ứng dụng GUI của bạn:
sử dụng sftp://user@internalmachine/
làm vị trí để duyệt trên máy.
Dựa trên KDE (Cá heo): sử dụng fish://user@internalmachine/
Ghi chú
Thay đổi hostname.or.IP.address.internal.machine
và cổng ( 22
) sang máy bạn muốn tiếp cận như thể bạn muốn từ unibroker
máy.
Tùy thuộc vào các phiên bản netcat trên máy chủ unibroker, -q0
tùy chọn phải được bỏ qua. Về xác thực; về cơ bản bạn đang thiết lập hai kết nối SSH từ máy trạm của bạn. Điều này có nghĩa là cả máy chủ unibroker và máy chủ lưu trữ nội bộ đều được xác minh / xác thực lần lượt từng cái (đối với cả xác thực khóa / mật khẩu và xác minh khóa máy chủ).
Giải trình
Cách tiếp cận này của việc sử dụng ProxyCommand
và 'netcat' chỉ là một cách để làm điều đó. Tôi thích điều này, bởi vì máy khách SSH của tôi nói chuyện trực tiếp với máy đích để tôi có thể xác minh khóa máy chủ từ máy khách của mình và tôi có thể sử dụng xác thực khóa chung của mình mà không cần sử dụng khóa khác trên nhà môi giới.
Mỗi Host
định nghĩa bắt đầu của một phần lưu trữ mới. Hostname
là tên máy chủ đích hoặc địa chỉ IP của máy chủ đó. User
là những gì bạn sẽ cung cấp như là một phần của người dùng ssh user@hostname
.
ProxyCommand
sẽ được sử dụng làm đường ống đến máy mục tiêu. Bằng cách sử dụng SSH cho máy đầu tiên và trực tiếp thiết lập một 'netcat' ( nc
) đơn giản cho mục tiêu từ đó, về cơ bản, đây chỉ là một văn bản chuyển tiếp đến máy bên trong từ nhà môi giới giữa những người đó. Các -q
tùy chọn là để tắt bất kỳ đầu ra nào (chỉ là một sở thích cá nhân).
Đảm bảo rằng bạn đã cài đặt netcat trên trình môi giới (thường có sẵn theo mặc định trên Ubuntu) - netcat-openbsd hoặc netcat-truyền thống .
Lưu ý rằng bạn vẫn đang sử dụng SSH với mã hóa hai lần tại đây. Trong khi kênh netcat là bản rõ, máy khách SSH trên PC của bạn sẽ thiết lập một kênh được mã hóa khác với máy đích cuối cùng.