【多段SSH】公開鍵認証で中継サーバー経由のログインが簡単!

ネットワークの構成上、直接サーバーにSSHログインできないことがあります。

目的のサーバーにSSHログインするために、別のサーバーを経由するので地味に面倒です。

この記事は、SSH公開鍵認証とconfigを利用して直接ログインできないサーバーにも簡単にリモートログインできる多段SSHの方法を紹介します。

SSHログインだけではなくて、SCPでファイル転送する時も手間が掛からなくなるので作業の時短に繋がります

特にクラウドを利用するケースで役に立つと思います。

直接SSHできないケース

例えば、ロードバランサーの下にプライベートIPを割り振った2台のWebサーバー設置した場合のことを考えてみましょう。

下のシステム構成表をご覧ください。

システム構成表

パブリック IPホスト名プライベート IP役割
xxx.xxx.xxx.68www10.0.1.68ロードバランサー
-www0110.0.1.1Webサーバー
-www0210.0.1.2Webサーバー
xxx.xxx.xxx.10jump0110.0.0.10踏み台サーバー

「www01」「www02」にはパブリックIPを与えていません。

ロードバランサーを使う場合のWebサーバー、DBサーバーにはパブリックIPを付けないことが多いです。

踏み台サーバー経由でSSH

例えば「www01」にログインする時には、踏み台サーバーの「jump01」を経由します。

  1. ssh USER_NAME@jump01
  2. ssh USER_NAME@10.0.1.1

同時に「www02」にもログインするには、同じ工程でログインする必要があるんです。

  1. ssh USER_NAME@jump01
  2. ssh USER_NAME@10.0.1.2

同じサーバーにいくつもログインすることなんて日常的にありますし、地味に面倒というのはこういうことです。

多段SSHでログイン工程を減らす方法

少し前置きが長くなりましたが、多段接続の工程を減らす方法があります。

SSHの公開鍵認証の設定は終わっているものとして説明します。

秘密鍵の保存場所

Neo隊長はMacの「~/.ssh」の中にそれぞれのサーバーにログインするための秘密鍵を保存しています。

秘密鍵鍵ペア保存場所
aws-jump01.pemjump01Mac
aws-www.pemwww01Mac
aws-www.pemwww02Mac

本来は「www01」「www02」の秘密鍵は「jump01」に保存しそうなものですが、Macの中に保存するというのがポイントです。

システム構成図

ProxyCommandで目的サーバーにノンストップログイン

ssh -o ProxyCommand='ssh -i ~/.ssh/aws-jump01.pem -W %h:%p ec2-user@xxx.xxx.xxx.10' -i ~/.ssh/aws-www.pem ec2-user@10.0.1.1

従来のやり方は「jump01」でトランジットして、目的の「www01」にログインしていましたが、オプションのProxyCommandを使用することで一発ログインできます。

ただし、コマンドが長いので逆にログインに時間がかかる...

Macの~/.ssh/config

そこで、Macの~/.ssh/configを設定します。

ホームディレクトリの中の「.ssh」ディレクトリにcdして、

cd $HOME/.ssh

SSHのconfigをvimで編集します。

vi config
Host jump01
    Hostname xxx.xxx.xxx.10
    User ec2-user
    IdentityFile ~/.ssh/aws-jump01.pem

Host www01
    Hostname 10.0.1.1
    User ec2-user
    IdentityFile ~/.ssh/aws-www.pem
    ProxyCommand ssh jump01 -W %h:%p

Host www02
    Hostname 10.0.1.2
    User ec2-user
    IdentityFile ~/.ssh/aws-www.pem
    ProxyCommand ssh jump01 -W %h:%p

プライベートIPにダイレクトログイン

環境に合わせた内容でconfigの編集が終わったらSSHログインしてみましょう。

ssh www01

プライベート空間サーバーへのログインが楽になると思いませんか?

多段scpでダイレクトファイル転送

実は、ファイル転送がダイレクトにできることの方がありがたかったりします。

例えばMacの中の「xxxxx.tar.bz2」を「www01」のホームディレクトリにscpするには、

scp xxxxx.tar.bz2 www01:~/

これでダイレクトにファイルを転送することができます。

多段SSHのまとめ

目的のサーバーにログインするのに踏み台を経由しなければならない時に役立つテクニックでした。

SSH公開鍵認証方式とProxyCommandオプションを使ってダイレクトにプライベート空間のサーバーにログインできるので時短になります。

秘密鍵はクライアント側に保存

ポイントは、秘密鍵を踏み台サーバーには置かないことでよりセキュアな環境を維持します。

configに設定を入れてノンストップログインを実現しましょう!!

created by Rinker
¥1,680 (2023/02/02 12:36:13時点 Amazon調べ-詳細)

関連記事

コメント

この記事へのコメントはありません。

おすすめ記事

  1. 【多段SSH】公開鍵認証で中継サーバー経由のログインが簡単!

  2. インターネットに繋いだサーバーで最初にやらなければならない設定

  3. Swapの中身を特定する方法

  4. Linuxを極めるならコマンドよりも〇〇が先だ!!

  5. お名前ドットコムのDNS設定方法