Unixにおけるネットワーク利用

UnixはWindowsやMacintoshに先駆けてインターネット上の標準プロトコルである,TCP/IPをサポートし,インターネットの発展を支えてきた.現在でもインターネットの先端研究の場では,Unixが多く使われている.ここでは,Unixで使われる主なネットワークコマンドについて紹介する.

端末としての遠隔操作

Unixでは,ネットワークにつながった他のUnixマシンを,あたかも自分のマシン のように遠隔操作できる.ただし,この場合,基本的にはテキスト端末の利用と なる.つまり,最近のUnixで言うと,KTermやGNOME端末などのウインドウ内でできることしか行えない.したがって,画像や音声などといった,バイナリ情報を直接扱うことはできない.ただし,バイナリ情報をファイル転送した後,手元のマシンで利用することは可能である.

このように,テキストしかやりとりできないと多少不便と感じるかもしれないが,テキスト端末のデータのやりとりは,軽量で,非常に多くの環境から利用が可能である.たとえば,PDAなどの低速でメモリなどのコンピュータ資源に乏しい機械からでも快適に利用できる.そして,TCP/IP接続が可能,つまりインターネット接続が可能であれば,世界中どこからでも遠隔操作が可能であることが大きな魅力である.

海外などの遠隔地から利用する場合には,普段自分が使っているコンピュータが使えるとは限らない.そのような場合でも,テキスト端末による接続は大体のコンピュータで可能である.したがって,手ぶらで旅行しても,行く先にインターネットに接続できる端末さえあれば,自分が普段使っているマシンに遠隔ログインして,メールの読み書きなどテキスト端末で行えることは全て可能である.しかし,このためには,emacs, mew, 各種Unixコマンドの使い方をマスターすべきなのは言うまでもない.

他のUnixマシンを利用するには,従来は後述するtelnetやftpを使うのが一般的であった.しかし,これらのコマンドでやりとりされる情報は,暗号化されておらず,盗聴などの行為によって,パスワードなどのやりとりされる情報が他人に知られてしまう恐れがある.このため,やりとりされる情報を暗号化するようにした仕組みがSecure Shell(ssh)である.ここでは,Secure Shellを主に述べ,参考までにtelnet,ftpを後述する.

以上では,テキスト端末としてしか遠隔操作ができないと述べたが, UnixでもX Window System のウインドウを遠隔で表示してウインドウシステムの利用ができる. しかし,設定の手間や環境の制約も多いため,ここでは説明しない.

Secure Shell の利用

Secure Shellの端末としての利用

まずは,Secure Shell をテキスト端末として利用する方法を述べる. Secure Shellで端末として接続するには,sshコマンドを使用する. 例えば,情報教育システムで常時稼動しているホスト telnet.edu.tuis.ac.jp に接続するには,以下のようにKtermなどの端末に打ち込む.

% ssh telnet.edu.tuis.ac.jp

ホストは,ネットワーク上に存在するマシン(コンピュータ)を意味する. また,今自分が使っているホストをローカルホスト,遠隔地のホストをリモートホストと呼ぶ.つまり,sshはローカルホストからリモートホストを遠隔利用するコマンドと言える.

初めてそのホストに接続する場合には,以下のようなメッセージが出る.ここでyesと答える.次回からは,このメッセージは出なくなる.

The authenticity of host 'telnet.edu.tuis.ac.jp (1xx.1xx.1xx.7)' can't be establ
ished.
RSA key fingerprint is 34:xx:xx:55:xx:xx:d0:xx:xx:0c:xx:xx:0c:xx:xx:a6.
Are you sure you want to continue connecting (yes/no)?

次にパスワードを聞いてくるので,パスワードを打ち込めば遠隔ログインに成功する. その後は,つながったホストでKtermを使っているかのようにコマンドを打ち込んで操作ができる.sshを終了するには,exitもしくはlogout のコマンドを打ち込めばよい.

なお,今ログインしているユーザ名と違うユーザ名で遠隔ログインしたい場合は以下のようにする.ちなみにこれはユーザ名がs02987jtである場合である.

% ssh s02987jt@telnet.edu.tuis.ac.jp

Secure Shell でファイル転送する

Secure Shell では,scp と sftp という2つのファイル転送を行うコマンドが用意されている. scpはrcp,sftpはftpというコマンドの代わりとして作られたものである.

scpは基本的には,cpコマンド(ファイルのコピー)と同じと考えてよい.したがって,以下のように全くcpコマンドの代わりとして使うこともできる.これは,cp a.txt b.txt と全く同じことである.

% scp a.txt b.txt

リモートホストにあるファイルをローカルホストにコピーするには,以下のようにする.

% scp telnet.edu.tuis.ac.jp:c.txt d.txt

この場合,リモートホスト telnet.edu.tuis.ac.jpにある ~/c.txt ファイル,つまりリモートホスト上のホームディレクトリにあるc.txtファイルを,ローカルホストにd.txt ファイルとしてコピーしている.リモートホストのパスワードを聞いてくることに注意.

ファイル名は変更せずコピーしたい場合は,以下のようにする.

% scp telnet.edu.tuis.ac.jp:c.txt .

また,リモートホストで違うユーザ名を使う場合には,以下のようにする.この場合,s02987jtがリモートホストでのユーザ名である.

% scp s02987jt@telnet.edu.tuis.ac.jp:c.txt .

逆に,ローカルホストにあるファイルをリモートホスト上にコピーするには,以下のようにする.

% scp d.txt telnet.edu.tuis.ac.jp:e.txt

また,ファイル名を変更せずにコピーしたい場合は,以下のようにする.:の後に.を付けても同じである.

% scp d.txt telnet.edu.tuis.ac.jp:

この場合も,リモートホストで違うユーザ名を使う場合は,以下のようにする.

% scp d.txt s02987jt@telnet.edu.tuis.ac.jp:

他に,便利なオプションとして -r を紹介する.-r を付けると,ディレクトリの中身を丸ごとコピーできる.例えば,リモートホストtelnet.edu.tuis.ac.jpにある,htmlというディレクトリを丸ごとローカルホストにコピーしたい場合は,以下のようにする.

% scp -r telnet.edu.tuis.ac.jp:html .

逆にローカルホストにある,htmlというディレクトリをリモートホスト telnet.edu.tuis.ac.jp にコピーしたい場合は,以下のようにする.

% scp -r html telnet.edu.tuis.ac.jp:

sftpでファイル転送する

sftp の場合は,まずログイン操作をしてログインしてからファイル転送を行う.

例えば,sftpでtelnet.edu.tuis.ac.jpにログインするには,Ktermなどの端末から以下のようにコマンドを打ち込む.

% sftp telnet.edu.tuis.ac.jp

なお,違うユーザ名でログインするには,例えば s02987jtというユーザ名でログインするには,以下のようにする.

% sftp s02987jt@telnet.edu.tuis.ac.jp

パスワード入力後,ログインに成功したら,sftp> というプロンプトが表示される.helpと入力するとsftpで使えるコマンドの一覧が表示される.主に使うのは以下のコマンドである.

コマンド名意味
get パス パスに書いたリモートホストにあるファイルをローカルホストにコピーする.ファイル名は変更しない
get パス1 パス2 パス1に書いたリモートホストにあるファイルをローカルホストにパス2という名前でコピーする
put パス パスに書いたローカルホストにあるファイルをリモートホストにコピーする.ファイル名は変更しない
put パス1 パス2 パス1に書いたローカルホストにあるファイルをリモートホストにパス2という名前でコピーする
cd パス リモートホストのカレントディレクトリをパスに変更する
lcd パス ローカルホストのカレントディレクトリをパスに変更する
pwd リモートホストのカレントディレクトリを表示する
lpwd ローカルホストのカレントディレクトリを表示する
ls リモートホストのファイル/ディレクトリ一覧を表示する
lls ローカルホストのファイル/ディレクトリ一覧を表示する
exit もしくは quit sftp を終了(ログアウト)する

例えば,ローカルホストのworkディレクトリにあるファイルa.htmlをリモートホストtelnet.edu.tuis.ac.jpのpublic_htmlにコピーしたい場合は,以下のようになる.

% sftp telnet.edu.tuis.ac.jp
Connection to telnet.edu.tuis.ac.jp...
username@telnet.edu.tuis.ac.jp's password: ******
sftp> lcd work
sftp> cd public_html
sftp> put a.html
Uploading a.html to /home/xxx/username/public_html/a.html
sftp> exit

以上 ssh, scp, sftp の利用法を紹介したが,残念ながら世間の全てのマシンにこれらのコマンドがインストールされているわけではい.特にWindowsにはインストールされていないケースが多く,現状では,下記のtelnetやftpを使わざるを得ない場合が多い.しかし,今後これは解消されていくと思われる.

scpやsftpはftpの代わりとして十分な機能を持っているが,現在唯一劣っているのが,ファイルの途中からコピーすることができないことである.このため,ftpやhttpではコピー中に切断された場合,コピーの再開で途中から継続できるが,scp,sftpはファイルの最初からコピーし直さないとならない.

telnetの利用

ここでは,従来から遠隔利用をするために使われてきた,telnetコマンドについて紹介する.

telnetの基本的な使い方は,sshと似ている.例えば,telnet.edu.tuis.ac.jp にtelnetを用いて接続するには,以下のようにする.

% telnet telnet.edu.tuis.ac.jp
Tying...
Connecting to telnet.edu.tuis.ac.jp.
Escape character is '^]'.
Red Hat Linux release 7.2 (Enigma)
Kernel 2.x.x-xx on an i686
login: s02987tj
Password: ******

ログイン名とパスワードが順に聞かれるので入力する.ログイン名とパスワードが合っていれば,ログインに成功する.後はsshと同じである.

telnetはtelnetで接続する以外の目的でも良く使われる.例えば,Webサーバへのアクセスをテストしたい場合は,以下のようにポート番号(httpの標準は80)を指定する. あとは,httpのプロトコルにしたがってコマンドを打てばよい.

% telnet www.edu.tuis.ac.jp 80

ftpの利用

ftpの基本的な使い方は,sftpに似ている.例えば,telnet.edu.tuis.ac.jp にftpを用いて接続するには,以下のようにする.

% ftp telnet.edu.tuis.ac.jp
Trying 192.168.xxx.xxx...
Connected to telnet.edu.tuis.ac.jp (192.168.xxx.xxx).
220 pcxxxx FTP server (Version wu-x.x.x-xx) ready.
Name (telnet.edu.tuis.ac.jp:s02987tj): s02987tj
331 Password required for ohmi.
Password: ******

ログイン名とパスワードが順に聞かれるので入力する.ログイン名とパスワードが合っていれば,ログインに成功する.ログイン後に使える主なコマンドは以下の通り.

コマンド 意味
get パスパスに書いたリモートホストにあるファイルをローカルホストにコピーする.ファイル名は変更しない
get パス1 パス2パス1に書いたリモートホストにあるファイルをローカルホストにパス2という名前でコピーする
put パスパスに書いたローカルホストにあるファイルをリモートホストにコピーする.ファイル名は変更しない
put パス1 パス2パス1に書いたローカルホストにあるファイルをリモートホストにパス2という名前でコピーする
cd パス リモートホストのカレントディレクトリをパスに変更する
binary バイナリモードに変更する.実行コード,圧縮ファイルなどのバイナリコードを転送する場合は,バイナリモードにする必要がある
ascii アスキーモードに変更する.テキストファイルを転送する場合に使用すると,リモートホストとローカルホストの間で適切に改行コードを変換してくれる.
lcd パス ローカルホストのカレントディレクトリをパスに変更する
pwd リモートホストのカレントディレクトリを表示する
!pwd ローカルホストのカレントディレクトリを表示する
ls もしくは dir リモートホストのファイル/ディレクトリ一覧を表示する
!ls ローカルホストのファイル/ディレクトリ一覧を表示する
bye ftp を終了(ログアウト)する

以下に,リモートホスト telnet.edu.tuis.ac.jp のディレクトリ tex-src にあるファイル sample.dvi を ローカルホストのディレクトリ tex にコピーする時の例を示す.dvi ファイルはバイナリファイルなので,バイナリモードに変更している点に注目せよ.

% ftp telnet.edu.tuis.ac.jp
Trying 192.168.xxx.xxx...
Connected to telnet.edu.tuis.ac.jp (192.168.xxx.xxx).
220 pcxxxx FTP server (Version wu-x.x.x-xx) ready.
Name (telnet.edu.tuis.ac.jp:s02987jt): s02987jt
331 Password required for ohmi.
Password: ******
230 User s02987jt logged in.
Remote system type is Unix.
Using binary mode to transfer files.
ftp> binary
200 Type set to I.
ftp> cd tex-src
250 CWD command successful.
ftp> lcd tex
Local directory now /home/xxx/s02987jt/tex
ftp> get sample.dvi
150 Opening BINARY mode data connection for test.html
226 Transfer complete.
3xxx bytes received in 0.000992 secs (38 Kbytes/sec)
ftp> bye
221 Goodbye.
上の例を良く見れば分かるように,この場合,最初からバイナリモードになっているので,binaryコマンドを打つ必要はない.これは,サーバ側もクライアント側もUnixなので,改行の変換をする必要がなく,すべてのファイル転送でバイナリモードで問題ないからである.しかし,Windowsから接続する場合などを考えて,binaryコマンドを使う癖をつけておくことをお勧めする.

最後にもういちど注意するが,telnetとftpはやりとりされる内容が暗号化され ていないことに注意せよ.このため、現在は,telnetはあまり用いられなくな り、代わりにSecure Shell(ssh)が主流となっている。

anonymous ftp

以上の説明では,リモートホストに自分のアカウントがある場合のftpの使い方であるが, アカウントがなくても誰でも利用できるftpサービスがあり,これをanonymous ftp(匿名ftp)と言う.

anonymous ftp を使うには,サービスを行っているリモートホストに接続し,ユーザ名に「ftp」あるいは「anonymous」と入力し,パスワードには自分のメールアドレスを入力する.

大抵のanonymous ftpサイトは,主にフリーソフトウェアを提供している. WebブラウザでもURLがftp://hostname/path/ といった形式でアクセスしている場合は,anonymous ftp としてftpサイトにアクセスしているわけである.

学外へのアクセス,学外からのアクセス

ここでは,以上で述べたネットワーク接続の方法を使って,教育情報システムから学外のインターネットへのアクセスと,逆に,学外のインターネットから教育情報システムへアクセスする方法を述べる.

学外へのアクセス

現在、教育情報システムから学外にSSH接続するサービスは提供されていない。 以下は学外にSSH接続できるホストからの利用に限られた説明である。 参考として掲載しておく。

教育情報システムではセキュリティを考慮して,端末から学外に直接アクセスできないようになっている.学外にアクセスするには,まず学外アクセス用サーバ gateway.edu.tuis.ac.jp に接続して,そこから学外にアクセスすれば良い.

gateway.edu.tuis.ac.jp にはsshでリモートログインする. gateway.edu.tuis.ac.jp にログインすれば,そこからssh,scp,sftp,telnet,ftpなどを使って学外のホストにアクセスすればよい.ただし,そのホストのアカウントを持っていて,そのホストが接続しようとするプロトコルに対応している必要がある.
※ もちろんanonymous ftpの場合は,アカウントは必要ない.

以下に,shell.hoge.ac.jp にsshでリモートログインしている様子を示す.ユーザ名はtaroである.

% ssh gateway.edu.tuis.ac.jp
s02987jt@gateway.edu.tuis.ac.jp's password: ******
Last login: Mon xxx xx xx:xx:xx 2002 on ssh from xxxxx

*******************************************************************************
*                                                                             *
*  Welcome to AIX Version 4.3!                                                *
(省略)

dnssvr[s02987jt]1:~% ssh taro@shell.hoge.ac.jp
taro@shell.hoge.ac.jp's password: ******
Last login: Tue xxx xx xx:xx:xx 2002 on ssh from xxxxx

FreeBSD 4.6-RELEASE (GENERIC) #0: xxx xxx xx

Welcome to FreeBSD!

>

学外からのアクセス

逆に自宅など学外から教育情報システムにアクセスする場合には, gateway.edu.tuis.ac.jpにsshでリモートログインすればよい (ただし事前にVPN接続を完了しておく必要がある).LinuxなどのUnix OSでは,最近のバージョンであればsshがインストールされてい るので,そのま ま使えばよい.Windowsの場合は,Tera TermもしくはPuTTYをインストールすれば良い.さらにscp,sftpを使用する場合には,Cygwinをインストールすれば良い.ただし,デフォルトの設定では使えないので,セットアッププログラムでopensshをインストールをするように設定する必要がある.


ohmi@rsch.tuis.ac.jp(2002年~2014年6月13日)