LoginSignup
1
7

More than 5 years have passed since last update.

Fabricで多段SSHをやる

Last updated at Posted at 2017-01-09

Fabricで多段SSHをやる

詳しくないので適切な用語を把握していませんが、
ローカルからサーバー1を経由してサーバー2にログインして操作をしたいときに必要になります。
今回は、AWSでVPC内にパブリックサブネットとプライベートサブネットを用意しており、プライベートサブネットに対してfabricで操作をしたかったのでパブリックサブネット内のinstanceを経由してプライベートサブネット内のinstanceを操作します。

前提条件

面倒だったので、ゲートウェイとして扱うサーバーもトンネル先のサーバーも

  • 同じ秘密鍵
  • 同じユーザー・グループ名

とします。。。

スクリプト

サンプルなので、ls -alだけにします...
host1はパブリックサブネットにおいてあるinstanceのIPアドレスとします。
host2はプライベートサブネットにおいてあるinstanceのIPアドレスとします。

処理対象をいつものhostにし、env.gatewayにトンネル先のエンドポイントを書きます。それだけですw

fabfile.py
from fabric.api import env, run
from fabric.decorators import task, hosts

# サーバーの設定
env.user = "ユーザー名"
env.group = "グループ名"
env.key_filename = "秘密鍵へのパス"
env.use_ssh_config = True

@task
@hosts("host1")
def sample_task():
    env.gateway = "host2"
    run("ls -al")

おわり

1
7
1

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
1
7