2013年10月21日月曜日

sshで多段プロキシする方法

■環境
Windows7 64bit
git bash version 1.8.3-preview20130601

■背景
  • WinSCPでsshプロキシが使えない環境だったので泣く泣くscpコマンドで対応する
  • git bashはデフォルトでsshコマンドが使えるのでgit bashで代用した
  • ※Linux上のsshでも同様の設定で対応可能

■設定
1. git bashを立ち上げる
2. cd
3. vim .ssh/config
4. 以下を記載する
Host host001
  User root
  Hostname 192.168.1.100
  IdentityFile ~/.ssh/host001_key.pem
  ProxyCommand ssh hostproxy001 nc %h %p
Host hostproxy001
  User root
  Hostname 192.168.1.10
  IdentityFile ~/.ssh/hostproxy001_key.pem
  ProxyCommand ssh hostgate nc %h %p
Host hostgate
  User kakakikikeke
  Port 1022
  Hostname 192.168.1.200
上記の設定で「ssh host001」と実行すると
  • 「hostgate」にユーザ「kakakikikeke」でポート「1022」を使ってパスワード認証をし次にhostgateから
  • 「hostproxy001」にユーザ「root」で公開鍵をを使ったパスフレーズ認証をしhostproxy001から
  • 「host001」にユーザ「root」で公開鍵を使ったパスフレーズ認証を行う
なので合計3回のパスワードを聞かれることになる

~/.ssh/host001_key.pemと~/.ssh/hostproxy001_key.pemの公開鍵はgit bashを実行するWindows上にある必要があり
デフォルトだと「C:\Users\[user_name]\.ssh」がconfigファイルを保存するパスになっている様子
git bash上でcdコマンドを実行すると上記のカレントに移動することができる

同じ経路でsshしたいホストを増やしたい場合はhost001と同様の記載でIPの部分を変更すれば他のホストにもsshログインできるようになる

また、この状態で「scp host001:/var/tmp/test.txt .」を実行することでリモートからコマンド一発でファイルを転送することができる
(パスワードを3回入力する必要あり)

0 件のコメント:

コメントを投稿