SSH構成ファイルにこの構成があります。
Host *+*
ProxyCommand ssh $(echo %h | sed -e 's/+[^+]*$//;s/\([^+=]*\)=\([^+]*\)$/\2 -l \1/; s/^\([^+:]*\):\([0-9]*\)+/-p \2 \1+/') -W $(echo %h | sed -e 's/^.*+//; s/:.*$//;'):$(echo %h | sed -e 's/^.*+//; /:/!s/^.*/22/; s/^.*://' ;)
これにより、次のような基本的なホストホッピングを実行できます。
ssh host1+host2 # will ssh into host2 via host1
LocalForward
なぜcommand()で-L
同じことをしようとしますか?私は成功せずにこのようなことを試しました。
Host host1+*
user root
Hostname %h
ProxyCommand ssh host1 -W %h:%p
LocalForward 0.0.0.0:8080 $(echo %h | awk -F'+' '{print $2}'):80
よろしくお願いします。
ベストアンサー1
これSSH構成ファイルシェルコードは取得または評価されません。
最初の操作が機能する理由は、エージェントのコマンド呼び出しの一部としてシェルで実行されるためです。
LocalCommand
しかし、プロキシコマンドを呼び出すのと同じように使用することもできると思いましたssh -f -L...
。私はこれをやったこともなく、見たこともありません。また、見ることができますPermitLocalCommand
。