Bisakah ProxyCommand ssh_config menjalankan perintah lokal sebelum menghubungkan ke mesin jarak jauh?

11

Sebelum saya dapat terhubung ke mesin remote tertentu saya harus menjalankan perintah lokal tertentu. Jadi alih-alih ssh [email protected]harus saya lakukan

local_command
ssh [email protected]

Saya ingin mengotomatisasi ini sehingga saya hanya perlu melakukannya ssh remote.machine.

Saya tahu bahwa saya dapat mencapai ini pada level shell dengan membuat sshskrip saya sendiri yang memanggil /usr/bin/ssh, tetapi bisakah saya melakukannya menggunakan opsi ProxyCommandssh_config ?

Sejauh yang saya mengerti, saya butuh sesuatu seperti

Host remote.machine
    ProxyCommand local_command; ssh [email protected]

dalam ~/.ssh/configfile saya , tetapi tidak persis ini tentu saja karena itu bundar!

Dave Wilding
sumber

Jawaban:

9

Jika menggunakan ProxyCommand, Anda harus menggunakan sesuatu seperti /usr/bin/ncuntuk menghubungkan server.

Untuk memohon perintah Anda sebelum terhubung, Anda harus menggunakan sh -c "command list"untuk menggabungkan kedua perintah sebagai satu.

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

LEBIH:

Jika local_commandterlalu rumit, Anda dapat menggunakan skrip:

cat my_connect.sh
#!/bin/bash

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

Konfigurasi ssh menjadi:

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

Terakhir, Anda dapat menambahkan proxy Anda sendiri ke /usr/bin/nc

Lai Jiangshan
sumber
1

Gunakan contoh dari halaman yang Anda tautkan:

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

Meminta nc (netcat) untuk terhubung ke proxy (proxy yang berjalan di 192.0.2.1:8080) dan meneruskan% h dan% p ke perintah ssh (% h = hostname,% p = port)

Tim
sumber