sử dụng lệnh proxy ssh dựa trên mạng hiện tại


2

Tôi muốn có quyền truy cập vào máy gia đình của tôi từ máy tính xách tay của tôi từ nhà hoặc văn phòng. Ở văn phòng, tôi phải sử dụng cổng. Đối với điều này, tôi đã thêm một proxycommand nhập vào của tôi .ssh/config hoạt động tốt từ văn phòng. Tuy nhiên, nếu tôi muốn sử dụng nó ở nhà, tôi không muốn phụ thuộc vào cổng văn phòng. Có cách nào để tự động hóa điều này?

Câu trả lời:


3

Có và không.

Đầu tiên, không. Không có gì bạn có thể đặt trong tệp ~ / .ssh / config của mình, điều này sẽ khiến các cài đặt khác nhau hoạt động dựa trên các yếu tố bên ngoài như mạng bạn đang ở trên hoặc nếu một tệp tồn tại, v.v. Tệp cấu hình của SSH là một tệp tĩnh.

Bây giờ là có. Bạn có thể "hack" một cái gì đó. Nó có thể sẽ không đẹp một cách khó tin, nhưng nó có thể hoạt động.

Hãy xem xét cách ProxyCommand hoạt động. Nó thực thi một dòng lệnh và thay thế trong một số chuỗi nhất định, kiểu printf. Dòng lệnh đó là nơi bạn có thể đặt thông tin đăng nhập của bạn. Ví dụ: bạn có thể có một cái gì đó như thế này trong máy tính xách tay của bạn để sử dụng tại văn phòng:

host athome
    ProxyCommand ssh -x -a -q gateway nc athome.dyndns.org 22

Lệnh khởi chạy một ssh lệnh kết nối với gateway và trên máy chủ đó ra mắt netcat để kết nối với thực tế Nơi Đến. Chà, thay vì chạy ssh, bạn có thể sử dụng tập lệnh shell. Ví dụ, với điều này trong của bạn .ssh/config tập tin:

host athome
    ProxyCommand bin/customconnect athome.dyndns.org

Bạn có thể tạo một ~/bin/customconnect kịch bản:

#!/bin/sh

if /sbin/ifconfig -a | grep -q 'inet 192\.168\.'; then
        nc $1 22
else
        ssh -x -a -q gateway nc $1 22
fi

Sau đó, giả sử mạng của bạn ở nhà bắt đầu bằng 192.168 và mạng của bạn tại văn phòng thì không, ProxyCommand thích hợp sẽ được chọn theo kịch bản .

Nếu bạn muốn chức năng động khác, như chọn một tên máy chủ khác dựa trên mạng, rõ ràng bạn cũng có thể thêm tên này vào tập lệnh.

Lưu ý rằng giải pháp này không phải là không có một số chi phí. Thông thường, SSH khởi chạy ProxyCommand của bạn trực tiếp. Nếu bạn sử dụng giải pháp này, sẽ có thêm một quy trình chơi cho mỗi kết nối khi ssh khởi chạy một shell, từ đó khởi chạy một quy trình khác.

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.