特定のリモートシステムに接続する前に、特定のローカルコマンドを実行する必要があります。だから私はする必要はありません。ssh [email protected]
local_command
ssh [email protected]
私はこれを自動化したいので、これを行うだけですssh remote.machine
。
私は独自の呼び出しスクリプトを生成してシェルssh
レベルでこれを達成できることを知っていますが、/usr/bin/ssh
次のことができます。プロキシコマンドオプションssh_config
?
私が理解しているように、次のようなものが必要です。
Host remote.machine
ProxyCommand local_command; ssh [email protected]
私の~/.ssh/config
ファイルにありますが、もちろんループなので、まったく同じではありません!
答え1
使用する場合は、ProxyCommand
同様の方法で/usr/bin/nc
サーバーに接続する必要があります。
sh -c "command list"
接続する前にコマンドを呼び出すには、2つのコマンドを1つにまとめる必要があります。
Host remote.machine
ProxyCommand sh -c "local_command; /usr/bin/nc %h %p"
もっと:
複雑すぎる場合は、local_command
スクリプトを使用できます。
cat my_connect.sh
#!/bin/bash
local_command
/usr/bin/nc "$1" "$2"
SSH構成は次のとおりです。
Host remote.machine
ProxyCommand /path_to_my_connect.sh %h %p
最後に、独自のプロキシを追加できます。/usr/bin/nc
答え2
リンクしたページの例を使用すると、次のようになります。
ProxyCommand /usr/bin/nc -X connect -x 192.0.2.1:8080 %h %p
nc(netcat)を呼び出してエージェント(エージェントは192.0.2.1:8080で実行中)に接続し、%hと%pをsshコマンド(%h =ホスト名、%p =ポート)に渡します。