目的
Puttyでは、多段SSH時におけるProxyログインにはパスワード認証しか使えない。
しかし、踏み台サーバは通常、公開鍵認証なので具合が悪い。
OpenSSHのProxyJmp機能と似たような設定をすることで、これを解決する。
前提
- Windows
- Putty
- 踏み台サーバは公開鍵認証しかできない
- 最終接続サーバは公開鍵認証でもパスワード認証でもどちらでもよい
手順
踏み台サーバへ接続するセッションを作成する
- セッション
- ホスト名: 踏み台サーバのIPアドレス(グローバルIP)
- 接続
- データ:
- 自動ログインのユーザー名: 踏み台サーバのユーザー名
- SSH:
- 認証:
- クレデンシャル:
- 認証のための秘密鍵ファイル: 踏み台サーバに接続するための秘密鍵
- クレデンシャル:
- 認証:
- データ:
接続できることを試しておく。(特に、ホストキーを受け入れるかどうかのダイアログが表示されない状態にしておくことが重要です)
接続出来たら、puttyは終了しておく。
最終接続サーバへ接続するセッションを作成する(パターン1)
おすすめ。puttyインストール時に、plinkコマンドも一緒にインストールされていて、利用可能な場合。
- セッション
- ホスト名: 最終接続サーバのIPアドレス(踏み台サーバから見たIPアドレス。通常はプライベートIPアドレスとなる)
- 接続
- データ
- 自動ログインのユーザー名: 最終接続サーバのユーザー名
- SSH
- 認証
- クレデンシャル
- 認証のための秘密鍵ファイル: 最終接続サーバに接続するための秘密鍵(踏み台サーバ上ではなく、Windows上に保存しておく必要があります)
- クレデンシャル
- 認証
- プロキシ
- プロキシの種類: ローカル(サブプログラムを実行し接続)
- プロキシホスト名: 踏み台サーバのセッション名
- ユーザー名: 空白
- パスワード: 空白
- プロキシ送信するコマンド:
plink.exe -load %proxyhost -nc %host:%port
- プロキシの診断をターミナルに表示する: はい(正常に接続できることが確認できたら、「いいえ」等に変更してもよい)
- データ
接続できることを試す。
最終接続サーバへ接続するセッションを作成する(パターン2)
踏み台サーバにncコマンドがインストールされている場合。(パターン1よりはポータビリティーが低下するので、パターン1のほうがおすすめ)
- セッション
- ホスト名: 最終接続サーバのIPアドレス(踏み台サーバから見たIPアドレス。通常はプライベートIPアドレスとなる)
- 接続
- データ
- 自動ログインのユーザー名: 最終接続サーバのユーザー名
- SSH
- 認証
- クレデンシャル
- 認証のための秘密鍵ファイル: 最終接続サーバに接続するための秘密鍵(踏み台サーバ上ではなく、Windows上に保存しておく必要があります)
- クレデンシャル
- 認証
- プロキシ
- プロキシの種類: プロキシにSSH接続してコマンド実行
- プロキシホスト名: 踏み台サーバのセッション名
- ユーザー名: 空白
- パスワード: 空白
- プロキシ送信するコマンド:
nc %host %port
- プロキシの診断をターミナルに表示する: はい(正常に接続できることが確認できたら、「いいえ」等に変更してもよい)
- データ
接続できることを試す。
トラブルシュート
Incoming packet was garbled on decryption
ダイアログボックスが表示される
ターミナル画面にデバッグメッセージが表示されているので確認しましょう。