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


11

特定のリモートマシンに接続する前に、特定のローカルコマンドを実行する必要があります。だからssh me@remote.machine私は代わりに

local_command
ssh me@remote.machine

これを自動化して、実行するだけで済みますssh remote.machine

ssh呼び出す独自のスクリプトを作成することで、シェルレベルでこれを実現/usr/bin/sshできることはわかっていますが、ProxyCommandオプションを使用して実行できますssh_configか?

私が理解している限り、私は次のようなものが必要です

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

私の~/.ssh/configファイルでは、しかしそれは円形なので、もちろんこれは正確ではありません!

回答:


9

を使用する場合は、サーバーに接続する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


1

リンクしたページの例を使用します。

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 =ポート)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.