[AWS] HTTPプロキシ経由でEC2(Linux)へSSH接続


Create: 2012/06/03
LastUpdate: 2012/11/08

企業などでEC2インスタンスを利用する場合、ファイヤーウォールに阻まれて、社内からは、直接、SSH接続できない場合があります。

そんな場合でも、HTTPプロキシサーバがあれば、プロキシ経由でSSH接続できる場合があります。
以下は、AmazonLinuxをインストールしたEC2インスタンスにHTTPプロキシ経由で接続する手順のメモです。

ここで紹介する方法は、以下の3パターンあります。
  1. ブラウザで AmazonManagementConsole を使用する場合
  2. Linuxのターミナルを使用する場合
  3. WindowsのPuTTYを使用する場合

ここで使用するプロキシサーバは、ユーザ認証が必要であるとします。 なお、プロキシサーバが HTTPで connect を許可していないと失敗するので、そのときは、SSHのポートを 443にして HTTPSで通信するようにします。

[プロキシサーバ]
  • IPアドレス:192.168.1.82
  • ポート:8080
  • ユーザ:canopus
  • パスワード:password
  • 特記事項: CONNECTの使用許可があること

1.ブラウザで AmazonManagementConsole を使用する場合


ブラウザで AmazonManagementConsole を使用して、プロキシサーバ経由でSSH接続することができます。
まず、下図の画面で、接続したいEC2インスタンスを右クリックして、メニューから[Connect]を選択します。



下図の画面が表示されたら、[Private key path]に存在しないファイルを指定して、[Launch SSH Client]ボタンをクリックします。
ここではプロキシの設定ができないので、とりあえず、SSHクライアントを起動して、そこでプロキシの設定をします。



下図のようにSSHクライアントが起動します。
1回目の接続では、接続先のホストを、既知のホストとして登録するか聞かれるので [Yes]ボタンをクリックして登録します。



[Private key path] に存在しないファイルを指定したので、下図のようなエラーが表示されます。
[了解]ボタンをクリックします。



下図のメニューで、[Connect]を選択します。



下図の画面が表示されたら、[Identity]に正しいキーペア(秘密鍵)を指定します。
[Proxy]タブをクリックします。



プロキシの情報を入力して、[Connect]ボタンをクリックします。



下図の画面が表示されたら、ENTERキーを押します。



下図のように表示が変わったら、ENTERキーを押します。



下図のように表示されたらSSH接続完了です。
PuTTY や TeraTermのようなターミナルとして使用できます。



2.Linuxのターミナルを使用する場合


Linuxマシンのターミナルからプロキシサーバ経由でEC2インスタンスにSSH接続することができます。
以下のサイトを参考にしました。
ここでは、クライアントに CentOS6.3 を使用してます。
まず、以下のようにして rpmforge から connect をインストールします。
# yum --enablerepo=rpmforge install connect
次に、sshクライアントの設定をします。
ユーザのホームディレクトリの ~/.ssh/config を以下のようにします。
これで、接続先のホスト名が "amazonaws.com" を含む場合は、プロキシサーバを使用するようになります。
Host *.amazonaws.com
  ProxyCommand connect -H canopus@192.168.1.82:8080 %h %p
設定は、以上で終わりです。
実際に ssh コマンドでEC2インスタンスに接続してみます。接続先が AmazonLinux なので ec2-userでログインします。
# ssh -i ./mykey.pem -l ec2-user ec2-54-248-149-19.ap-northeast-1.compute.amazonaws.com
Enter proxy authentication password for canopus@192.168.1.82: password
The authenticity of host 'ec2-54-248-149-19.ap-northeast-1.compute.amazonaws.com (<no hostip for proxy command>)' can't be established.
RSA key fingerprint is 36:d3:07:73:21:3b:2b:95:55:54:61:c8:87:4d:fb:b4.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ec2-54-248-149-19.ap-northeast-1.compute.amazonaws.com' (RSA) to the list of known hosts.
Last login: Wed Nov  7 15:53:25 2012 from example.com

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2012.09-release-notes/
There are 3 security update(s) out of 27 total update(s) available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-10-132-67-154 ~]$
エラーになる場合は、以下を参考にしてください。
  • 接続先のホスト名にIPアドレスを指定すると、プロキシサーバを使用しないので接続できない。パブリックDNS名で接続する。
  • パスワードの入力を求められますが、プロキシサーバのユーザのパスワードを入力します。
    上記の場合は 赤字の password が、プロキシサーバのユーザ(canopus)のパスワードです。
  • キーペアの秘密鍵は、パーミションを400にします。パーミションを間違うとエラーになって接続できません。
  • ssh コマンドがない場合は、"yum install openssh-clients" でインストールする。

3.WindowsでPuTTYを使用する場合


Windowsマシンにインストールした、PuTTY を使用して、プロキシサーバを経由してEC2インスタンスにSSH接続することができます。
まず、キーペア(秘密鍵)を PuTTY 用に変換します。手順については「 [AWS] PuTTY で EC2インスタンス(Linux) にログインする」を参照してください。
PuTTY を起動して、下図の画面が表示されたら、接続先のホスト名を入力します。



次に、下図の画面で、プロキシサーバの情報を入力します。



次に、下図の画面で PuTTY 用に変換したキーペア(秘密鍵)を入力します。



 [開く]ボタンをクリックすると、下図のメッセージが表示されるので[はい]ボタンをクリックします。



EC2インスタンスのユーザを入力してログインします。
下図のように表示されればSSH接続OKです。