ssh_configのProxyCommandは、リモートシステムに接続する前にローカルコマンドを実行できますか?

ssh_configのProxyCommandは、リモートシステムに接続する前にローカルコマンドを実行できますか?

特定のリモートシステムに接続する前に、特定のローカルコマンドを実行する必要があります。だから私はする必要はありません。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 =ポート)に渡します。

関連情報