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 先のサーバにコマンドを発行して、結果を取得することが可能です。