2013年12月15日日曜日

SSH も、ゲートも、あるんだよ

にゃんぱすー.
アドベントカレンダーも15日目に突入しました.
3年生にはあまり認知されていないと思いますが,田胡研の名状しがたい鯖管のようなもの,sakura です.

みんなわりと田胡研ローカルな事書いてないので,去年のアドカルのように私は田胡研に関する事をサクッと書こうかと思います.
(正直,私が書く事はないだろうとか思ってて何もネタ考えてませんでした)

※ 外部の人は「田胡研にはこんな環境があるんだ~」程度に思ってもらえばいいと思います.

# はじめに

日々サーバを管理・監視しているとみんながどのくらいサーバ使ってるのかとか,ログイン状況とか見る事になるのですが,田胡研ウェブサービスに比べて,ゲートサーバの使用率は著しく低いなーとか思いました.

私や一部院生・先輩はほぼ毎日使っているゲートサーバですが,具体的に何に使うかわからないってのが要因なのかな~とかなんとなく思ったので,ちょこっとだけこんなことが出来るよって話を書きます.



# ゲートサーバを使おう

## ゲートサーバってなに?

文字通り,田胡研への入り口(ゲート)となるサーバです.
端的に言うと,田胡研のローカルネットに入る為の入り口となります.

このサーバは学外に開いており,自宅や職場からアクセスする事が可能です.

つまり,このサーバを経由する事で研究室内にあるリソースにアクセスする事が出来るわけです.
また,研究室内に入るという事は学内に入る事と同義なので,学内リソースにアクセスする時にも使えます.

そのため,このサーバは普段あまり研究室に /来れ?ない/ 人には生命線となっているとかなっていないとか.

そんなサーバです.

## SSH

そんなゲートサーバにアクセスする方法がご存知,SSH (Secure Shell) です.

SSH の説明は (Wiki) でも見てもらうとして,具体的に SSH を使って何が出来るのかです.

## 活用方法

私が普段使いで使用している用途をざっと列挙すると以下の通りです.

  • 田胡研ローカルサーバへの踏み台
  • 作業環境
  • 研究・開発に必要なデータ置き場
  • LaTeX 環境
  • VPN の代用

順番に説明していきます.

### 田胡研ローカルサーバへの踏み台

これ用途で使ってる人が一番多いと思います.
学外にポートを開けるのは申請が必要で,必要なもの全部開けてたら面倒なのでゲートサーバを経由してアクセスするわけです.

具体的には,SSH のコンフィグ (~/.ssh/config) に下記のように記述します.
# ゲートサーバへアクセスするホスト設定
Host gate
     HostName         ゲートサーバのアドレス
     IdentityFile     ゲートサーバへの秘密鍵
     User             ゲートサーバのユーザ名

# ゲートを踏み台にするホスト設定
Host t-lab_local
     HostName         田胡研ローカルサーバのアドレス
     Identify         田胡研ローカルサーバへの秘密鍵 (公開鍵認証なら)
     User             田胡研ローカルサーバのユーザ名
     ProxyCommand     ssh gate nc %h %p 2> /dev/null
これでターミナルから

     $ ssh t-lab_local

とかやると,ゲートサーバを経由して SSH でアクセスしにいきます.


一番わかり易い例で言えば,みんな田胡研の Git サーバ使ってると思うけど,あの Git サーバ自体は学外へポートを開いていないので,学外からは push, pull が行えません.
(そもそも Git サーバ自体にローカルアドレスしか持たせていません)

そのため,学外から使用するには,ゲートサーバを一度経由させなければなりません.
学外から田胡研の Git サーバに push, pull をしている人は上記のような設定がされているはずです.

### 作業環境

ゲートサーバ上自体でのガチ作業はおすすめしませんが,コマンドを覚えたり,Linux に触れてみる程度ならゲートサーバで遊んでくれて構いません.

私がよくやるのは,ゲートサーバでターミナルマルチプレクサを起動し,そこからあらゆるサーバにコネクションを張って,コネクションを繋ぎっぱなしにした状態で作業をします.
(ターミナルマルチプレクサについては調べて下さい.CUI使いには重宝するツールです)

こうしておくと,研究室から家に帰宅する際に時間のかかる処理を実行した状態でデタッチし,帰宅した際にアタッチするだけで実行結果が見れたり,作業環境が復元するのですごく楽です.

また,大体のターミナルマルチプレクサがオートデタッチに対応しているので,不安定な環境で回線が突然切れた時も安心です.

これはログインするサーバが多岐にわたる人や,基本は一台だけど大量にバッファ開いた Vim とかのプロセス消したくない人・xz で圧縮かけ始めたけど終わる気配ねーわって人などにおすすめです.

### 研究・開発に必要なデータ置き場

これは文字通りデータ置き場としての活用方法です.

ゲートサーバのホームディレクトリはサーバディスク上には存在しておらず,ファイルサーバ上の領域をマウントしています.
そのため,ゲートサーバのホームディレクトリにデータを置くと,わりと大容量で冗長性のあるディスクに書き出す事になります.
(見かけの容量は大した事ないですが,柔軟に変更する事が出来ます)

どのくらいの冗長性かと言うと,RAID6 程度だと思ってもらえば大丈夫だと思います.
内部のHDDが3台同時に壊れない限り,データは保護されます.
また,データは一定期間で全く別のディスクにレプリケーションされるようになっています.

私は自分の Dropbox に置くには重いし,研究・開発以外ではあまり使う機会がないものなどを置いています.

基本的に制限はしていませんが,もちろん非合法なものは置いちゃダメです.
研究・開発に必要ない個人的なものなども常識の範囲内に留めて下さい.

### LaTeX 環境

ゲートサーバには LaTeX がセットアップしてあります.

よく使うパッケージはすでに導入してあるので,レポートや論文を書く際に環境を気にせずに執筆する事が可能です.

また,研究室内にいる場合は Samba を使用する事で,Windows の DVI プレビューアやお気に入りのエディタを使用して執筆する事も可能です.(VPN接続でも可能)

### VPN の代用

田胡研では,VPN サービスも提供しています.

しかし,実を言うと自分で提供しておきながら私はあまり VPN を使っていません
VPN を使うのは VPN 接続した先から,更に VPN 接続してどこかのネットワークに入りたい時くらいです.

なぜかと言うと,大体が SSH のポートフォワーディングで済むからです.

ポートフォワーディングを使う事で,下図のようにローカルの特定ポート宛のパケットを SSH を経由してリモートの特定ポートに転送する事が可能です.


これを使って,研究室内のウェブサーバ・アプリケーションサーバの動作を確認したり,リモートデスクトップなどを用いてコンピュータをリモート制御するのに使用しています.


例えば,ゲートサーバを経由して研究室内の Windows PC にリモートデスクトップ接続するには次のようにします.
# 構文 (ローカル側ポートは何でもいい.けどウェルノウンは避けた方がいい)
$ ssh -C -N -L [ローカル側ポート]:[研究室内 Windows PC のアドレス]:3389 [経由するゲートサーバへホスト]
     
# コマンド例 (上記の ~/.ssh/config の通りになっているなら)
# ローカルポート 18888 を IPアドレス 192.168.1.123 の 3389 ポートに接続する
$ ssh -C -N -L 18888:192.168.1.123:3389 gate
このコマンドを実行すると,特にエラーがなければターミナルにプロンプトが返らなくなります.

次に下図のようにリモートデスクトップクライアントを起動し,「localhost の 18888 ポート」と「研究室内 Windows PC のユーザ名」を入力して接続します.
そして,接続リクエストが成功した場合,パスワードが尋ねられるので入力します.


パスワードが正しいと,下図のように操作が可能になります.


こんな感じ.


ちなみに,ポートフォワーディングは複数同時に張る事が可能です.

他にも X を飛ばして,リモートから研究室内と全く同じ環境を使うとか色々と使い道があります.

# おわりに

SSH が開いてれば大体なんでも出来ちゃうねって話でした.

田胡研インフラを担当している私的には,ゲートサーバを使う事でみんなの作業が少しでも快適になればと思っています.

4年生は卒論頑張って下さい.

以上,sakura でした.次の登場は1年後くらいになると思います.

0 件のコメント:

コメントを投稿