さくらのクラウドでProxyJumpを使いローカルIPのみのサーバーへSSH接続する方法

コンピューティング # SSH # サーバー運用

こんにちは、UOZUです!

今回は、さくらのクラウドでローカルIPのみを持つサーバーへのログインを簡単にしてみようと思います。

前提の構成は以下の通りです。

一般的な踏み台サーバへの接続方法

通常、ローカルIPを持つサーバーへSSHログインを行う際は、まずグローバルIPアドレスを持つサーバーにログインし、その上でさらにローカルIPで対象サーバーにログインを行う必要があります。

この場合、グローバルIP側のサーバーに秘密鍵を置く必要がありますが、ただし、踏み台サーバーに秘密鍵を置く方法は、鍵管理の面では注意が必要です。

$ ssh uozu@203.0.113.1 -i ~/.ssh/id_ed25519_web

[uozu@web ~]$ uname -n
web.uozu

[uozu@web ~]$ vi id_ed25519_db
[uozu@web ~]$ chmod 400 id_ed25519_db
[uozu@web ~]$ ssh uozu@192.168.1.2 -i id_ed25519_db


[uozu@db ~]$ uname -n
db.uozu

手元のPCのみに秘密鍵を置きたい場合、sshコマンドではProxyCommandのオプションで踏み台サーバーを指定する必要があります。

$ ssh -i ~/.ssh/id_ed25519_db uozu@192.168.1.2 -o ProxyCommand='ssh uozu@203.0.113.1 -i ~/.ssh/id_ed25519_web -W %h:%p'

[uozu@db ~]$ uname -n
db.uozu

~/.ssh/configへの追加と接続方法

よりシンプルで分かり易い方法として、~/.ssh/config を利用し、ProxyJump で踏み台サーバーを指定することで、ホスト名のみで踏み台サーバ経由のssh接続が出来る様になります。

$ vi ~/.ssh/config

Host web.uozu
    HostName 203.0.113.1
    User uozu
    IdentityFile ~/.ssh/id_ed25519_web

Host db.uozu
    HostName 192.168.1.2
    User uozu
    IdentityFile ~/.ssh/id_ed25519_db
    ProxyJump web.uozu

$ chmod 600 ~/.ssh/config
$ ssh db.uozu

[uozu@db ~]$

ProxyCommandでも同様の接続はできますが、ProxyJumpを使うと踏み台サーバー経由の設定をより短く書くことが可能です。

さいごに

今回は、ProxyJumpを使って、ローカルIPのみを持つサーバーへ踏み台サーバー経由でSSHログインする方法を試してみました。

また、.ssh/config に踏み台サーバーと接続先サーバーの設定を記載しておけば、毎回長いSSHコマンドを入力する必要がなくなり、ssh db.uozu のような短いコマンドでログインできるようになります。

ローカルIPのみのサーバーを運用している場合や、踏み台サーバー経由のSSH接続を簡単にしたい場合は、ProxyJumpを活用してみてはいかがでしょうか。

最後までお読みいただき、ありがとうございます!

この記事を書いた人

UOZU

ネットアシスト運用チーム10年目の運用エンジニア

さくらのクラウド検定 ベーシック

さくらのクラウド検定 アドバンスド

AWS Certified Solutions Architect - Associate