職場と自宅で使用するノートパソコンがあります。
作業するときは、目的のサーバーに直接SSH経由で接続できます。
自宅にいるときにネットワークに接続するには、ジャンプホストを経由する必要があります。
次の項目があります。
Host jump-server
hostname server1
proxyjump workproxy
しかし、私は多くのサーバーと特定のホストにSSHを接続するために使用するいくつかのスクリプトを持っています。つまり、ジャンプホストを使用するかどうかを指定するコマンドラインオプションがすべて必要です。
これを自動化する方法はありますか?たとえば、すべてのホスト(workproxyを除く)がプロキシジャンプを実行するように環境オプションを設定できますか?
答え1
ProxyCommand
代わりにこれを行うことができますProxyJump
。ProxyCommand
これには、いくつかの変数を調べて他のコマンドを実行するシェルスクリプトがあるかもしれません。たとえば、次のスクリプトがあるとします/some/proxy
。
#! /bin/sh
if [ -n "$WORK" ] && [ "$1" != workproxy ]
then
echo Work >&2
ssh -qW "$1:$2" workproxy
else
nc "$1" "$2"
fi
およびSSH構成:
Host *
ProxyCommand /some/proxy %h %p
WORK
これは、環境変数が空でないこと、ホストが空でなく、ジョブworkproxy
プロキシに接続されていることを確認します。それ以外の場合は、netcatを使用して指定されたホストとポートに接続します(実際には直接接続)。
答え2
具体的な答えではありませんが、これからいくつかのアイデアを得ることができます。ウィキブック「プロキシとジャンプホストのレシピ」。
Host *
and をホストProxyCommand
として使用すると、%h
一般的なルールを作成できます。同様のMatch
場合もありますが、コマンドをHost
使用して目的の名前だけで一致を減らすのに役立ちます。exec
*