GNU/Linux >> Linux の 問題 >  >> Linux

ProxyJumpを使用してプロキシまたは要塞を介してリモートホストにSSHで接続する

要塞ホストの概念は、コンピューティングにとって目新しいものではありません。バストンホストは通常​​、ファイアウォールやその他の制限された場所の背後にあるシステムへのエントリポイントとして機能する、公開された強化されたシステムであり、クラウドコンピューティングの台頭で特に人気があります。

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という機能を使用する簡単な方法です 長い間持っていた:ProxyCommandProxyCommand プロキシまたは要塞ホストを介してリモートマシンから標準入力(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 )この一見単純なプログラムで利用できるさまざまなオプションのすべてを発見するときがあります。


Linux
  1. 別のサーバーに到達するためにhost(jumpserver)を介してsshする方法

  2. Ssh – Sshを使用してファイルをローカルシステムにコピーし直しますか?

  3. Ssh – Sshが許可を求めるのを避ける方法は?

  1. ssh コマンドを使用してリモート ホストに接続する方法

  2. SOCKS 5 プロキシで SSH を使用するにはどうすればよいですか?

  3. リモートパスワードの入力を求める SSH による Rsync

  1. リモートアクセスを簡素化するためにカスタムSSH接続を構成する方法

  2. 別のSSHポートを使用したGitリモート追加(22ではない)

  3. Ssh –複数のホストを介したScp?