とらりもんHOME  Index  Search  Changes  Login

SSH

注: この教材では, ユーザー名をsxxxxxとします。筑波大の教育用計算機では, これはs+学籍番号になるはずです。

SSH

UNIXの特徴として,離れたところにあるUNIXコンピュータを,ネットワーク越しに使うことができる.そのために頻繁に使うのがSSHである.みなさんは,学術情報センターのichoというUNIXサーバーにアカウント(利用権)を持っているので,SSHでichoに接続してみよう:

課題: 以下のようにして、ichoサーバーに入ってみよ:

   $ ssh sxxxxx@icho.u.tsukuba.ac.jp
   (*******は,各自の9桁の学籍番号の下7桁)
   (パスワードを聞かれるので,ichoのパスワードを入れる.)

   sxxxxx@unix01:~$

上のようなプロンプトが出ればOK.この中は,ichoの計算環境(シェル)である.

課題: ls, cdなど,これまで学んだコマンドを実行してみよ.

ichoから抜け出るには,

   sxxxxx@unix01:~$ exit

とすればよい.

以上のようなSSH接続を使えば、世界中のどんな場所からも、ichoなどのUNIXサーバーを使うことができる。

ただし、このやりかたがうまくいくのは、コマンドラインでの操作に限る。サーバーのグラフィックウィンドウ(X-Windowシステム)まで操作することはできない。たとえば、上のやりかたでichoに入って、xclockという, 時計表示ソフトを立ち上げてみよう:

   $ ssh sxxxxx@icho.u.tsukuba.ac.jp
   ----@icho.ipe.tsukuba.ac.jp's password:
   Last login: Wed Jan 11 07:57:20 2011 from ----

   sxxxxx@unix01:~$ xclock
   Gtk-WARNING **: cannot open display:

上のようにエラーが出てしまって、うまくいかない。これは, ichoサーバーのグラフィックス出力が, あなたのパソコンにうまく転送できないからである。仕方がないから, いったんichoから抜ける:

   sxxxxx@unix01:~$ exit

そして, 再度, SSHでアクセスする。ただしこんどは, グラフィック出力をうまく転送できるように, -XというオプションをSSHコマンドにつける:

   $ ssh sxxxxx@icho.u.tsukuba.ac.jp -X
   ----@icho.u.tsukuba.ac.jp's password:
   Last login: Wed Jan 11 07:57:20 2011 from ----

そしてxclockコマンドをためしてみよう:

   sxxxxx@unix01:~$ xclock
xclock.png

こんどはうまくいって、時計のウィンドウが開かれるだろう。

SSHはWindowsでも利用できる。Windows上でのSSHクライアント(他のUNIXサーバーにSSHで接続するためのソフト)の代表は、TTSSHである(無料)。これを使えば、Windowsからもリモート(つまりネットワーク上で離れたところにある)のUNIX環境を操作できる。ただし、TTSSHでは、たとえ"-X"オプションをつけてもX-Windowシステムまで操作することはできない。グラフィックな入出力が必要な場合は、Cygwinを利用する。

SSHの強力な機能として、「ポートフォワーディング」というものがある。これは、あるUNIXサーバー(SSHサーバー)を踏台にして、別のサーバーに接続する技術である。たとえば、あるUNIXサーバー(これをAと呼ぼう)が、あるサービスを、特定のクライアントにしか提供していないとする。しかし、もしその「特定のクライアント」のひとつ(これをBと呼ぼう)がSSHサーバーであるならば、そのSSHサーバーに接続することができる人ならば、世界中のどのクライアントからでも、そのSSHサーバーBを踏台にして、サーバーAのサービスを受けることができる。

このSSHによるポートフォワーディングの技術は、うまく活用すると極めて便利であるが、その反面、セキュリティに関する問題やモラルハザードを引き起こしかねないので、注意が必要である。というのも、あるサーバー(上の話ではA)が、そもそも特定のクライアントにのみサービスを制限するのは、なんらかの事情でそのサービスを一般に公開できないからである。SSHによるポートフォワーディングは、そのサービスを受けれるクライアントを、サーバーAの管理者の許可も無く、広げてしまうことができてしまうのである。従って、SSHサーバーBの管理者やユーザーは、サーバーAに対してほんとうにSSHによるポートフォワーディングを行ってよいかどうか、慎重に考える必要がある。サーバーAの管理者に相談するのが最も無難だろう。

技術的には可能なことであっても、モラル的にそれが許されるかどうかを判断することは、常に必要である。インターネットの世界では特に。というのも、インターネットはまだ成立して間もない発展期であり、モラルや常識や法整備が確立されるよりも早いスピードで技術革新が進んでいる。それを濫用・悪用することは可能かもしれないが、その結果として、様々なトラブルが起きたり、その結果としてインターネットの持つ様々な便利な機能が「反社会的なもの」とみなされ使用が制限されたりするのは、社会全体にとって不幸なことである。

Unix/Linux入門へ戻る。

.ssh/configの設定

.ssh/configに以下の設定をしておくと,

Host host_name
 User user_name
 HostName host_name.hoge.tsukuba.ac.jp
$ scp somefile.txt user_name@host_name.hoge.tsukuba.ac.jp:/home/user_name
$ ssh user_name@host_name.hoge.tsukuba.ac.jp

$ scp somefile.txt host_name:/home/user_name
$ ssh host_name

と簡単に記述できる.

.bashrc や .zshrcに

alias host_name='ssh user_name@host_name.hoge.tsukuba.ac.jp'

と記述しておけば,

$ ssh user_name@host_name.hoge.tsukuba.ac.jp

$ host_name

と更に簡単に記述できる.

Last modified:2017/03/02 15:47:41
Keyword(s):
References:[Unix/Linux入門] [とらりもんHOME]