##はじめに
社内からだとProxy
がきつくてssh(Secure Shell)やRDP(RemoteDisktop)が出来ないなんてことがあります。
RDPポートを空けてしまうとセキュリティ的にもリスクが高くなりますので、
AWS
上の閉ざされたネットワーク内のサーバにアクセスする方法を実践してみました。
こっから繋いで・・・こう!!
sshで踏み台サーバに接続を行ない、sshポートフォワードで、ローカルで任意のポートを指定することで、
private(外部に接続していない)サーバへRDPで接続を行ないます。
私の環境だとポートが'80'と'443'しか空いていません。HTTP
とHTTPS
だけですね。
sshのポートを変更することで対応していますが、Proxy
によっては中身をちゃんと見てブロックしている場合もあります。
ざっくりですがAWS
側の構成はこんな感じですね。
BastionServer(踏み台サーバ)にはEIP
を付与し、sshポートを'22' ⇒ '443'に変更しています。
NAT経由でpriveteサブネットに対してRDPポート(3389)をルーティングして下さい。
※構成については調べたら直ぐわかりますので割愛します。
##設定方法
###【1】.接続方法
今回は出来る男をアピールするためにOpnenSSH
で接続します。
勿論、TeraTarm
やPutty
といったツールでも可能です。むしろそちらのほうが楽です。
私が使用しているPCがwindows7ですので、GitBashのインストール時に梱包されていたOpnenSSH
を利用します。
Windows10だとPowershell
に標準でインストールされていますので、Powershell
で問題ありません。
念のためインストールされているか確認しておきます。
$ssh -V
OpenSSH_7.6p1, OpenSSL 1.0.2m 2 Nov 2017
認証方式は秘密鍵方式にします。特に理由はありません。
予めBastionServerでssh-keygen
を利用して秘密鍵(privateKey.pem)を作成してあります。
###【2】.ssh接続
ツールから設定する場合はProxy
を指定する箇所がありますので簡単ですが、
直接繋ぐ場合はProxyCommand
で指定する必要があります。
オプションの-i
で事前に作成した秘密鍵を設定します。
-o
で設定パラメータとなるproxyCommand
を書き込みます。
今回は純粋なproxy
として使用するので、connect -H
で設定を行ないます。
最後はuser@globalIP -p 443
でsshのポートを指定しつつBastionServerのユーザとIPを指定します。
※ 通常のsshなら'22'となります。
$ ssh -i privateKey.pem -o ProxyCommand='connect -H proxy.xxx.jp:80 %h %p' ec2-user@66.66.66.66 -p 443
Last login: Mon Feb 25 09:43:02 2019 from aaa.xxx.yyy.jp
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
6 package(s) needed for security, out of 8 available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-10-0-1-10 ~]$
問題なくssh接続することが出来ました。
###【3】.sshポートフォワードでRDP接続
次はsshポートフォワードを利用して、RDP接続を行ないます。
先ほどの接続文字に、-L
のオプションをつけるだけなので簡単です。
-L (ローカルで使用するポート):(目的サーバのアドレス):(目的サーバで待ち受けてるポート番号)
・ローカルで使用するポート:13389(何でもいいです。)
・目的サーバのアドレス:10.0.2.10(グローバルではないので注意)
・目的サーバで待ち受けてるポート番号:3389(RDPデフォルトポート)
$ ssh -i privateKey.pem -o ProxyCommand='connect -H proxy.xxx.jp:80 %h %p' -L 13389:10.0.2.10:3389 ec2-user@66.66.66.66 -p 443
Last login: Tue Feb 26 09:02:48 2019 from aaa.xxx.yyy.jp
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
6 package(s) needed for security, out of 8 available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-10-0-2-10 ~]$
表示は通常のssh接続と変わりません。
sshを接続したままリモートディスクトップを開き、
localhost
、または127.0.0.1
と先ほど設定したポートを指定します。
入力したら「接続」ボタンを押下。
ログインパスワードの入力ウィンドウが表示されたら接続成功です!