はじめに:長すぎるSSHコマンドと、埋もれるターミナル履歴
セキュリティの要件で、データベースサーバーや内部のAPIサーバーに直接アクセスできない。
必ず「踏み台サーバー(Bastion)」を一度経由しなければならない。これ、インフラあるあるですよね。
昔の私は、本番DBに繋ぐために、ターミナルでこんな呪文を唱えていました。
# まず踏み台に入る
$ ssh user@bastion.example.com
# 踏み台からDBサーバーへ
bastion$ ssh db-user@10.0.1.55
あるいは、ポートフォワードや ProxyCommand を駆使して、暗号のように長いワンライナーを書いていました。
「あれ、どっちのサーバーにいるんだっけ?」「踏み台のセッションが切れてやり直しだ…」
タイポに怯えながら長いコマンドを打つたびに、私は自分の寿命が削られていくのを感じていました。
でも、安心してください。
OpenSSH 7.3以降を使っているなら、あなたのその苦労は1行の設定で永遠に消え去ります。それが ProxyJump (-J) です。
技術解説:「ワープポイント」を定義する ~/.ssh/config
ProxyJump は、「このサーバーに繋ぐときは、あっちのサーバーを自動的に経由(ジャンプ)してね」とSSHクライアントに教え込む機能です。
魔法の設定ファイル
あなたのPCの ~/.ssh/config に、以下の内容をコピペして書き換えるだけです。
# 1. まずは踏み台 (Bastion) の定義
Host bastion
HostName bastion.example.com
User your_jump_user
IdentityFile ~/.ssh/id_rsa_bastion
# 2. 最終目的地のDBサーバーの定義
Host prod-db
HostName 10.0.1.55
User db_user
IdentityFile ~/.ssh/id_rsa_db
# ここが魔法の1行!!!
ProxyJump bastion
図解:ProxyJumpによる「直通トンネル」
設定前は、2回のドアを自分の手で開ける(2回コマンドを打つ)必要がありました。
ProxyJump を使うと、1つ目のドアを開けた瞬間に、自動的に2つ目のドアを開けて中に入れてくれます。
[あなた] ===(魔法の自動ジャンプ)===> [本番DB (prod-db: 10.0.1.55)]
↓(裏で自動的によしなにしてくれる)
[踏み台 (bastion)]
驚愕の接続コマンド
設定が完了したら、ターミナルで打つコマンドはたったこれだけです。
$ ssh prod-db
これだけで、裏で自動的に踏み台を経由し、一発で本番DBのプロンプトが現れます。
パスワード入力が必要な場合でも、踏み台→本番DBの順にプロンプトが出るので迷うことはありません。
シームレスなCLI体験への到達
ProxyJump を設定したあの日から、私のターミナル履歴から長くて醜いSSHコマンドは完全に姿を消しました。
ファイル転送(scp)も、まったく同じように機能します。
scp file.txt prod-db:/tmp/ と打てば、踏み台経由であることを全く意識せずに、スルッとファイルが転送されるのです。
「踏み台サーバー」という壁は、セキュリティ上必要なものですが、開発者の生産性を落とす理由にはなりません。
もしあなたが今も2段階のSSH接続を手動で行っているなら、今すぐ ~/.ssh/config を開いて ProxyJump を書き込んでください。
「最初からこれを知っていれば…!」と天を仰ぐこと間違いなしです。