Ssh_config's ProxyCommand uzak bir makineye bağlanmadan önce yerel bir komut çalıştırabilir mi?


11

Belirli bir uzak makineye bağlanmadan önce belirli bir yerel komutu çalıştırmam gerekiyor. Yani yerine ssh me@remote.machineyapmak zorundayım

local_command
ssh me@remote.machine

Bunu otomatikleştirmek istiyorum, böylece sadece yapmam gerekiyor ssh remote.machine.

Bunu sshçağıran kendi komut dosyası oluşturarak kabuk düzeyinde bunu başarabileceğini biliyorum /usr/bin/ssh, ama ProxyCommand seçeneğini kullanarak yapabilir miyim ssh_config?

Anladığım kadarıyla böyle bir şeye ihtiyacım var

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

benim ~/.ssh/configdosyamda, ama tam olarak bu değil çünkü dairesel!

Yanıtlar:


10

Kullanıyorsanız , sunucuyu bağlamak için ProxyCommandbenzer bir şey kullanmanız gerekir /usr/bin/nc.

Bağlanmadan önce komutunuzu çağırmak için sh -c "command list", iki komutu bir olarak birleştirmek için kullanmanız gerekir .

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

DAHA:

Eğer senin local_commandde karmaşık, bir senaryoyu kullanabilirsiniz:

cat my_connect.sh
#!/bin/bash

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

Ssh config şu şekilde olur:

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

Sonunda, kendi proxy'nizi /usr/bin/nc


1

Bağladığınız sayfadaki örneği kullanın:

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

Bir proxy'ye (192.0.2.1:8080'de çalışan proxy) bağlanmak için nc (netcat) öğesini çağırır ve ssh komutuna% h ve% p iletir (% h = ana bilgisayar adı,% p = bağlantı noktası)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.