豆腐食べたい

プログラミングとかその他もろもろとかの技術の摂取録。あと豆腐食べたい。

ECCS2012に頑張ってssh接続する

以下、自分の大学のサークルの部誌に書いた記事を転載です。webで広く公開した方が現在の阿鼻叫喚状態を少し和らげることができるようなので。。今の惨状がECCS2013では改善されることを願います・・・

------

ECCS2012へssh接続

 こんばんは、そうでない人はこんにちは、nullpo_headです。今までTSGに対して一般記事という貢献をしたことがなかったので、今回クリスマスコンパ号にてさせていただこうという運びに自分で勝手になっております。昨年度などはこの号の部誌には一般記事はなかったようで、急がなくても別に他の号で書けばいいじゃないかというお叱りを皆様から受ける気がしますが、今回のネタの賞味期限がだいぶ近いのでこの号に投稿することにしました。
 この記事では今年度iMacの導入とともにECCSから消えてしまったssh接続(今年度からですよね?)を、ECCS2012でもなんとかかんとか繋ぐ方法をご紹介いたします。方々からの阿鼻叫喚に応えECCS2013では恐らくsshが復活するとは思いますが、今回の方法を使えば(残り数ヶ月もない)ECCS2012でもあのくっそ重たいリモートアクセスからおさらばできるはずです。

今回の方法の概要

  • 学生にwebスペースを提供するべく東大がやってる「東京大学情報発信実験」では、webサーバへのssh接続が提供されててそれは学内のLAN内にあるよ
  • ECCSの各々の端末ではファイアウォールが一切働いてなくて、それはリモートアクセス用の端末でも同じだよ
  • だから非rootでsshdを立ち上げられればsshはwebサーバ経由でECCSまで到達できるよ

以上3点がまぁ今回の話の肝でして、あぁそうか!と納得された方はもう多分この記事を読み続ける必要はありません。以下では以上3点についての詳細をずらずらと説明させていただきます。



・「東京大学情報発信実験」へのssh接続

 僕が言っている情報発信実験とはこれ
ユーザ情報発信用WWWサーバによる情報発信実験
http://www.ecc.u-tokyo.ac.jp/guide/web/web1.html
のことです。大学がよくやってるアレです。仕様には書いてありませんが実はphpも動いたりして広告なしの無料webスペースとして実はそれなりに優秀だったりします。自分もALESSの実験でちょっと使わせていただいています。ここのアカウントを取得すると、学生ID@user.ecc.u-tokyo.ac.jpへのssh接続が可能になります。夏学期の情報の授業で僕たちは半強制的に取得させられました。この時点で東大の学内LANにあるサーバへのssh接続を獲得したことになるので既に割ともう便利になるのではないでしょうか。学内からしか見れないサイトとか論文とか見れるのでは。

・ECCSのiMacの端末名を調べて、アクセス

 ECCS内の各iMacにはファイアウォール等が2012年現在かかっておりません。(これ、色々と実験できてネットワークの勉強となるので非っ常にありがたいです。)ですから、あるiMacでサーバを立ち上げれば、その他の端末から問題なく接続することができます。アクセスするためにはiMacの端末名が必要になりますが、これを知る方法は簡単で、シェルを起動したときに

ci190021m:~ (学生ID)$

のように表示されている”ci[0-9]+m”が端末名となります。この端末でwebサーバを8080ポートで起動したとすれば、http://ci190021m.ecc.u-tokyo.ac.jp:8080/ でアクセスできることになります。

以上2点から、あのクッソ鈍いリモートアクセスをしぶしぶ立ち上げ、ぶーぶー言いながらもその端末で一度sshサーバを立ち上げてしまえば、情報発信実験のwebサーバにsshをつないで、さらにそこからsshでciホニャラmへと二段sshすれば、外部のPCからECCS端末へとアクセスできることがお分かりになったかと思います。

 最後の障壁はsshのサーバプログラム、sshdを管理者権限のない僕らのユーザで立ち上げることとなります。Unix系OSに慣れ親しんでいる方はそんなの基本だから説明するようなことではないだろうって感じの蔑みの目をお向けになるかもしれませんが、僕の場合はそうではなかったので説明します。。

・非rootでsshdを立ち上げる

 sshdはECCSへもインストールされています。しかしそれを起動しようとするには2つの障壁があります。一つ目は0~1023番のポートはroot権限がないと開けないこと、2つ目は/etc/hosts.allowとdenyにて、大学の管理者しかsshdにアクセスできないよう設定されていることです。一つ目はもちろん適当なでかい番号のポートでsshdを起動すればおkです。二つ目はどうしようもありません。ということで二つ目をどうにかできるようsshdを自分でコンパイルし直します。が、sshdの話をするのが本筋ではないのでここではそれは後ろの方の小さい文字にまわします。sshdをとりあえず適切なオプションでビルドするシェルスクリプトを書いたので

$ /home07/1298296540/Public/sshdinstall.sh

で~/sshdにsshdがインストールされます。あとは適当に公開鍵や秘密の鍵の設定をする人はしてください。これですべての準備は終わりました。

○では接続しましょう

リモートアクセスでECCSにつないでください。そしてシェルを起動して、今自分が使っている端末の端末名を調べましょう。ここではcm10003mとかそんな感じだったとします(実際にどんな名前になったかはちょっとうろ覚えです)
あとは

$ /home*/(自分の学生ID)/sshd/sbin/sshd –d –p23232

とすれば、その端末でsshdが23232番ポートで起動します。(※sshdは絶対パスで起動する必要があるのです)
ではwebサーバを経由してここまでつなげましょう。ECCSへssh接続したい自分のPCから

$ ssh (自分の学生ID)@user.ecc.u-toyko.ac.jp

で一旦情報発信実験のサーバにつなぎます。で、その中のシェルから

$ ssh cm10003m.ecc.u-tokyo.ac.jp –p 23232

でリモートECCS上で起動しているsshdへ更に接続しましょう!これで軽快・快適なCUI環境が手に入ります。TCPプロクシとか使えば、自分のPCのブラウザから学内向けのリソースへもアクセスできますね。論文とか。
(なお追記として、自分はパスワードによるログインができなかったので、公開鍵と秘密鍵を設定してログインする方法にしました。そうするとログインできました。sshdの設定の問題なのかもしれませんが、自分は詳しくないのでなんとも・・・)

以上でどうしてもECCS2012を外部から使う必要がある!!!しかしリモートアクセスじゃ重すぎて何もできねぇよ!!!!というときにsshでハッピーな生活を送れるようになるはずです。では、メリークリスマス!!!



---

以下、sshdについて

先にお話しした2番目の障壁を越える方法についてです
TSGerの皆様にお話しすると、釈迦に説法って感じになってしまうような場合も多々あるとは思いますし、しかも自分はよく理解している訳ではないということでかなり恐縮なんですが、/etc/hosts.allow, denyで設定されている設定はTCP wrapperに関する設定です。これを使えばいろいろなアプリケーションのアクセス管理を一元的にできるようになります。sshdも、ビルドする際に通常 –with-tcp-wrappersオプションをつけて、このアクセス制御の恩恵を受けられるようにするわけです。が、今回の場合はこの/etcホニャララがrootユーザでしか設定できないために却って邪魔となっていましたので、このオプション無しにコンパイルし直せばいいのだということになります。そして、非rootでもきちんとmakeができるよう、prefixオプションをつけて自分のホームディレクトリにインストールするわけですね。ですから最終的に単に $./configure -prefix=ホニャララ&& make && make install みたいな感じにすれば、目的通りのsshdが得られることになります