環境によるSSHオプション

環境によるSSHオプション

職場と自宅で使用するノートパソコンがあります。

作業するときは、目的のサーバーに直接SSH経由で接続できます。

自宅にいるときにネットワークに接続するには、ジャンプホストを経由する必要があります。

次の項目があります。

Host jump-server
  hostname server1
  proxyjump workproxy

しかし、私は多くのサーバーと特定のホストにSSHを接続するために使用するいくつかのスクリプトを持っています。つまり、ジャンプホストを使用するかどうかを指定するコマンドラインオプションがすべて必要です。

これを自動化する方法はありますか?たとえば、すべてのホスト(workproxyを除く)がプロキシジャンプを実行するように環境オプションを設定できますか?

答え1

ProxyCommand代わりにこれを行うことができますProxyJumpProxyCommandこれには、いくつかの変数を調べて他のコマンドを実行するシェルスクリプトがあるかもしれません。たとえば、次のスクリプトがあるとします/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*

関連情報