PuTTYでプライベートなAmazon Linuxサーバへ多段ログインしてみた

2013.05.21

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは植木和樹です。本日はWindows用sshクライアント PuTTY を使って、VPCプライベートサブネット内のEC2にログインする方法をご紹介します。

今回ログインする環境は以下を前提としています。

  • VPCを利用しパブリックサブネットとプライベートサブネットが存在している
  • プライベートサブネットにはEC2インスタンス(appserver)があり、インターネットから直接sshログインできない
  • パブリックサブネットには踏み台サーバ(bastion)を置き、これを介してプライベートサブネットのサーバにログインしたい

OSXやLinuxなどOpenSSHを使える環境については、Amazon VPC環境にメンテナンス用の踏み台サーバを構築するで紹介していますので、こちらをご参照ください。今回は同じことをWindowsのPuTTYを使ってやってみようと思います。

準備するもの

予め次のものを準備してください。

  • 上記で説明したVPC、サブネット、踏み台サーバ(bastion)、プライベートサーバ(appserver)
  • EC2 キーペア(PEMファイル)
  • PuTTY (Release 0.62-jp20111214)

作業の流れ

作業は次の順序で行います。

  1. PuTTYをインストールする
  2. 秘密鍵ファイルをローカルに保存する
  3. puttygenでPEMファイルをputty形式の秘密鍵ファイルに変換する
  4. Pageantに秘密鍵を登録する
  5. 踏み台サーバにPageantから鍵を読み込んでログインする
  6. 踏み台サーバ経由でプライベートサーバにログインする設定を行う
  7. プライベートサーバにログインする

設定方法

PuTTYをインストールする

ダウンロードしたインストーラを実行するか、ZIPファイルを展開してPuTTYをインストールしてください。
今回は C:¥app¥putty-0.62-jp20111214 にZIPファイルを展開しました。

秘密鍵ファイルをローカルに保存する

秘密鍵をダウンロードしておきます。今回はマイドキュメント下に"ssh"フォルダを作成して鍵を置きました。

putty_2013-05-15_000

puttygenでPEMファイルをputty形式の秘密鍵ファイルに変換する

SSH2の秘密鍵はSSHの実装によって形式が異なり、PuTTYも独自の形式になっています。そこでAWSのPEMファイルをPuTTY形式に変換する必要があります。この変換にはputtygenというコマンドを使います。

puttygenをPEMファイルをコマンド引数にして起動します。エクスプローラでputtygenを表示しておき、別のエクスプローラからPEMファイルをputtygenアイコンにドラッグアンドドロップすると楽です。

puttygenを起動すると次の画面が開きます。”OK"ボタンで画面を閉じてください。

putty_2013-05-15_001

"PuTTY Key Generator"という画面が開くので"Save private key"ボタンをクリックして変換後のファイルを保存します。保存先はPEMファイルが保存されたフォルダと同じにしておきます。(拡張子はPPKになります)

putty_2013-05-15_002

putty_2013-05-15_003

putty_2013-05-15_004

鍵の変換が終わったのでputtygenの画面は閉じておきましょう。

Pageantに秘密鍵を登録する

Pageantとは、秘密鍵を登録しておくとPuTTYがSSHログイン時にそこから鍵情報を読んでくれるようになるツールです。

先ほど作成したPuTTY形式の秘密鍵(PPK)のパスをPageantのコマンド引数に渡して起動すると、その鍵を登録してくれます。puttygenの時と同様、pageantアイコンにPPKファイルをドラッグアンドドロップして起動してください。起動するとタスクトレイにアイコンが表示されたと思います。(ダブルクリックすると登録している鍵情報を確認することができます)

踏み台サーバにPageantから鍵を読み込んでログインする

それではまず踏み台サーバにログインしてみます。PuTTYの設定で確認しておくポイントは2点です。踏み台サーバのIPアドレスと、Pageantが使われる設定になっているか、です。下に画面を張っておくので参考にしてください。

putty_2013-05-15_005

putty_2013-05-15_006

セッション画面の"開く"ボタンをクリックすると接続処理が始まります。設定に問題なければサーバにログインできているはずです。環境によっては「Pageantから鍵を読み出そうとしているけど許可していいか?」という画面が開くかもしれませんが"OK"ボタンで許可してください。

ログインができたらこの設定を保存しておきましょう。PuTTYウィンドウ左上のアイコンをクリックしてプルダウンメニューを表示し、"設定の変更"をクリックして設定画面を開きます。"セッション"画面で名前(bastion)をつけたら"保存"します。以降はこのセッションを"読込"することで接続先のIP アドレス等を復元することができます。(ダブルクリックすれば接続できます)

putty_2013-05-15_007

putty_2013-05-15_008

踏み台サーバ経由でプライベートサーバにログインする設定を行う

多段ログインの仕組みは次のステップで行われます。

  1. PuTTYで踏み台サーバ(bastion)にsshログインする
  2. ログインしたら踏み台サーバでsshコマンドを(自動)実行しプライベートサーバ(appserver)に接続する
  3. PuTTYがPageantに鍵情報を問い合わせ、その鍵情報がプライベートサーバ(appserver)に転送される
  4. sshログイン成功!

ここで注意しておきたいのは、PuTTYからまずログインするのは「踏み台サーバ」という点です。

それではPuTTYを起動し、保存したbastionセッションを"読込"んでください。プライベートサーバの設定は、踏み台サーバの設定がベースになります。

ログイン成功後にプライベートサーバにsshで接続するコマンドを"SSH"ページに設定します。

putty_2013-05-15_009

プライベートサーバへのログイン時に鍵情報を転送してもらいたいので”認証”ページの、"エージェントフォワーディングを認める"にもチェックしておきます。

putty_2013-05-15_010

プライベートサーバにログインする

設定が済んだら踏み台サーバの時と同様にセッションを名前(appserver)をつけて保存しておきましょう。

保存した appserver セッションをダブルクリックするとログイン処理が始まり、無事ログインできれば成功です!

putty_2013-05-15_011

おまけ

毎回Pageantに鍵情報を登録するのは手間なのでデスクトップなどにバッチファイル(run_pageant.bat)を用意しておくと良いでしょう。

@echo off
set PATH=%PATH%;C:¥app¥putty-0.62-jp20111214
pageant %USERPROFILE%¥Documents¥ssh¥my_keypair.ppk
pageant %USERPROFILE%¥Documents¥ssh¥my_keypair2.ppk
pageant %USERPROFILE%¥Documents¥ssh¥my_keypair3.ppk