ウェブサイト検索

Linux で SSH ジャンプ サーバーをセットアップする方法


ジャンプ ホスト (ジャンプ サーバー とも呼ばれます) は、リモート ネットワークへの中間ホストまたは SSH ゲートウェイであり、これを介して、同じネットワーク内の別のホストに接続できます。異なるセキュリティ ゾーン (非武装地帯 (DMZ) など)。 2 つの異なるセキュリティ ゾーンを橋渡しし、それらの間の制御されたアクセスを提供します。

特にインターネット上のユーザーにサービスを提供するサーバーがプライベート ネットワークとDMZにまたがる場合、ジャンプ ホストは高度なセキュリティで保護され、監視される必要があります。

古典的なシナリオは、ファイアウォールで高度に安全な社内ネットワーク内からデスクトップまたはラップトップから DMZ に接続することです。 DMZ 内のサーバーを簡単に管理するために、ジャンプ ホスト経由でサーバーにアクセスできます。

簡単に言うと、SSH ジャンプ サーバーは、SSH プロトコルを介してプライベート ネットワーク上の他の Linux サーバーへのゲートウェイとして使用される Linux サーバーです。

この記事では、ジャンプ ホスト経由でリモート Linux サーバーにアクセスする方法を説明し、ユーザーごとの SSH クライアント構成で必要な設定を構成します。

SSHジャンプサーバーのセットアップ

次のシナリオを考えてみましょう。

より明確にするために、SSH Jump サーバーの役割を示す簡単なセットアップを以下に示します。

SSH ジャンプ サーバーを構成する理由

ジャンプ サーバーはインフラストラクチャへのゲートウェイを提供し、リソースへの潜在的な攻撃対象領域を減らします。また、デバイスの透過的な管理と、リソースへの単一のエントリ ポイントも提供します。

インフラストラクチャにジャンプ サーバーを組み込む場合は、サーバーが強化されていることを確認してください。そうでない場合は、ジャンプ サーバーを使用しないのと同じことになります。これについては、このチュートリアルで後ほど説明します。

シンプルな SSH ジャンプ サーバーを作成する方法

ここでは、 単純なSSH ジャンプ サーバーを作成する方法に焦点を当てましょう。ここでは簡単なセットアップを示します。

  • 発信元 IP: 105.68.76.85。
  • ジャンプサーバー IP (これをホストジャンプと呼びます): 173.82.232.55。
  • 宛先 IP (これを host_destination と呼びます): 173.82.227.89。

上記のシナリオでは、ホスト 2 (173.82.227.89) に接続したいと考えていますが、ファイアウォールのため、ホスト 1 (173.82.232.55) を経由する必要があります。ルーティングとアクセス権限。ジャンプ ホストが必要な正当な理由はいくつかあります。

動的ジャンプホストリスト

ジャンプ ホスト経由でターゲット サーバーに接続する最も簡単な方法は、コマンド ラインから -A フラグと -J フラグを使用することです。これにより、ssh にジャンプ ホストへの接続を確立し、そこからターゲット サーバーへの TCP 転送を確立するよう指示します (マシン間にパスワードなしの SSH ログインがあることを確認してください)。

ssh -A -J user@jump-server  user@destination server

たとえば、この設定では、james というユーザーがジャンプ サーバーに設定され、tecmint が宛先またはターゲット システムに設定されています。

コマンドは発信元 IP から次のようになります。

ssh -A -J [email  [email 

このコマンドでは、ジャンプ サーバーのユーザー パスワードの入力を求められ、続いてターゲット システムへのアクセスが許可されるターゲット システムのパスワードの入力が求められます。

マシン上のユーザー名またはポートが異なる場合は、図のように端末で指定します。

ssh -J username@host1:port username@host2:port	  

複数のジャンプホストのリスト

同じ構文を使用して、複数のサーバーを飛び越えることができます。

ssh -J username@host1:port,username@host2:port username@host3:port

静的ジャンプホスト リスト

静的ジャンプホスト リストとは、マシンの接続に必要なジャンプホストまたはジャンプホストがわかっていることを意味します。したがって、次の静的ジャンプホスト「ルーティング」を ~/.ssh/config ファイルに追加し、示されているようにホスト エイリアスを指定する必要があります。

### First jumphost. Directly reachable
Host vps1
  HostName vps1.example.org

### Host to jump to via jumphost1.example.org
Host contabo
  HostName contabo.example.org
  ProxyJump vps1

ここで、 図に示すようにジャンプ ホスト経由でターゲット サーバーに接続してみます。

ssh -J vps1 contabo

2 番目の方法は、ProxyCommand オプションを使用して、~.ssh/config または $HOME/ にjumphost 構成を追加することです。示されているように、ssh/config ファイル。

この例では、ターゲット ホストはcontaboジャンプホストvps1です。

Host vps1
	HostName vps1.example.org
	IdentityFile ~/.ssh/vps1.pem
	User ec2-user

Host contabo
	HostName contabo.example.org	
	IdentityFile ~/.ssh/contabovps
	Port 22
	User admin	
	Proxy Command ssh -q -W %h:%p vps1

変更を保存してファイルを終了します。変更を適用するには、SSH デーモンを再起動します。

sudo systemctl restart ssh

構成ファイルで使用されるオプションを調べてみましょう。

  • -q – これは Quiet モードを表します。警告と診断メッセージを抑制します。
  • -W – クライアント上の標準入力と出力が安全なチャネル経由で PORT 上の HOST に転送されるように要求します。
  • %h – 接続先のホストを指定します。
  • %p – リモート ホスト上で接続するポートを指定します。

ジャンプ サーバー経由で発信元 IP から宛先システムに「ジャンプ」するには、次のコマンドを実行するだけです。

ssh contabo

上記のコマンドは、最初に ProxyCommand の影響を受けるバックグラウンドで vps1 への ssh 接続を開き、その後、ターゲット サーバー contabo への ssh セッションを開始します。強い>。

SSH ジャンプ サーバーの安全性を高める

この設定をより安全にする方法の 1 つは、公開 SSH キーを発信元システムからジャンプ サーバーにコピーし、最後にターゲット システムにコピーして、パスワード認証を無効にすることです。 SSH パスワードなし認証を有効にする方法に関するガイドを確認してください。

さらに、SSH サーバー強化のヒントを確認してください。

また、機密データが Jump サーバー内に保存されていないことを確認してください。これにより、ユーザー名やパスワードなどのアクセス資格情報が漏洩し、システム全体の侵害につながる可能性があります。

詳細については、ssh のマニュアル ページを参照するか、「OpenSSH/Cookbxook/Proxies and Jump Hosts」を参照してください。

それは今のところすべてです!この記事では、ジャンプ ホスト経由でリモート サーバーにアクセスする方法を説明しました。ご質問やご意見がございましたら、以下のフィードバック フォームをご利用ください。