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 me@remote.machineharus saya lakukan

local_command
ssh me@remote.machine

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 me@remote.machine

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

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


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)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.