LoginSignup
11
9

More than 5 years have passed since last update.

Ruby で SSH トンネルして、その先のサーバにSSHする方法

Posted at

Ruby で SSH トンネルして、その先のサーバにSSHする方法

SSH サーバをトンネルして、その先のサーバにSSHする方法です

1. gem を Install しておく

インストール未済だったらインストルします

gem install net-ssh
gem install net-ssh-gateway

2. GateWay を生成する

トンネルするSSHサーバのObjetを生成します

※ ID/Password を使う場合

require 'net/ssh/gateway'

## Gateway の生成
def openGateway()                                                                  
    gateway = Net::SSH::Gateway.new('192.168.XXX.XXX', 'UserName', :password => 'Password')
    return gateway
end

※ Private Key を使い場合

require 'net/ssh/gateway'

## Gateway の生成
def openGateway()                                                                  
    gateway = Net::SSH::Gateway.new('192.168.XXX.XXX', 'UserName', :keys => 'PrivateKeyFile', :passphrase => 'Passphrasw')
    return gateway
end

3. Gateway を介してSSHする

トンネル先のSSHサーバにコマンドを投げます

require 'net/ssh'

gateway = openGateway()

# Gateway の先のサーバに Login する
gateway.ssh('192.168.XXX.XXX', 'Username', :password => 'Password') do |ssh|
    ## この辺で、ssh に対してコマンド発行などをする
    print(ssh.exec!('ls -l'))
end

これで、Gateway 先のサーバにコマンドを発行して、結果を取得することが可能です。

11
9
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
11
9