プロキシサーバごしにコンソールを使う方法
Amazon Linux AMI 2012.03から起動したEC2インスタンスで試した。
anytermを利用してWebブラウザからターミナルにアクセスする
必要なパッケージのインストール。開発環境、boost、httpdとmod_sslが必要。
$ sudo yum groupinstall development $ sudo yum install zlib-devel boost-devel $ sudo yum install httpd mod_ssl
anytermのソースコードをダウンロードしてコンパイルする。GCC 4.4だと?、コンパイルでエラーになる部分があったため、libpbe/src/SmtpClient.ccを1行書き換えた。
$ wget http://anyterm.org/download/anyterm-1.1.29.tbz2 $ tar jxvf anyterm-1.1.29.tbz2 $ cd anyterm-1.1.29 $ cp libpbe/src/SmtpClient.cc /tmp/ $ vim libpbe/src/SmtpClient.cc $ diff /tmp/SmtpClient.cc libpbe/src/SmtpClient.cc 24a25 > #include <cstdio> $ make
次にhttpdの設定を行う。Digest認証のためのファイルを作る。
$ sudo htdigest -c /etc/httpd/conf.d/.htdigest example.com ec2-user
opensslコマンドで、自己署名証明書を作る。
$ sudo mv cert.pem key.pem /etc/httpd/conf.d/ $ cd /etc/httpd/conf.d/ $ sudo openssl req -new -days 365 -x509 -keyout key.pem -out cert.pem $ sudo chown apache:apache cert.pem key.pem $ sudo chmod 600 cert.pem key.pem
mod_proxyとmod_sslでanytermにアクセスするための設定ファイルを作る。
$ vim /etc/httpd/conf.d/anyterm.conf $ cat /etc/httpd/conf.d/anyterm.conf <VirtualHost *:443> # HTTPS port ServerName example.com <Location /anyterm> ProxyPass http://localhost:7676 ttl=60 ProxyPassReverse http://localhost:7676 AuthType Digest AuthName "example.com" AuthDigestDomain /anyterm/ AuthDigestProvider file AuthUserFile /etc/httpd/conf.d/.htdigest Require valid-user </Location> SSLEngine on SSLCertificateFile /etc/httpd/conf.d/cert.pem SSLCertificateKeyFile /etc/httpd/conf.d/key.pem </VirtualHost>
anytermdとhttpdを起動する。
$ ~/anyterm-1.1.29/anytermd -p 7676 --local-only $ sudo /etc/init.d/httpd start
最後に、EC2のSecurity Groupの設定で、TCP443番にアクセスできるようにする。
あとは、Webブラウザで、https://ec2-xxx-xx-xxx-xxx.ap-northeast-1.compute.amazonaws.com/anyterm のようなURLにアクセスすとダイアログが表示されるので、ユーザ名とパスワードを入力すると、ターミナルが開く。
microインスタンスで試したこともあってか、mod_ssl経由になるとターミナルがややもっさりする感じがした。corkscrewが使える環境であれば、そちらを使った方が便利だと思われる。
corkscrewを利用してsshでアクセスする
corkscrewはクライアント側だけで対応できる。プロキシサーバの設定次第では利用できない。
まずビルドしてインストール。
$ wget http://www.agroman.net/corkscrew/corkscrew-2.0.tar.gz $ tar zxf corkscrew-2.0.tar.gz $ cd corkscrew-2.0 $ ./configure $ make $ sudo make install
使うときはsshのProxyCommandオプションで指定。
$ ssh -i .ssh/hoge.pem \ -o 'ProxyCommand corkscrew proxy.example.com 8080 %h %p' \ ec2-user@ec2-xx-xxx-xx-xxx.ap-northeast-1.compute.amazonaws.com
設定を.ssh/configに書いておくと、毎回コマンドラインで指定しなくても済む。(Hostは、そこから次のHostが出てくるまでの設定の対象を絞るための指定。)
$ cat ~/.ssh/config Host *.amazonaws.com ProxyCommand corkscrew proxy.example.com 8080 %h %p