目標
計算機がとりあえず3つあります.
今使っているマシンはpcです.具体的にはWindows + Cygwinですが,あとで,Ubuntuのシェルに変わったりもします.
最終的にリモートログインしたいサーバは,server2という名前です.ちなみにUbuntuの8.10です.server2ではWebサーバを起動していまして,開発版のWebアプリケーションがあります.pcからアクセスし,不具合があれば,その場でスクリプトファイルや設定ファイルなどの修正もできるようにします.
server2にはアカウントはありますが,直接リモートログインができません.
なのですが,3番目の計算機としてserver1というのがあり,そこにはpcから直接,sshで入れます.ちなみにDebianのetchです.server1からserver2へ,sshでリモートログインもできます.なので,sshコマンドを2回実行すれば行けますが,なんとも手間です.
ということで,
- pcから,1個のsshコマンドで,server1を経由してserver2にログインし
- ログイン中は,pcから,ブラウザでserver2にアクセスできる
ことを目指すことにします.
サーバの設定
server1に,ncまたはnetcatのコマンドがあることを確認します.具体的には
server1$ which nc server1$ which netcat
server1# apt-get install netcat
で入ります.
ちょっと脱線.Ubuntuでは/bin/ncと/bin/netcatが作られますが,いずれも,/etc/alternatives/ncを経由して,/bin/nc.traditionalへのシンボリックリンクになっています.脱線おしまい.
次に,server1,server2にそれぞれsshでログインするための設定をします.pcで鍵ペアを作っておき,公開鍵を,server1,server2それぞれの~/.ssh/authorized_keysに追記しておきます.
SSHの設定
pcの~/.ssh/configに,以下のとおり書き込みます.
Host server1 Hostname [server1のFQDNもしくはIPアドレス] Host server2 Hostname [server2のIPアドレス] Host Server2 ProxyCommand ssh server1 nc [server2のIPアドレス] 22 DynamicForward 127.0.0.1:8080
「Host server2」とその次の行の記述は,なくてもかまいません(pcから「ssh server2」と実行しません)が,「ssh Server2」との違いを明確するために,入れています.
肝心なのは「Host Server2」から始まる3行です.「nc」は「netcat」に置き換えるべきかもしれません.「8080」は,pcで空いている任意のポート番号でかまいません.ちなみに「127.0.0.1」は固定で,これは(server1でもserver2でもなく)pcのことです.
IdentityFileやUserなど,他の設定も書けます.
1コマンドで多段リモログ
pc$ ssh Server2
を実行し,server2に入れることを確認します*1.
2度目の脱線.「リモログ」はremote loginの省略形であり,リモログPRO・リモログASPとは一切関係ありません.脱線おしまい.
これで長時間おいていると,ログインが切れるという場合,「top」でも実行しておくといいでしょう.top実行中,1キーでマルチコアかどうかが分かり,qキーで終了です.
Firefoxで動作確認
まずFirefoxにSwitchProxy Toolのアドオンを入れます.
あとは過去に書いているのを引用…
- Firefoxを起動し,メニューの「ツール / アドオン」から,SwitchProxyの設定画面を出します.
- 「プロキシ管理」のボタンを押します.
- 「追加」のボタンを押します.「プロキシの種類を選択」には,単に「次へ」のボタンを押します.
- プロキシ情報のところで,以下の情報を入力します.
- プロキシ名は,適当な名前
- SOCKプロキシの横に,「127.0.0.1」.その横に,「8080」
http://d.hatena.ne.jp/takehikom/20080117/1200520388
- OKを押して登録します.
設定のポップアップ(Switch Proxy Options)の中の「Show in Status Bar」にチェックをしておくと,プロキシ変更が簡単になります.
設定を終え,プロキシをD8080に変更してから,「http://[server2のIPアドレス]/パス」にアクセスできることを確認します.
w3mで動作確認
sshでSOCKSプロキシ - 技術メモ帳にヒントを得て,pcをあるUbuntuマシンとし,シェルから,アクセスできるようにしました.
pc# apt-get install tsocks
pc$ cat > ~/.tsocks.conf server = 127.0.0.1 server_port = 8080 server_type = 5 pc$ ssh Server2
pc$ tsocks w3m http://[server2のIPアドレス]/パス
あらかじめ調査したいくつかのページでは,/etc/tsocks.confに書くものばかりでしたが,これだとroot権限が必要な上に,マルチユーザで使用する際に苦労します.~/.tsocks.confが使えるのは,tsocks(8)の中に,『... it consults the configuration file (which is defined at configure time but defaults to ~/.tsocks.conf and if that file cannot be accessed, to /etc/tsocks.conf) ...』とあることから確認できます.
*1:ログインメッセージやプロンプトで,server2のシェルにいるかどうか分からなければ,「hostname」を実行します.