3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

OpenSSHのProxyJump(-J)オプション(多段SSH/踏み台用)は主要OSで使える、この用途でのProxyCommandオプションは捨てよう

Last updated at Posted at 2021-07-17

TL;DR

  • 多段SSHする場合はProxyJumpコマンドで統一してOK
  • この用途においてProxyCommandオプションはもはや過去の産物
  • 指示書やガイドなどを作成している場合は修正しましょう

多段SSHについてざっくり

インターネットからはアクセスできないLAN内のホストにSSHしたい場合に、LANとインターネットの両方に所属しているホスト(踏み台)を経由することで接続できます。踏み台には、ターゲットホスト同様OpenSSHサーバさえインストールされていればOKです。
さらに、自PC→インターネット→踏み台1→LAN1→踏み台2→LAN2→・・・→踏み台N→LAN N→ターゲット のように多段にすることもできます。

ProxyJumpオプションについて

OpenSSH 7.3から利用可能です。
ただしWindowsでは、バグのせいで8.0から利用可能です。

具体的には、

  • Windows10→21H1から
  • Ubuntu→17.04から
  • macOS→10.12 Sierraから
  • CentOS・RHEL→7から

です。POSIX系は2017年あたりから、今では腐敗臭のするバージョン(Ubuntu 18.04・CentOS/RHEL7)含めて対応していましたが、Windowsではつい最近まで対応していませんでした。
本来は20H2のタイミングで対応するはずでしたが、MSの人がOpenSSHの更新をサボっていたのでお預けになっていました。(どうしてもという人は、Chocolatey等を使って最新版を入れなければなりませんでした)
この度の21H1にて、OpenSSHが更新され、ついに他OSに追いつきました。

使い方は、以下のように、踏み台・ターゲットのホストへの接続設定を定義した後、ターゲット側の設定にProxyJump 【踏み台ホスト名】を加えます。

Host 【踏み台ホスト名】
IdentityFile 【秘密鍵へのパス、他のオプションも同様に指定】
Host 【ターゲットのホスト名】
IdentityFile 【秘密鍵へのパス、他の一般オプションも同じように指定】
ProxyJump 【踏み台ホスト名】

コマンドでは、ssh 【ターゲット】 -J 【踏み台】のように指定します。

従来の方法

従来はProxyCommandオプションを使います。ProxyJump 【踏み台】は、

ProxyCommand ssh -W %h:%p 【踏み台】

と同様です。コマンドでは専用のオプションがないため、

ssh -oProxyCommand='ssh -W %h:%p 【踏み台】' 【ターゲット】

と書かざるを得ませんでした。冗長ですね。ProxyCommandは今後SSH以外の方法でSSH通信を中継しなければならない時だけに用途が縮小します。

指示書やガイドへの影響

SSHに詳しくない人のために説明を書く場合、従来はProxyCommandを使った方法を最低でも併記しなければなりませんでした。
しかし、Windowsが公式対応したため、ProxyCommandには触れず、ProxyJumpだけ書けばよくなりました。
指示書やガイドを管理している場合、ぜひとも修正しましょう。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?