いわゆる踏み台サーバを経由した ssh 接続(ssh -J)

セキュリティの関係で、ある ssh サーバに接続して、そのあと別の ssh サーバに接続しなければならないことがよくあると思います。この途中の ssh サーバは、世間では「踏み台サーバ」と呼ばれているようです。

-L で ローカルの 10022 番ポートに、踏み台サーバの 22 番をポートフォワードして、localhost の 10022 につなぐというような面倒なことをしていたのですが、つい最近、さすがに面倒やなあと思い調べていると、ssh に -J という超便利なオプションがあることに気づきました。私の環境は、mac(OpenSSH_7.9p1) と windows msys(OpenSSH_8.0p1)。

例えば、次のようにして使います。

ssh -J fumiuser@踏み台1 user@接続先サーバ
ssh -L 3389:接続先サーバのLAN内のwindowsIPアドレス:3389 -J fumiuser@踏み台1 user@接続先サーバ

鍵の指定の仕方はよくわかりませんでしたが、ssh-agent / ssh-add で鍵を追加しておけばよいです。多段に接続する場合は、-J にカンマ区切りで複数のユーザー名@ホストを指定することができます。

sftp を使う場合は -o オプションで指定することができます。(試していませんが、~/.ssh/config で指定することもできるでしょう。)

sftp -o ProxyJump=hogeuser@踏み台1 hogehogeuser@接続先サーバ

ファイル転送して、ssh ログインすることが多いでしょうから、この形式も便利かと思います。

ああ、これでどこにでも乗り換えなしで行けます。つくづく、修行が足りないな、と思います。

-L、-R、-D、-J オプションを駆使してセキュアに構成されたネットワークに接続したいものです。

ご参考までに。

1969年生まれ。大学卒業後から15年以上にわたり、通信、カードリーダ、セキュリティ業界においてソフトウェア開発に従事。その後、2012年5月に当社を設立。電力、交通、車載向けの組み込み系システム、旅行業界向けの WEB システム開発、音声合成システム、消防向けのシステム開発等に参画。
低コストかつシンプルで安定稼働するシステムの実現を目指し、アーキテクチャ設計に取り組んでいます。
会社情報と代表者守屋のプロフィール詳細