ProxyCommand của ssh_config có thể chạy lệnh cục bộ trước khi kết nối với máy từ xa không?


11

Trước khi tôi có thể kết nối với một máy từ xa cụ thể, tôi phải chạy một lệnh cục bộ nhất định. Vì vậy, thay vì ssh me@remote.machinetôi phải làm

local_command
ssh me@remote.machine

Tôi muốn tự động hóa việc này để tôi chỉ phải làm ssh remote.machine.

Tôi biết rằng tôi có thể đạt được điều này ở cấp độ vỏ bằng cách tạo sshtập lệnh riêng của mình để gọi /usr/bin/ssh, nhưng tôi có thể thực hiện bằng tùy chọn ProxyCommandssh_config không?

Theo như tôi hiểu, tôi cần một cái gì đó như

Host remote.machine
    ProxyCommand local_command; ssh me@remote.machine

trong ~/.ssh/configtập tin của tôi , nhưng không chính xác điều này tất nhiên vì nó là thông tư!

Câu trả lời:


9

Nếu sử dụng ProxyCommand, bạn phải sử dụng một cái gì đó như /usr/bin/ncđể kết nối máy chủ.

Để gọi lệnh của bạn trước khi kết nối, bạn cần sử dụng sh -c "command list"để hợp nhất hai lệnh làm một.

Host remote.machine
    ProxyCommand sh -c "local_command; /usr/bin/nc %h %p"

HƠN:

Nếu bạn local_commandquá phức tạp, bạn có thể sử dụng tập lệnh:

cat my_connect.sh
#!/bin/bash

local_command
/usr/bin/nc "$1" "$2"

Cấu hình ssh trở thành:

Host remote.machine
        ProxyCommand /path_to_my_connect.sh %h %p

Cuối cùng, bạn có thể thêm proxy của riêng mình vào /usr/bin/nc


1

Sử dụng ví dụ từ trang bạn liên kết:

ProxyCommand /usr/bin/nc -X connect -x 192.0.2.1:8080 %h %p

Gọi nc (netcat) để kết nối với proxy (proxy chạy trên 192.0.2.1:8080) và chuyển% h và% p vào lệnh ssh (% h = hostname,% p = port)

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.