SSHクライアントのproxy越えの設定方法



●概要

 自宅のインターネット環境ではファイアーウォールを気にせずにインターネットに接続できます。しかし、社内からの場合、ほぼファイアーウォールが設置され自宅環境と比較すると接続できるポートが制限されていることが多い。この場合、自宅では容易に接続できるSSHが社内からでは困難となることが多い。
 WindowsではPuTTY等を利用してSSH接続させたり、SSH接続状態を維持したままトンネルさせてHTTP接続させたりVNC接続させたりするための設定方法はインターネット上にかなりの数のページがあります。
 今回はCentOS等LinuxのSSHクライアントからファイアーウォールを通しインターネットに接続する設定を紹介します。
 ただし、社内にあるファイアーウォールの設定があらかじめ社内からのSSHによるインターネットへの接続が許可されていることが前提です。

●CentOS 6の場合

 社内プロキシサーバ:proxy.syanai.in
 社内プロキシサーバのSSH用ポート:8022
 接続したいリモートサーバ:www.internet.out
 接続したいリモートサーバのSSH用ポート:22(デフォルト)
 リモートサーバ接続時のユーザ名:hoge
 公開鍵:~/.ssh/authorized_keys2(社内ローカルサーバ上、アクセス権600)
 sshコマンド実行時の接続先ホスト名:www

 上記をコマンド実行すると、下記のとおりかなり長く打つことになります。
$ ssh -i .ssh/authorized_keys2 hoge@www.internet.out -o Proxycommand="/usr/bin/nc -X connect -x proxy.syanai.in:8022 %h %p"
 これをssh wwwと簡略するには、.ssh/configを作成します。
$ vi .ssh/config
Host www
	HostName www.internet.out
	User hoge
	IdentityFile ~/.ssh/authorized_keys2
	ProxyCommand /usr/bin/nc -X connect -x proxy.syanai.in:8022 %h %p
$ chmod 600 .ssh/config
 また、VNC over SSHを実現するには下記のconfigを作成します。
$ vi .ssh/config
Host www
	HostName www.internet.out
	User hoge
	IdentityFile ~/.ssh/authorized_keys2
        LocalForward 5912 localhost:5902
	ProxyCommand /usr/bin/nc -X connect -x proxy.syanai.in:8022 %h %p
$ chmod 600 .ssh/config
 これにより、VNCクライアントでの接続先をlocalhost:5912とすればSSHを介してリモートサーバの5902番ポートに転送し接続できるうようになります。

●CentOS 7の場合

 社内プロキシサーバ:proxy.syanai.in
 社内プロキシサーバのSSH用ポート:8022
 接続したいリモートサーバ:www.internet.out
 接続したいリモートサーバのSSH接続用ポート:22(デフォルト)
 リモートサーバ接続時のユーザ名:hoge
 公開鍵:~/.ssh/authorized_keys2(社内ローカルサーバ上、アクセス権600)
 sshコマンド実行時の接続先ホスト名:www

 ProxyCommandの内容がCentOS 6の時とは異なっていますので注意してください。また、何故かCentOS 7の場合はHostNameでFQDNを指定するとコマンド実行時に名前解決が出来ないと怒られてしまいます。そのため、実IPを記載したところ接続できるようになりました。

 上記をコマンド実行すると、下記のとおりかなり長く打つことになります。
$ ssh -i .ssh/authorized_keys2 hoge@www.internet.out o Proxycommand="/usr/bin/nc -X connect -x proxy.syanai.in:8022 %h %p"
 これをssh wwwと簡略するには、.ssh/configを作成します。
$ vi .ssh/config
Host www
	HostName www.internet.out
	User hoge
	IdentityFile ~/.ssh/authorized_keys2
	ProxyCommand /usr/bin/nc -X connect -x proxy.syanai.in:8022 %h %p
$ chmod 600 .ssh/config
 また、VNC over SSHを実現するには下記のconfigを作成します。
$ vi .ssh/config
Host www
	HostName www.internet.out
	User hoge
	IdentityFile ~/.ssh/authorized_keys2
        LocalForward 5912 localhost:5902
	ProxyCommand /usr/bin/nc --proxy proxy.syanai.in:8022 --proxy-type http %h %p
$ chmod 600 .ssh/config
 これにより、VNCクライアントでの接続先をlocalhost:5912とすればSSHを介してリモートサーバの5902番ポートに転送し接続できるうようになります。