要塞ホストの概念は、コンピューティングにとって目新しいものではありません。バストンホストは通常、ファイアウォールやその他の制限された場所の背後にあるシステムへのエントリポイントとして機能する、公開された強化されたシステムであり、クラウドコンピューティングの台頭で特に人気があります。
ssh コマンドには、要塞ホストを利用して1つのコマンドでリモートホストに接続する簡単な方法があります。最初に要塞ホストにSSHで接続し、次にsshを使用する代わりに リモートホストに接続する要塞で、ssh ProxyJumpを使用して、最初の接続と2番目の接続自体を作成できます 。
ProxyJump
ProxyJump 、または-J フラグ、sshで導入されました バージョン7.3。これを使用するには、-Jの後に接続する要塞ホストを指定します フラグとリモートホスト:
$ ssh -J <bastion-host> <remote-host>
ホスト間で異なる場合は、特定のユーザー名とポートを設定することもできます。
$ ssh -J user@<bastion:port> <user@remote:port>
ssh man(またはマニュアル)ページ(man ssh )一連のホストをジャンプするために、複数のコンマ区切りのホスト名を指定できることに注意してください。
$ ssh -J <bastion1>,<bastion2> <remote>
この機能は、要塞と最終的なリモートホストの間に複数のレベルの分離がある場合に役立ちます。たとえば、ホストの「ウェブ層」セットへのアクセスを許可するパブリック要塞ホストには、さらに保護された「データベース層」グループがアクセスされる可能性があります。
~/.ssh/configのプロキシホストをハードコーディングします
-J フラグは、必要に応じてプロキシホストとリモートホストを簡単に指定するための柔軟性を提供しますが、特定の要塞ホストを定期的に使用して特定のリモートホストに接続する場合は、ProxyJump 構成は~/.ssh/configで設定できます リモートホストに向かう途中で要塞に自動的に接続するには:
### The Bastion Host
Host bastion-host-nickname
HostName bastion-hostname
### The Remote Host
Host remote-host-nickname
HostName remote-hostname
ProxyJump bastion-host-nickname
上記の設定例を使用すると、ssh 接続は次のように行われます:
$ ssh remote-host-nickname
ssh コマンドは最初に要塞ホストbastion-hostnameへの接続を作成します (リモートホストのProxyJumpでニックネームで参照されているホスト 設定)リモートホストに接続する前に。
代替:stdinとstdoutの転送
ProxyJump sshという機能を使用する簡単な方法です 長い間持っていた:ProxyCommand 。 ProxyCommand プロキシまたは要塞ホストを介してリモートマシンから標準入力(stdin)および標準出力(stdout)を転送することで機能します。
ProxyCommand それ自体は、リモートサーバーに接続するために使用される特定のコマンドです。前の例の場合、それは手動のsshになります。 要塞に最初に接続するために使用されるコマンド:
$ ssh -o ProxyCommand="ssh -W %h:%p bastion-host" remote-host
%h:%p -Wへの引数 上記のフラグは、標準をリモートホストに転送することを指定します(%h )およびリモートホストのポート(%p 。
ProxyCommand ~/.ssh/config内
ProxyJumpと同様 、ProxyCommand ~/.ssh/configで設定できます この構成を常に使用するホストのファイル:
Host remote-host
ProxyCommand ssh bastion-host -W %h:%p
~/.ssh/configのこの設定で 、任意のssh リモートホストへの接続は、bastion-hostからの安全な接続を介してstdinとstdoutを転送することによって実現されます。 。
ssh コマンドは強力なツールです。ほとんどの場合、最も単純な形式で使用されますが、ssh user@hostname 、文字通り何十もの用途があり、あるホストから別のホストに接続するためのフラグと構成があります。 sshをチェックしてください のマニュアルページ(man ssh )この一見単純なプログラムで利用できるさまざまなオプションのすべてを発見するときがあります。