とらりもんHOME  Index  Search  Changes  Login

とらりもん - SSH Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

注: この教材では, ユーザー名を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
{{attach_view(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接続
$ ssh xxx.yyy.zzz.www -p 8022



! .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

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