SSH ProxyJumpの設定方法|踏み台サーバ経由の接続を簡単にする便利機能を解説

SSH ProxyJumpの設定方法

SSH ProxyJumpを利用して踏み台サーバ経由の接続を効率化しよう

企業ネットワークやクラウド環境では、内部サーバへ直接SSH接続できない構成が一般的です。

そのため管理者は踏み台サーバ(Bastion Host)を経由して目的のサーバへ接続します。

従来はSSH接続後に再度SSHコマンドを実行する方法が一般的でしたが、OpenSSHにはProxyJumpという便利な機能が用意されています。

ProxyJumpを利用すると、1回のSSHコマンドだけで踏み台サーバを経由した接続が可能になります。

本記事ではProxyJumpの仕組みや設定方法、実務での活用例について詳しく解説します。

ProxyJumpとは

ProxyJumpはOpenSSHに搭載されている踏み台サーバ接続機能です。

SSHクライアントが自動的に踏み台サーバを経由し、目的のサーバへ接続します。

OpenSSH 7.3以降で利用できます。

オプションとしては以下を利用します。

ssh -J

従来の接続方法

ProxyJumpがない環境では次のような接続を行います。

$ ssh user@bastion

$ ssh user@internal-server

管理者は踏み台サーバへログインした後、内部サーバへ再接続する必要がありました。

ProxyJumpを利用した接続

ProxyJumpを利用すると次のようになります。

$ ssh -J user@bastion user@internal-server

1回のコマンドで内部サーバへ接続できます。

途中の踏み台サーバへのログイン操作は不要です。

構成例

一般的な構成です。


管理PC
   ↓
踏み台サーバ
   ↓
内部サーバ

内部サーバは外部公開されていません。

SSH接続は踏み台サーバ経由のみ許可されています。

基本構文

最も基本的な書式です。

$ ssh -J jumpuser@bastion serveruser@internal

接続元から見ると直接内部サーバへ接続しているように利用できます。

IPアドレス指定例

$ ssh -J admin@203.0.113.10 admin@10.0.1.20

203.0.113.10が踏み台サーバです。

10.0.1.20が内部サーバです。

ProxyCommandとの違い

ProxyJump登場以前はProxyCommandが利用されていました。

例です。

ProxyCommand ssh bastion -W %h:%p

現在はProxyJumpの方がシンプルで分かりやすいため主流となっています。

SSH設定ファイルで利用する

毎回長いコマンドを入力するのは大変です。

そこで~/.ssh/configへ設定します。

Host bastion
    HostName 203.0.113.10
    User admin

Host web01
    HostName 10.0.1.20
    User admin
    ProxyJump bastion

これで以下だけで接続できます。
$ ssh web01

複数サーバ管理での活用

実務では多数のサーバを管理することがあります。

例えば以下です。

Host db01
    HostName 10.0.1.30
    ProxyJump bastion

Host app01
    HostName 10.0.1.40
    ProxyJump bastion

Host web01
    HostName 10.0.1.50
    ProxyJump bastion

管理効率が大幅に向上します。

複数の踏み台サーバを経由する

ProxyJumpは複数経由にも対応しています。

$ ssh -J jump1,jump2 user@target

以下のような構成で利用できます。


管理PC
 ↓
踏み台1
 ↓
踏み台2
 ↓
内部サーバ

scpでも利用できる

ファイル転送時にも利用できます。

$ scp -o ProxyJump=bastion file.txt user@server:/tmp

内部サーバへ直接転送できます。

sftpでも利用できる

SFTPも同様です。

$ sftp -o ProxyJump=bastion user@server

運用が非常に楽になります。

公開鍵認証との組み合わせ

実務では公開鍵認証と組み合わせることが一般的です。

例えば以下です。

  • 管理PC → 公開鍵認証
  • 踏み台サーバ → 公開鍵認証
  • 内部サーバ → 公開鍵認証

安全性と利便性を両立できます。

クラウド環境での利用

AWSやAzureでは非常によく利用されます。

構成例です。


Internet
 ↓
Bastion Host
 ↓
Private Subnet
 ↓
EC2

内部サーバを外部公開せずに運用できます。

踏み台サーバ側の設定

通常は特別な設定は不要です。

ただし以下を確認します。

AllowTcpForwarding yes

OpenSSHの標準設定では有効な場合が多いです。

ProxyJumpが利用できない場合

古いOpenSSHでは対応していません。

バージョン確認です。

$ ssh -V

OpenSSH 7.3以降が推奨です。

よくあるトラブル

踏み台サーバへ接続できない

まず踏み台サーバ単体へ接続できるか確認します。

$ ssh bastion

内部サーバへ接続できない

ルーティングやファイアウォール設定を確認します。

公開鍵認証が失敗する

authorized_keysや秘密鍵設定を確認します。

デバッグ方法

詳細ログを表示します。

$ ssh -v -J bastion user@server

接続過程を確認できます。

ProxyJumpを利用するメリット

  • 接続手順を簡略化できる
  • 運用ミスを減らせる
  • SSH設定ファイルと相性が良い
  • 複数サーバ管理が楽になる
  • クラウド環境との相性が良い

現在のOpenSSH運用では非常に便利な機能です。

実務で推奨される構成

  • 踏み台サーバ利用
  • 公開鍵認証
  • rootログイン禁止
  • 接続元制限
  • ProxyJump利用

多くの企業環境で採用されています。

まとめ

ProxyJumpは、踏み台サーバ経由のSSH接続を簡単に実現するOpenSSHの便利な機能です。

従来のように踏み台サーバへログインしてから再接続する必要がなくなり、管理効率を大幅に向上できます。

SSH設定ファイルと組み合わせれば、多数のサーバを管理する環境でもシンプルな運用が可能になります。

クラウド環境や企業ネットワークで踏み台サーバを利用している場合は、ぜひProxyJumpを活用してみましょう。