0
1

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 1 year has passed since last update.

SSH トンネル (SSH Port Forwarding) によるリモートアクセス

Last updated at Posted at 2021-04-10

SSH Port Forwarding を使うと、直接アクセスできないサーバーに、踏み台サーバーの SSH を経由してアクセスすることができます。

概要

実行例

ポート転送の実行

ssh コマンドで -L オプションを指定してポート転送(port forwarding)を実行すると、ローカル PC 上のバインドポートへの通信が、踏み台(Bastion)サーバーを経由してリモートサーバーに転送されるようになります。(BIND_PORT にはローカル PC 上で他に使用していない番号を指定すること)

BIND_HOST=localhost
BIND_PORT=(ローカル PC にバインドするポート番号)
BASTION_HOST=(踏み台サーバーのホスト名またはアドレス)
BASTION_SSH_PORT=(踏み台サーバーの SSH ポート番号)
BASTION_USERNAME=(踏み台サーバーの SSH ユーザー名)
REMOTE_HOST=(アクセスしたいリモートサーバーのホスト名またはアドレス)
REMOTE_PORT=(アクセスしたいリモートサーバーのサービスポート番号)
ssh -v -N -L ${BIND_HOST}:${BIND_PORT}:${REMOTE_HOST}:${REMOTE_PORT} -p ${BASTION_SSH_PORT} ${BASTION_USERNAME}@${BASTION_HOST}

これを実行したまま、ローカル PC のバインドしたポートに対して通信することで踏み台サーバー経由でリモートサーバーと通信することができます。

例) SSH トンネルを経由してリモートサーバーに SSH でログインする場合。

REMOTE_USERNAME=(アクセスしたいリモートサーバーの SSH ユーザー名)
ssh -p ${BIND_PORT} ${REMOTE_USERNAME}@localhost

例) SSH トンネルを経由してリモートサーバーの MySQL サーバーにアクセスする場合。

DB_USERNAME=(DB ユーザー名)
mysql -h localhost -P ${BIND_PORT} --protocol TCP -u ${DB_USERNAME} -p -e "(SQL)"

ssh/scp で一発アクセスする

ssh コマンドでは ProxyCommand オプションに指定することで、上で説明したポート転送コマンドを別途実行せずに、一発で踏み台サーバーを経由してアクセスすることもできます。

例) ssh

ssh -o ProxyCommand="ssh -p ${BASTION_SSH_PORT} ${BASTION_USERNAME}@${BASTION_HOST} -W %h:%p" \
   ${REMOTE_USERNAME}@${REMOTE_HOST}

例) scp

scp -o ProxyCommand="ssh -p ${BASTION_SSH_PORT} ${BASTION_USERNAME}@${BASTION_HOST} -W %h:%p" \
   (転送するファイル) <remote_user>@<remote_host>:<remote_path>
0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?