6-5. RPC と NFS それに SSH (1) Sun RPC の仕組み '97〜 * RPC の仕組み マシンで Sun RPC を使う場合は、 マシン立ち上げ時に portmapper デ−モンを起動する ようにしておく。このデ−モンは RPC のサ−ビスデ−モンであり、portmapper 自体はプ ログラム番号 100000 番とあらかじめ決まっている。ポ−ト番号は TCP 111、UDP 111 を 使う。inetd の中に勝手にまたス−パ−デ−モンを作ったようなことになっている。 誰がマシンに現在アクセスしているか、 表示サ−ビスする rusersd デ−モンを例に見て みよう。/etc/rpc に "rusersd 100002 rusers" があり、/etc/inetd.conf に rusersd/1 があれば、RPC として登録される。自ホストまたは他のホストから rusers コマンドが打 たれると、inetd から rusersd デ−モンが起動される。 そして rusers が portmapper に rusersd のポ−ト番号を問い合わせ、アクセスを開始する。 RPC 以外の通常のデ−モンは、例えば telnetd では 23番ポ−トを見張るということがあ らかじめ決められている。これは RFC で決められた TCP/IPネットワ−クでの約束である。 しかし rusersd の場合は、ポ−ト番号が決まっていないのだ。RPCとして登録される時に 初めてデ−モンのポ−ト番号が決定される。但しこれ以降ポ−ト番号は変わらない。 hostA $ /usr/ucb/rusers -l hostB katou indy:ttyq0 Jun 10 16:43 38 (:0.0) katou indy:ttyq1 Jun 10 16:43 12 (:0.0) セキュリティの面から考えると、どうせなら rusers コマンドが発っせられた時、まさに その時点でポ−ト番号も決まればよかった。rpcinfo コマンドはリモ−ト・ホストの RPC サ−ビスの一覧も出してしまう。 これにより、そのホストでの RPC サ−ビス名とポ−ト 番号が分かってしまう。それに netstat -a で見れば、RPC も含めて何がしかサ−ビスし ているポ−ト番号は分かる。RPC の場合、動的にポ−ト番号が決まるとよく書かれていて、 おや動的なら安全なのかと一瞬思ってしまう。正確にこの意味を理解しておく必要がある。 [ NFS の特殊性 ] NFS は portmapper の管理下にありながら、ポ−ト番号は 2049 と決まっている。ほとん どの RPC の各デ−モンは、inetd から起動されるようになっている。しかし NFS のデ− モンは、マシン立ち上げ時に起動するようになっている。NFS サ−ビスは時たまというも のではなく、常時サ−ビスする使い方が多いことが、その理由になっていると思われる。 [ portmapper の起動順序 ] Apollo での起動順序を示す。SunOS 4.1.x もほとんど同じである。 Solaris 2.5.1 はス タ−トアップ制御が違い、portmapper も rpcbind という名称である。起動順序はともか くinetd より先に rpcbind が起動していないと RPC サ−ビスは有効にならない。何らか のことで後から手動で portmapper または rpcbind を起動してもダメである。 /etc/rc.local -------------------------------- |if [ -f /etc/rc.nfs ]; then << 本当は rc.nfs ファイルの中で portmap, rpc.xxx | run \ コマンドが記述されている。 | "/usr/etc/exportfs -a" | daemon 1 \ | "/usr/etc/portmap" << portmapper デ−モンは、inetd より先に起動され | "/usr/etc/keyserv" る。後から起動しようとしてもダメ!。 | daemon 0 \ | "/usr/etc/rpc.statd" << これら NFS のデ−モン関係。 | "/usr/etc/rpc.lockd" | "/usr/etc/rpc.mountd" | "/usr/etc/nfsd -anet 4" |fi | |if [ -f /etc/inetd ]; then | /etc/inetd << ここで inetd が起動される。 |fi * Solaris 2.5.1 で起きたトラブル WWWサ−バのホストにコンテンツをアップロ−ドするのに、 その時だけ # inetd -s & と手動起動して ftpd デ−モンが起動するようにする。 これで他ホストから ftp できる はずである。それが login の表示をする前で止まってしまう現象が起きた。 このホスト ではセキュリティのため rpcbind など RPC の管理デ−モンは、最初から起動しないよう にしていた。いろいろやったあげく、/etc/inetd.conf の RPC, NIS 関係の部分を全部コ メントにしてみた。セキュリティ的にはこの方が望ましくもある。 これでなぜか ftp ア クセスできるようになった。 つまり inetd の中では RPC, NIS サ−ビスが有効のままに なっていて、にもかかわらず大元で rpcbind が起動されていないので、 その間の整合性 みたいなことがとれず、それが悪さをしていたようである。rpcbind を使わないのならば /etc/inetd.conf の中の RPC, NIS 関連サ−ビスはコメントにするのが無難なようである。 * RPC 関連制御ファイルとコマンド プログラム番号 別名 % cat /etc/rpc ↓ ↓ RPC サ−ビスの一覧。プログラムとプロ portmapper 100000 portmap sunrpc グラム番号の対応は、Sun Microsystems rstatd 100001 rstat rup perfmeter が決めている。これは取り決めなのでど rusersd 100002 rusers のマシンでも同じになる。しかし内部の nfs 100003 nfsprog みで、新たなサ−ビスを作って使う分に mountd 100005 mount showmount はユ−ザが勝手に決めてもよい。 % rpcinfo -p portmapper デ−モンが現在管理してい program vers proto port る情報を表示する。マシン立ち上げ時に 100000 2 tcp 111 portmapper は portmap が先ず起動し、/etc/rpc を 100000 2 udp 111 portmapper 見て、プログラム番号に対して使用ポ− 100003 2 udp 2049 nfs ト番号を決める。 100024 1 udp 788 status 100024 1 tcp 790 status 同じマシンで設定を変えなければ、これ 100021 1 tcp 793 nlockmgr らポ−ト番号はいつも同じになる。ラン 100021 2 udp 806 nlockmgr ダムに決めているわけではない。 100005 1 tcp 1047 mountd 100005 1 udp 1025 mountd mountd は inetd デ−モンから起動され 100002 1 udp 1029 rusersd る。netstat に UDP/1025 番のサ−ビス があることがわかる。 % netstat -a Active Internet connections (including servers) Proto Recv-Q Send-Q Local Address Foreign Address (state) tcp 0 0 *.telnet *.* LISTEN tcp 0 0 *.1047 *.* LISTEN udp 0 0 *.1025 *.* << mountd デ−モン。 udp 0 0 *.1029 *.* << rusersd デ−モン。 % cat /etc/inetd.conf telnet stream tcp nowait root /usr/etc/telnetd telnetd | # RPC-based services mountd/1 stream rpc/tcp wait/lc root /usr/etc/rpc.mountd mountd mountd/1 dgram rpc/udp wait/lc root /usr/etc/rpc.mountd mountd rusersd/1 dgram rpc/udp wait root /usr/etc/rpc.rusersd rusersd % cat /etc/services telnet 23/tcp | sunrpc 111/tcp rpcbind sunrpc 111/udp rpcbind % ps -e PID TTY TIME COMD | 157 ? 0:01 portmap 170 ? 0:00 nfsd << 170 から 173 と4個あった。nfsd は通常4個起 190 ? 0:00 rpc.statd 動される。rpc.statd, lockd も NFS サ−バ用。 195 ? 0:00 rpc.lockd 201 ? 0:00 inetd (2) NFS アクセスの基本 '97〜 * NFS デ−モン デ−モン名称 | Solaris 2.5.1 | Apollo,INDY,SunOS | 備考 --------------|----------------|-------------------|------------- portmapper | rpcbind | portmap | Sun RPC nfsd | nfsd | nfsd | NFS Server biod | なし | なし, biod, biod | NFS Client rpc.mountd | mountd | rpc.mountd | rpc.lockd | lockd | rpc.lockd | rpc.statd | statd | rpc.statd | ・nfsd は NFS のサ−バ側デ−モンである。たいがい nfsd デ−モンは1つのEWSで4 個ぐらい稼働して、クライアントからのアクセスを待っている。 ・biod は NFS のクライアント側デ−モンで、入出力処理をする。Apollo と Solaris に はこのデ−モンはない。INDY と SunOS 4.1.x は biod。 ・rpc.mountd はマウント要求を処理するデ−モンである。サ−バ側で起動する。 ・rpc.lockd とrpc.statd はペアで調整しながら、ファイルのロック等の処理をする。こ れらはサ−バ側で起動しておく。 ・NFS のサ−バとクライアントのEWSで UID, GID を一致させること。NFS のクライア ントがパソコンだと、そもそも DOS や Windows には UID, GID はないので関係ない。 [ サ−バ側制御ファイル&コマンド ] /etc/exports エクスポ−トするディレクトリとアクセス権利を記述する。エクスポ− トとは、他のマシンに解放するディレクトリを設定するということ。 /etc/exportfs -a で exports に書かれているディレクトリ全てをエクスポ−トする。 /etc/xtab エクスポ−トの状態がかかれる。cat で見ることができる。 % showmount どのマシンがどのディレクトリをマウントしているか表示する。-a オ プションでフルに情報表示。-d でディレクトリのみ表示する。 showmount host_name でリモ−ト・ホストの状態もみれる。 INDY の /etc/exports ---------------------------------------------------------------------------- |# |# NFS exported filesystem database (see exports(4) for more information). |# |# Entries in this file consist of lines containing the following fields: |# |# filesystem [ options ] [ netgroup ] [ hostname ] ... |# |# Filesystem must be left-justified and may name any directory within a |# local filesystem. A backslash (\) at the end of a line permits splitting |# long lines into shorter ones. Netgroup(4) and hostname refer |# to machines or collections of machines to which filesystem is exported. |# |/nix/cad -rw INDY 側でディレクトリ /nix/cad を READ, WRITE で解放する。 [ クライアント側制御ファイル&コマンド ] % mount 実際のマウントを行なう。 mount -p で現在マウントされているディレクトリを表示する。 /etc/fstab mount コマンドが参照するファイル。cat で見ることができる。 注.1) NFS の NFS はできない。お互いに NFS を張る場合、クロスマウントに注意する。 2) Solaris 2.5.x のコマンドは上記のものとやや異なっている。 3) マウントにはハ−ドとソフト・マウントがある。 ソフト・マウントでは NFS はス テ−トレスな状態という。ネットワ−クで問題が起きても、NFS は単に接続が切れ るだけだが、ハ−ド・マウントにすると、接続をず−っとキ−プし続ける。 * Apollo から INDY に NFS マウントする例 1) INDY で他のマシンにマウントを許すディレクトリを決める NFS サ−バのデ−モンを起動するには % chkconfig nfs on にしてリブ−トする。パ ソコンからも NFS アクセスしたい場合は pcnfsd on にする。オ−トマウントもでき るようにするには automount on にすること。作業は root で行うこと。 showmount や mount -p の見るだけのコマンドは一般ユ−ザでも有効である。 /etc/exports -------------- |/usr/doc -rw << read と write を許す。 |/usr/man -ro << read only にする。他、細かい設定ができる。 |#/nis << # はコメントです。 % /usr/etc/expotfs -a << これをやると /etc/exports が有効になる。メッセ− ジは何もでない。% 確認は showmount -e で見る。 % showmount -e << どのディレクトリを他のマシンに解放しているか見る。 export list for indy: /etc/xtab ファイルでも確認できる。 /usr/doc (everyone) ------------- /usr/man (everyone) |/usr/doc -rw |/usr/man -ro % exportfs -u /usr/man << 解除する場合はこれ。/usr/man を解除する。 % exportfs -u << showmount -e と同じ。解放ディレクトリを見る。何と /usr/doc なく全部解放するような気がするが、そうではない。 $ /usr/etc/showmount -e indy export list for indy: /usr/doc (everyone) << INDY の解放ディレクトリを Apollo から調べてみる。 2) Apollo 側でマウントする場所を作る $ wd /usr/manual $ crd abc << マウントするディレクトリを作成する。 { マウント前の状態 } $ /etc/mount -p << マウントの状態を表示する。/dev/wn0a は /dev/wn0a / 5.3 rw 865570487 0 0 最初からOSでマウントしている分である。 3) マニュアルでマウントする $ /etc/mount -o soft indy:/usr/doc /usr/manual/abc $ ld abc << INDY の /usr/doc にアクセスしている。 Directory "/usr/manual/abc": file1 file2 file3 $ wd abc << なんと Apollo のコマンドでファイルのアクセスがで $ cpf file1 test きる。優秀な Apollo DOMAIN_OS !。 { マウント後の状態 } $ /etc/mount -p マウントされている。 /dev/wn0a / 5.3 rw 865570487 0 0 ↓ indy:/usr/doc /usr/manual/abc nfs soft,rw 865571367 0 0 $ catf /etc/mtab << mount -p はこのファイルを見ている。 /dev/wn0a / 5.3 rw 865570487 0 0 indy:/usr/doc /usr/manaul/abc nfs soft,rw,dev=0010 865571367 0 0 [ NFS の親側でどこからマウントされているか見る ] % showmount -a << INDY 側でどこからマウントされているか見る。192.の apollo:/usr/doc 方は参考。 ホスト名が分からなければIPアドレスで 192.168.2.1:/usr/doc 表示される。2つのマシンからマウントされている。 身に覚えのないマウント情報が出てくる場合がある。どこからもマウントされていな いのに、マウントされていると出てくるのである。以前にマウントしたのが、情報だ けそのまま残ってしまっている場合である。 これは NFS を初期化したりコマンドを 色々やってもクリアされない。%showmount -a は内部では /etc/rmtab ファイルを見 ている。このファイルにはマウント情報が ASCII テキストで書かれている。 エディ タで不要なところを消して、マシンを再起動すればクリアされる。別に情報が残って いても、特に問題はないようだが、気持ち悪い。 4) マウントを解除する $ /etc/umount /usr/manual/abc << マウントしたのを個別に解除する。 $ /etc/mount -p << マウントがどうなった確認してみた。 /dev/wn0a / 5.3 rw 865570487 0 0 $ /etc/umount -a << ともかくマウントしたのを全て解除する。 $ /etc/umount -h indy << 相手側から自分がマウントした分を解除する。 [ マウントを解除する際の注意 ] $ /etc/umount /usr/manual/abc << カレントディレクトリが /usr/manual/abc の /usr/manual/abc: Device busy 中にあるとこうなる。先ずは外に抜けること。 * 上記でパケットの様子を INDY で見てみた % tcpdump tcpdump: listening on ec0 14:12:17.555128 apollo.977 > indy.sunrpc: udp 56 << indy の portmapper デ−モ 14:12:17.556030 indy.sunrpc > apollo.977: udp 28 ンにアクセスしている。 14:12:17.596676 apollo.978 > indy.1025: udp 100 14:12:17.819235 indy.1025 > apollo.978: udp 60 << 1025 は mountd である。 14:12:17.987633 apollo.339835f2 > indy.nfs: 116 getattr [|nfs] 14:12:17.990149 indy.nfs > apollo.339835f2: reply ok 96 getattr [|nfs] ここまで Apollo から INDY に mount をかけたところ 14:14:18.295010 apollo.3393e0d0 > indy.nfs: 108 getattr [|nfs] 14:14:18.297316 indy.nfs > apollo.3393e0d0: reply ok 96 getattr [|nfs] 14:14:18.309555 apollo.3394e0d0 > indy.nfs: 116 readdir [|nfs] 14:14:18.312283 indy.nfs > apollo.3394e0d0: reply ok 352 readdir [|nfs] 14:14:18.322105 apollo.3395e0d0 > indy.nfs: 116 readdir [|nfs] 14:14:18.327887 indy.nfs > apollo.3395e0d0: reply ok 36 readdir [|nfs] Apollo 側で ld をやったところ * 上記で NFS マウントしたパ−ミションは? $ wd /usr/manual $ /etc/mount -o soft indy:/usr/doc /usr/manual/abc $ wd abc $ ld -a sys type blocks current type uid used length attr rights name file nfs_file 5 2376 P file1.txt file nfs_file 7 3534 P file2.txt dir nfs_dir 1 512 P TEMP $ /bin/ls -l -rw-r--r-- 1 111 none 2376 Feb 15 2001 file1.txt -rw-r--r-- 1 katou none 3534 Feb 14 2001 file2.txt drwxr-xr-x 3 katou none 512 Jun 12 2002 TEMP % ls -l *** これは INDY で操作したもの *** -rw-rw-r-- 1 jirou user 2376 2月 14日 2001年 file1.txt -rw-r--r-- 1 katou user 3534 2月 14日 2001年 file1.txt drwxr-xr-x 3 katou user 512 6月 12日 2002年 TEMP ユ−ザ katou は Apollo, INDY 双方とも /etc/passwd に登録されていて、同じ番号にな っている。ユ−ザ jirou は Apollo側にはない。INDY の /etc/passwd に登録されている 番号が Apollo 側で 111 と出ている。グル−プは INDY 側で user は12番、Apollo 側 では12番は none になっている。 * 上記で Apollo のパケットのポ−トの様子は? $ /usr/etc/rpcinfo -p program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 822 status 100021 1 tcp 826 nlockmgr 100024 1 tcp 824 status 100021 1 udp 1025 nlockmgr 100005 1 udp 829 mountd 100005 2 udp 829 mountd 100021 3 tcp 832 nlockmgr 150001 1 udp 832 pcnfsd 100005 1 tcp 833 mountd 100021 3 udp 1026 nlockmgr 100005 2 tcp 833 mountd 100020 2 udp 1027 llockmgr 100020 2 tcp 837 llockmgr 100003 2 udp 2049 nfs 100021 2 tcp 840 nlockmgr 100021 2 udp 1029 nlockmgr (3) NFS アクセスの応用 '97〜 * Automount INDY sgi1 マシンの NFS サ−バに、Apollo からオ−トマウントを張ってみる。 sgi1 で は /usr/people 以下が解放されているとする。 NFS のクライアント側である Apollo で は /etc/auto.indy、ファイル名は何でもいいがマウント情報を書いておく。 あとはオ− トマウントのコマンドをたたけばよい。通常はマシンの起動時に設定しておくが、ここで は手動の場合を示した。/indy というディレクトリは先に作っておくのだが、ここに doc というディレクトリがマウント・ポイントしてできる。これであたかも sgi1 のファイル がロ−カルにあるかのようになる。 オ−トマウントにはフリ−ソフトの amd というのも ある、「UNIX MAGAZINE」'99/05, P.123〜131, "UNIXの玉手箱 amdの設定" 参照。 /etc/auto.indy ----------------------------------- |#doc -rw,soft sgi1:/usr/people/doc << ここ注意。soft と hard の指定がある。ハ− |doc -rw,hard sgi1:/usr/people/doc ド指定では、CTRL+C でも接続が切れなくなる。 一般的にはソフト指定で十分である。 $ login root $ /usr/etc/automount -m /indy /etc/auto.indy $ /bin/ps -ax 1261 ? S 0:00 /usr/etc/automount -m /indy /etc/auto.indy $ wd /indy $ ld doc Directory "/tmp_mnt/indy/doc": << ここ注意。 実際はテンポラリのディレクトリ file1 file2 dir1 にマウント・ポイントが作られる。 ここから リンクが張られるというわけだ。 $ /etc/mount -p /dev/wn0a / 5.3 rw .. sgi1:/usr/people/doc /tmp_mnt/indy/doc nfs rw,hard .. * pcnfsd pcnfsd はパソコンをクライアントとした、EWS用 NFS サ−バのフリ−ソフトとしてか なり以前からある。EWSに最初から入っているか、 パソコン用の NFS ソフトを買うと Sun 用のサ−バ・ソフトなどがついてくる。 どうもパソコンにおいても NFS のファイル 処理は、通常の nfsd デ−モンがやるようである。 pcnfsd デ−モンは、パソコンからの NFS アクセスに先立ってユ−ザ認証をするようである。 以前のパソコン用 NFS クライア ントでは、UNIXのファイル・アクセス権が無視されたようで、パソコンからは NFSサ −バ側全てのファイルに、自由にアクセスできてしまう問題があった。1997年に買っ た ASTEC-NFS95( NFS Client for Windows95 )では、UNIXと同じファイル・アクセス ができるようになっていた。 % chkconfig Flag State ==== ===== nfs on << 通常の NFS サ−バ・デ−モンも走らせること。 pcnfsd on << パソコン用 NFS サ−バ・デ−モン。 % ps -ef UID PID PPID C STIME TTY TIME COMD root 157 1 0 12月25日 ? 0:26 /usr/etc/portmap root 173 170 0 12月25日 ? 0:05 /usr/etc/nfsd 4 << 4個同様ある。 root 179 1 0 12月25日 ? 0:00 /usr/etc/biod 4 << 4個同様ある。 root 187 1 0 12月25日 ? 0:00 /usr/etc/rpc.statd root 192 1 0 12月25日 ? 0:00 /usr/etc/rpc.lockd root 195 1 0 12月25日 ? 0:00 /usr/etc/pcnfsd << pcnfsd on で root 541 1 0 12月25日 ? 0:00 /usr/etc/rpc.pcnfsd << この2つが出る。 [ Windows パソコンからのアクセス ] 例えば ASTEC-NFS95 をインスト−ルする。インスト−ルはあっさり終わる。 マシンを起 動すると NFS のユ−ザ名とパスワ−ドを聞いてくるようになる。 これらは先に聞いてく る Microsoft ネットワ−クのユ−ザ名とパスワ−ドが、 デフォルトで表示されることに なる。下の例ではユ−ザ名 doc というのを使うようにしている。それに NFS には誰でも アクセスできるというユ−ザ名 nobody が昔から決まっている。 UID, GID ともに -2 が 決まりである。nobody はなければなくても構わない。むしろ削除する方が望ましいか?。 Windows の画面が出たら、左上の "ネットワ−クコンピュ−タ" のアイコンをクリックし ていく。"NFS Servers" のところで、 同じセグメントにある NFS サ−バを自動的に探し てくる。ここでは 192.9.200.1 というIPアドレスのマシンが見つかっている。 他セグ メントの NFS サ−バは手動で設定することになる。 Windows マシンの TCP/IP のネット ワ−クの設定ができていれば、問題なく NFS アクセスできるはずである。 ただEWSと の相性が少しあるようで、INDY はOKだが、 Apollo の NFS サ−バにはアクセスできな いといった現象がでた。Apollo は MS-DOS の時はうまくいっていたのだが。 -------------------------- ------------------ ---------------- |ネットワ−ク コンピュ−タ |ネットワ−ク全体 |NFS Servers |------------------------- → |----------------- → |--------------- | ネットワ−ク全体 | NFS Servers | 192.9.200.1 | 192.9.201.1 << 注意。 ↓ --------------------------- ---------------- |doc (/usr/doc)-192.9.200.1 |192.9.200.1 |-------------------------- ← |--------------- | ■ □ □ |doc /usr/doc | xxx.html xxx.txt 192.9.200.1 マシンの /etc/passwd ファイル ------------------------------------------------------- |doc::110:12:Internet:/usr/people/doc:/bin/csh |nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null * NFS version 3 従来からある NFS は version 2 ということで、 Sun Microsystems 社がかの昔作ったも のである。同様 version 3 も Sun が中心となって先ず Solaris 2.5.x で実装した。 他 EWSメ−カの対応はぼちぼちであり、パソコン用 NFS で version 3 対応になっている のはまだ少ない。特徴としては、 一度に転送するデ−タサイズが 8 Kb から 64 Kb にな ったこと、UDP だけでなく TCP でもいいことになったことである。 それと非同期書き込 み機能がオプションとしてだが盛り込まれた。 非同期書き込みは Solaris 2.5.x には実装されているが、 他での対応はまだのようであ る。この機能は NFS のパフォ−マンスを上げるために期待できるものである。 キャッシ ュの働きによって、書き込み完了を待たなくてもよくなった。 これと version 3 ではデ ィレクトリをなめるのが速くなったこともいい話である。よく言われるのが、ディレクト リが階層構造だと、1階層ごと NFS は見に行くことを繰り返す。 これによりレスポンス がどうしても遅くなるということだった。 次に TCP と UDP の違いを見てみる。 NFS のファイル・アクセスは MTU 値の 1500 byte に分割されて送られる。もし1個でも分割されたデ−タに異常がおきたら、UDP の場合は 8 Kb 全部を最初から送り直すことになる。TCP では 1500 byte のパケット毎に、チェッ クされる。このためチェックの時間分 UDP より遅くなることになる。 しかし、正常なネ ットワ−クでは UDP パケットがなくなったり、 異常をきたしたりするのは稀とみなして よい。よって、UDP により NFS 通信した方が速度的にも望ましい。 ではなぜ TCP を version 3 でサポ−トしたか。 これはファイアウォ−ルを UDP パケッ トでは通しにくいということがある。 FireWall-1 なら安全に通すことができると宣伝は されているが、一般論としては UDP は出ていくのか、 入ってきたものかすらも分からな いので、フィルタリングが難しいのだ。もう一つ考えられるのは、Sun がその後すぐに出 した WebNFS の下地にしたのでないかということである。 * SGI の NFS の特徴 IRIX OSの NFS version 3 は、非同期書き込みはサポ−トしてない。8 Kb のままでUDP のみのサポ−トである。IRIX 5.3 には標準では version 2 が入っている。version 3 対 応にするには nfs3.sw.nfs3 サブシステムをインスト−ルして、パッチ 547を当てること。 IRIX 6.1 以降の NFS プロダクツは最初から version3 対応のソフトが入っている。 NFS のパフォ−マンスを改善するための別な機能として、 SGI には CacheFS というのが ある。リモ−トファイルのコピ−をロ−カルでも持つ。変更が少なく何度も読まれるファ イルに有効である。CacheFS のパラメ−タをいじるには cfsadmin を使って行なう。 IRIX 6.2 の ONC3/NFS には、automount の他に AutoFS というのがある。AutoFS はマル チスレッド対応している。マウント・ポイントをシンボリック・リンクにマウントしない ので効率がよい。通常オ−トマウントは /tmp_mnt 下に実際のマウント・ポイントを作る。 (4) OpenSSH のパスワ−ド認証 `24/02 * 概要 セキュアシェルと呼ばれる安全な telnet, ftp などのコマンドがある。 パスワ−ドなど 全パケットを暗号化する。Secure Shell 縮めて SSH と呼ぶ。 フィンランドの学者 Tatu Ylonenが1995年に、自分用のツ−ルとして初め開発した。便利なツ−ルということで 世界中に広まり、また会社も起こし、国内では http://www.ssh.com/jp/、 SSHコミュ ニケ−ションズ・セキュリティ(株)が製品版 "SSH Secure Shell" を販売している。製品 版でないのには、バ−ジョン SSH1 と SSH2 があるが、基本的にはフリ−ソフトではなく、 利用に制約も幾つかあるようである。フリ−にしたとかいろいろアナウンスはあるようだ が、よく分からない。これとは別に、OpenBSD のプロジェクトが開発している、UNIX 系の OpenSSH がある。こちらは完全なフリ−ソフトなので、ここでは OpenSSH を取り上 げることにする。GNU プロジェクトでも lsh というのを作っているとか。 SSH はプロトコル SSH1 と SSH2 がある。SSH2 が後から出たプロトコルで、SSH1 よりセ キュリティを強化させ速度も改善させた。さらに ftp に相当する sftpを新たに追加した。 SSH1 と SSH2 では互換性はないが、SSHコマンドはプロトコルを認識するようになってい る。コマンドには rlogin と telnet に対応する slogin、rsh の ssh、ftp のsftp、rcp の scp がある。他 rsync を SSH 対応にして使うことがもきる。nfs に対応する SSH も あるようだ。scp は vim の中でリモ−トのファイルを編集をするのに用いられる。SSHの クライントの Windows 用フリ−ソフトには、TeraTerm Pro にプラグインして使う TTSSH がある、ただし SSH1 のみ対応。もう一つ PuTTY というのがあり、SSH1 と SSH2 に対応 する。PuTTY が Windows ではお勧めである。sftp と scp は DOS 窓からの実行となる。 * OpenSSH のコンパイル&インスト−ル ここでは Solaris 2.6 に入れてみる。 先ず OpenSSH に必要な Zlib と OpenSSL をバ− ジョンに注意しながら、取ってきてコンパイル&インスト−ルする。付録も参照されたい。 Linux や FreeBSD なんかでは、最初から入っている。 http://www.openssh.com/ ftp.iij.ad.jp:/pub/OpenBSD/OpenSSH/portable から入手。 http://www.openssl.org/ OpenSSL 0.9.6 またはそれ以上。 http://www.gzip.org/zlib/ Zlib 1.1.4 またはそれ以上。 # cd /usr/local/source; ls -l -rw-r--r-- 1 root other 792280 3月 2日 ... openssh-3.7.1p2.tar.gz -rw-r--r-- 1 root other 2791797 3月 2日 ... openssl-0.9.7c.tar.gz -rw-r--r-- 1 root other 345833 3月 2日 ... zlib-1.2.1.tar.gz # /bin/csh # setenv PATH /usr/local/bin:/usr/ccs/bin:/usr/sbin:/usr/bin gcc version 2.95.2 19991024 (release) GNU ld version 2.11.2 (with BFD 2.11.2) GNU Make version 3.75 [ Zlib のコンパイル&インスト−ル ] # zcat zlib-1.2.1.tar.gz | tar xvf - # cd zlib-1.2.1 # ./configure # make << 以下 make は GNU のを使用。 # make install [ OpenSSL のコンパイル&インスト−ル ] # zcat openssl-0.9.7c.tar.gz | tar xvf - # cd openssl-0.9.7c # ./config << RANLIB =/usr/local/bin/ranlib、PERL =/usr/local/bin/perl。 # make << 30分ぐらいかかった。SPARCstation 5 はもうかなり遅い。 # make test << 5分ぐらい。 # make install [ OpenSSH のコンパイル&インスト−ル ] # useradd -d /var/empty -g 111 -u 333 -s /bin/false sshd /etc/passwd --------------------------------------- | | |sshd:x:333:111::/var/empty:/bin/false << # useradd で最後に追加された。 # zcat openssh-3.7.1p2.tar.gz | tar xvf - # cd openssh-3.7.1p2 # ./configure # make # make install << /var/empty ディレクトリが中で作られる。 | Generating public/private rsa1 key pair. Your identification has been saved in /usr/local/etc/ssh_host_key. Your public key has been saved in /usr/local/etc/ssh_host_key.pub. The key fingerprint is: 1a:6b:44:77:ac:3d:15:e9:dc:9c:ab:c8:78:29:c5:0d root@sola Generating public/private dsa key pair. Your identification has been saved in /usr/local/etc/ssh_host_dsa_key. Your public key has been saved in /usr/local/etc/ssh_host_dsa_key.pub. The key fingerprint is: 43:f9:b0:5e:06:fe:18:89:94:78:e8:18:8f:3c:70:82 root@sola Generating public/private rsa key pair. Your identification has been saved in /usr/local/etc/ssh_host_rsa_key. Your public key has been saved in /usr/local/etc/ssh_host_rsa_key.pub. The key fingerprint is: 90:87:87:66:0f:d6:89:d5:99:35:89:fa:30:69:50:dc root@sola /usr/local/sbin/sshd -t -f /usr/local/etc/sshd_config ssh へのリンク /usr/local/bin/ にできたファイル。 ↓ ssh scp ssh-add ssh-agent ssh-keygen ssh-keyscan sftp slogin /usr/local/sbin/sshd ← サ−バのプログラム。 /usr/local/libexec/ にできたファイル。 ssh-rand-helper ssh-keysign sftp-server クライアント用 サ−バ用制御ファイル /usr/local/etc/ にできたファイル。 ↓ ↓ moduli ssh_prng_cmds ssh_config sshd_config sshd.pid ssh_host_dsa_key ssh_host_dsa_key.pub ↑ ssh_host_key ssh_host_key.pub sshdデ−モン稼働 ssh_host_rsa_key ssh_host_rsa_key.pub 時のプロセスID [ 先ずは動作の確認 ] # /usr/local/sbin/sshd -d << デバック・オプションを付けてデ−モンを起動する。 # telnet localhost 22 << sshd デ−モンが動いている22番ポ−トにアクセス。 SSH-1.99-OpenSSH_3.7.1p2 * さっそくテスト indy sola マシンindy にも Solaris 同様 OpenSSH -------------- -------------- をインスト−ルした。indy IRIX 5.3 で |クライアント| slogin | サ−バ | は sshd がうまく動かなかった。でもク | | -----> | | ライアントとしては、問題なく動作した。 -------------- -------------- | .1 | .2 # /usr/local/sbin/sshd --------------------------------------------------- 192.168.1.0 katou でロッグイン ikken パスワ−ド:いっけん /nix/katou /usr/people/ikken [ Secure telnet アクセス ] indy% slogin ikken@sola The authenticity of host 'sola (192.168.1.2)' can't be established. RSA key fingerprint is 90:87:87:66:0f:d6:89:d5:99:35:89:fa:30:69:50:dc. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'sola,192.168.1.2' (RSA) to the list of known hosts. ikken@sola's password: いっけん Last login: Tue Mar 2 18:24:25 2004 Sun Microsystems Inc. SunOS 5.6 Generic August 1997 Sun Microsystems Inc. SunOS 5.6 Generic August 1997 $ pwd << つながった。ls でも何でも好きなように。 /usr/people/ikken $ ls sau.txt sss.txt vvv.txt $ exit Connection to sola closed. 上記の (yes/no)? で yes と答えると、 ユ−ザ katou のホ−ムディレクトリに .ssh デ ィレクトリが作成され、以下のファイルができる。次回からパスワ−ドしか聞いてこない。 indy% cd /nix/katou/.ssh; ls -l -rw-r--r-- 1 katou user 227 3月 2日 ... known_hosts -rw------- 1 katou user 1024 3月 2日 ... prng_seed sola:/usr/local/etc/ssh_host_rsa_key.pub、RSA 公開鍵 /nix/katou/.ssh/known_hosts ↓ -------------------------------------------------------------------------------- |sola,192.168.1.2 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAA...BWySqYeHekAUjG5cZ6GjIzFiU= indy% slogin ikken@192.168.1.2 << IPアドレスでアクセスしてみた。 ikken@192.168.1.2's password: いっけん Last login: Tue Mar 2 18:27:33 2004 from indy Sun Microsystems Inc. SunOS 5.6 Generic August 1997 Sun Microsystems Inc. SunOS 5.6 Generic August 1997 indy% slogin root@sola で、デフォルトで root でもロッグインできた。 サ−バ側の ikken のパスワ−ドを空にしたら、アクセスできなくなった。 [ Secure rsh アクセス ] [ Secure rcp アクセス ] indy% ssh ikken@sola "pwd;ls" コマンドは scp である。sftp が別に使えるので ikken@sola's password: いっけん 小生は特に使うつもりはない。一応オプションの /usr/people/ikken 説明を。-pでコピ−元のファイルの時刻とモ−ド sau.txt を維持してコピ−する。-rでディレクトリを再帰 sss.txt 的にコピ−する。-C で圧縮して転送する。 vvv.txt [ Secure FTP アクセス ] indy% sftp ikken@sola マシンsola の /usr/people/ikken にあるファイ ikken@sola's password: いっけん ルを、indy の /nix/katou にコピ−してみる例。 sftp> get s* Fetching /usr/people/ikken/sau.txt to sauth.txt /usr/people/ikken/sau.txt 100% 3534 0.0KB/s 00:00 Fetching /usr/people/ikken/sss.txt to sss.txt /usr/people/ikken/sss.txt 100% 2376 0.0KB/s 00:00 sftp> bye * ポ−トフォワ−ド機能 indy% ssh -L 1100:sola:110 ikken@sola マシン sola は実はMail-Store で POP3 ikken@sola's password: いっけん サ−バが稼働している。 Last login: Wed Mar 3 12:07:29 2004 from indy Sun Microsystems Inc. SunOS 5.6 Generic August 1997 Sun Microsystems Inc. SunOS 5.6 Generic August 1997 indy% telnet localhost 1100 このマシンでメ−ルソフトを動かしPOP3 Trying 127.0.0.1... サ−バのIPアドレスをlocalhost にし Connected to localhost. て、ポ−ト番号を 1100 とすれば、メ− Escape character is '^]'. ルを取ってくる。ただし他のマシンから +OK QPOP (version 3.0.2) at sola starting. 1100 番ポ−トにアクセスはできない。 * 参考 「UNIX MAGAZINE」2003/07, P.87〜101, "UNIXの道具箱 SSH"、中山貴夫。 > これだけ参考にすればいいです。8月号、9月号にも SSH(2)、SSH(3) と続きがある。 「NETWORK MAGAZINE」2002/02, P.182〜185, "SSH を使ったセキュアサ−バ構築入門"。 > 第6回ポ−トフォワ−ドを使ってみよう。これ以下一応こんな記事もあったというだけ。 「Software Design」 2001/01, P.158〜165, "BSDクラブ FreeBSD 管理風雲録第17回 > SSHの話(その2)"。クライアントのオプションに詳しい。http://www.cypac.co.jp/ に筆者のバックアップ専用スクリプト stdbkup の紹介もある。 「Software Design」 2003/06, P.46〜55, "特集:ここだけは押えておきたいVPN構築 > のツボ。4) モバイルユ−ザ必須のSSH、OpenSSH 接続で軽快VPN" (5) OpenSSH の暗号化認証 `24/03 * クライアントで RSA 暗号鍵を作る indy □ sola □ |slogin など |sshd デ−モン --------------------------------------------- /nix/katou/.ssh/ /usr/people/katou/.ssh/ authorized_keys2ファイル known_hosts prng_seed は作成、内容の変更など直 id_rsa 秘密鍵 ちに有効になる。sshdデ− id_rsa.pub 公開鍵 -----> authorized_keys2 モンは起動しなくてもいい。 * パスフレ−ズなしの場合 Client-katou で Server-katou にアクセス indy% ssh-keygen -t rsa << katou でロッグイン。 Generating public/private rsa key pair. Enter file in which to save the key (/nix/katou/.ssh/id_rsa): Enter passphrase (empty for no passphrase): パスフレ−ズなし Enter same passphrase again: パスフレ−ズなし Your identification has been saved in /nix/katou/.ssh/id_rsa. << User katouのRSA Your public key has been saved in /nix/katou/.ssh/id_rsa.pub. << 秘密鍵と公開鍵。 The key fingerprint is: b1:bd:8e:6d:a0:1a:83:f9:36:66:17:b3:b4:2b:e8:f8 katou@indy << katou@indy はた だのコメント。 indy% ls -l /nix/katou/.ssh -rw------- 1 katou user 887 3月 4日 ... id_rsa << パ−ミッションに注意。 -rw-r--r-- 1 katou user 222 3月 4日 ... id_rsa.pub 秘密鍵だから他の人に -rw-r--r-- 1 katou user 227 3月 3日 ... known_hosts は見せないようにする。 -rw------- 1 katou user 1024 3月 4日 ... prng_seed % chmod 600 とかやる。 sola# cd /usr/people/katou << katou でロッグイン。 sola# mkdir .ssh sola# chmod 700 .ssh indy:/nix/katou/.ssh/id_rsa.pub を ( ユ−ザ katou 用の RSA 公開鍵 ) sola:/usr/people/katou/.ssh/authorized_keys2 にコピ−する。 indy% ssh katou@sola "cd .ssh;ls -l" << いきなりアクセスした。ちょっと危険。 -rw-r--r-- 1 katou staff 222 Mar 4 ... authorized_keys2 * パスフレ−ズありの場合 Client-jirou で Server-katou にアクセス indy% /usr/local/bin/ssh-keygen -t rsa << jirou でロッグイン。 Generating public/private rsa key pair. Enter file in which to save the key (/nix/jirou/.ssh/id_rsa): Enter passphrase (empty for no passphrase): じろう << パスフレ−ズの長さ Enter same passphrase again: じろう は10から30文字 Your identification has been saved in /nix/jirou/.ssh/id_rsa. 程度。別に8文字ぐ Your public key has been saved in /nix/jirou/.ssh/id_rsa.pub. らいでも構わない。 The key fingerprint is: 07:48:fe:9a:29:06:87:c2:d5:86:84:e7:18:af:8f:14 jirou@indy indy% ls -l /nix/jirou/.ssh -rw------- 1 jirou user 951 3月 4日 ... id_rsa -rw-r--r-- 1 jirou user 221 3月 4日 ... id_rsa.pub -rw------- 1 jirou user 1024 3月 4日 ... prng_seed indy:/nix/jirou/.ssh/id_rsa.pub -------------------------------------------------------------------------------- |ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA2Td95RgYptTUumc/RxD...efT6EK97k= jirou@indy sola# cd /usr/people/katou/.ssh << 上の id_rsa.pub を sola に PPP というよう sola# cat PPP >> authorized_keys2 なファイル名で持ってきて、追加する。 sola:/usr/people/katou/.ssh/authorized_keys2 katou と jirou の公開鍵がある -------------------------------------------------------------------------------- |ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAt98rze7RiN4nSRQh3JR...J8Lyi+mGc= katou@indy |ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA2Td95RgYptTUumc/RxD...efT6EK97k= jirou@indy indy% slogin katou@sola Enter passphrase for key '/nix/jirou/.ssh/id_rsa': じろう マシン indy は別 Last login: Thu Mar 4 15:16:31 2004 from indy なホストのように Sun Microsystems Inc. SunOS 5.6 Generic August 1997 描いたが、同一マ Sun Microsystems Inc. SunOS 5.6 Generic August 1997 シンでも同じこと。 $ indy □ クライアント sola □ サ−バのアクセス先 indy □ クライアント | ユ−ザ katou | ユ−ザは katou | ユ−ザ jirou --------------------------------------------------------------------- /nix/katou/.ssh/ /usr/people/katou/.ssh/ /nix/jirou/.ssh/ id_rsa.pub 公開鍵 ---> authorized_keys2 ファイル <--- id_rsa.pub 公開鍵 * RSA/DSA 認証の動き方 Client Server クライアントのマシンでは ------------------------------ ------------- ユ−ザ katouでロッグイン | User katou | katouの秘密鍵 | | katou の | して暗号化鍵を作った。そ |----------------------------| ------> | 公開鍵 | れをユ−ザ jirouのホ−ム | User jirou | katouの秘密鍵 | |192.168.1.2| ディレクトリの .ssh/にも ------------------------------ ------------- コピ−したという図式。 katou% slogin 192.168.1.2 は katou% slogin katou@192.168.1.2 ということ。 サ−バ 側に伝えられるユ−ザ名は、特に指定しない場合は、クライアントのマシンでのロッグイ ン名がデフォルトとして取られる。 jirou% slogin 192.168.1.2 は jirou% slogin jirou@192.168.1.2 ということ、 アクセ スできない。サ−バ側のユ−ザ名を次のどちらかで指定すればアクセスできるようになる。 jirou% slogin -l katou 192.168.1.2 または jirou% slogin katou@192.168.1.2。 サ−バ側でユ−ザの katou でロッグインして、# ssh -keygen -t rsa で暗号化鍵を作り、 それをクライアント側のマシン、ユ−ザ katou の .ssh/ にコピ−してもよい。要はクラ イアントでロッグインしているホ−ムディレクトリに暗号化鍵があればいいということ。 katou% slogin jirou@192.168.1.2 はどうか。Client-katou で Server-jirouにアクセス。 できない。サ−バ側に jirou というユ−ザを作り、そのホ−ムディレクトリの .ssh/ に katou の公開鍵をコピ−すればアクセスできるようになる。 * まとめなど ユ−ザの認証方法にはパスワ−ド認証、RSA/DSA 認証、R系認証、それに s/keyワンタイ ム・パスワ−ド認証がある。 パスワ−ド認証はサ−バ側の /etc/passwd にユ−ザ名があ ればロッグインできる。この場合でもパスワ−ドは暗号化されて送られるので、一定の安 全性はある。R系認証は rlogin や rcp で使う .rhosts などを利用するやり方である。 RSA/DSA 認証は、基本的にユ−ザの公開鍵と秘密鍵はユ−ザ側で作成する。そして自分の 公開鍵をアクセスしたいサ−バに登録する。秘密鍵を使う際にはパスフレ−ズを入れない と使えないようにできる。パソコンにパスフレ−ズ無しで秘密鍵を使えるようにしていた ら、パソコン盗まれたらそのまま SSH サ−バにアクセスされてしまう。 SSH のクライアント、つまりユ−ザの暗号化認証には RSA と DSA の方式がある。DSA は RSA が特許の関係で加えられたものである。RSA はすでに特許切れになっていて、暗号化 強度としては RSA も DSA も遜色ない。どちらを使ってもいい。SSH2 の RSA 鍵でいいの でないかな。ユ−ザの暗号化鍵は以下のように作る。 % ssh-keygen -t rsa1 : SSH1 の RSA 鍵、identity identity.pub。 % ssh-keygen -t rsa : SSH2 の RSA 鍵、id_rsa id_rsa.pub。 % ssh-keygen -t dsa : SSH2 の DSA 鍵、id_dsa id_dsa.pub。または -d 指定。 ssh-add と ssh-agent を使えば、暗号化認証でパスフレ−ズを使う場合、 毎回パスフレ −ズを入力しないようにできる。最初一回、パスフレ−ズを入れれば覚えていて、代わり にパスフレ−ズを出してくれる。小生は特に使うつもりはない。 でも vim でリモ−トの ファイルをエディットする様な頻繁な利用では、手間が省けて有難いかも知れない。 sshd サ−バ用のデフォルト制御ファイルは、/usr/local/etc/sshd_config である。sshd は -f オプションでファイル名の指定ができる。sshd_config ファイルにはコメントでデ フォルトの設定が記述されている。ホスト/ユ−ザのアクセス制限の記述もできる。次は お勧めの使い方として、パスフレ−ズ付きで RSA/DSA 認証のみ利用する設定である。 /usr/local/etc/sshd_config --------------------------- | | |PermitRootLogin no << root ロッグインは許さない。 |PasswordAuthentication no << UNIXパスワ−ド認証は許さない。 |#PermitEmptyPasswords no << 空のパスワ−ドは許さない。デフォルト。 |Subsystem sftp /usr/local/libexec/sftp-server << sftp サ−バ。 結局、相手サ−バのホ−ムディレクトリの.ssh/authorized_keys2 に対応する秘密鍵を持 っているマシン、ユ−ザは誰でもアクセスできてしまう。authorized_keys2ファイルでは それを制限する記述ができる。from="192.168.1.1" ssh-rsa AAAAB3 というように書けば 192.168.1.1 のみ許可する。from="!indy" ss.. なら、ホスト indy は許可しないとなる。 * 参考:slogin をデバッグモ−ドにて sola% slogin -v ikken@sola OpenSSH_3.7.1p2, SSH protocols 1.5/2.0, OpenSSL 0.9.7c 30 Sep 2003 debug1: Reading configuration data /usr/local/etc/ssh_config debug1: Connecting to sola [192.168.1.2] port 22. debug1: Connection established. debug1: identity file /usr/people/ikken/.ssh/identity type -1 debug1: identity file /usr/people/ikken/.ssh/id_rsa type 1 debug1: identity file /usr/people/ikken/.ssh/id_dsa type -1 debug1: Remote protocol version 1.99, remote software version OpenSSH_3.7.1p2 debug1: match: OpenSSH_3.7.1p2 pat OpenSSH* debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_3.7.1p2 debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client aes128-cbc hmac-md5 none debug1: kex: client->server aes128-cbc hmac-md5 none debug1: SSH2_MSG_KEX_DH_GEX_REQUEST sent debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP debug1: SSH2_MSG_KEX_DH_GEX_INIT sent debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY The authenticity of host 'sola (192.168.1.2)' can't be established. RSA key fingerprint is 11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:dc. << 適当。 Are you sure you want to continue connecting (yes/no)? y Please type 'yes' or 'no': yes Warning: Permanently added 'sola,192.168.1.2' (RSA) to the list of known hosts. debug1: ssh_rsa_verify: signature correct debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: SSH2_MSG_SERVICE_REQUEST sent debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey,password,keyboard-interactive debug1: Next authentication method: publickey debug1: Trying private key: /usr/people/ikken/.ssh/identity debug1: Offering public key: /usr/people/ikken/.ssh/id_rsa debug1: Server accepts key: pkalg ssh-rsa blen 149 debug1: read PEM private key done: type RSA debug1: Authentication succeeded (publickey). debug1: channel 0: new [client-session] debug1: Entering interactive session. | $ exit 途中にコマンドプロンプトが出てきた。exit と入れて抜けた。 debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: channel 0: free: client-session, nchannels 1 Connection to sola closed. debug1: Transferred: stdin 0, stdout 0, stderr 28 bytes in 48.7 seconds debug1: Bytes per second: stdin 0.0, stdout 0.0, stderr 0.6 debug1: Exit status 1 sola% ------------------------------------------------------------------------------------ [ 付録 ] OpenSSH の Solaris 2.6 へのインスト−ルとヘルプ * OpenSSH の Solaris 2.6 へのインスト−ル # ls -F zlib-1.2.1 ChangeLog as400/ gzio.c minigzip.c zconf.in.h FAQ compress.c infback.c msdos/ zlib.3 INDEX configure* inffast.c old/ zlib.h Makefile contrib/ inffast.h qnx/ zutil.c Makefile.in crc32.c inffixed.h trees.c zutil.h README crc32.h inflate.c trees.h adler32.c deflate.c inflate.h uncompr.c algorithm.txt deflate.h inftrees.c win32/ amiga/ example.c inftrees.h zconf.h # make install cp zlib.h zconf.h /usr/local/include chmod 644 /usr/local/include/zlib.h /usr/local/include/zconf.h cp libz.a /usr/local/lib cd /usr/local/lib; chmod 755 libz.a cd /usr/local/lib; if test -f libz.so.1.2.1; then \ rm -f libz.so libz.so.1; \ ln -s libz.so.1.2.1 libz.so; \ ln -s libz.so.1.2.1 libz.so.1; \ (ldconfig || true) >/dev/null 2>&1; \ fi cp zlib.3 /usr/local/share/man/man3 chmod 644 /usr/local/share/man/man3/zlib.3 # ls -F openssl-0.9.7c CHANGES MacOS/ bugs/ openssl.doxy CHANGES.SSLeay Makefile@ certs/ openssl.spec Configure* Makefile.org config* os2/ FAQ Makefile.ssl crypto/ perl/ INSTALL Makefile.ssl.bak demos/ shlib/ INSTALL.DJGPP NEWS doc/ ssl/ INSTALL.MacOS PROBLEMS e_os.h test/ INSTALL.OS2 README e_os2.h times/ INSTALL.VMS README.ASN1 include/ tools/ INSTALL.W32 README.ENGINE install.com util/ INSTALL.WCE VMS/ makevms.com* LICENSE apps/ ms/ * OpenSSH コマンドのヘルプ % sftp ikken@sola sftp> ? Available commands: cd path Change remote directory to 'path' lcd path Change local directory to 'path' chgrp grp path Change group of file 'path' to 'grp' chmod mode path Change permissions of file 'path' to 'mode' chown own path Change owner of file 'path' to 'own' help Display this help text get remote-path [local-path] Download file lls [ls-options [path]] Display local directory listing ln oldpath newpath Symlink remote file lmkdir path Create local directory lpwd Print local working directory ls [path] Display remote directory listing lumask umask Set local umask to 'umask' mkdir path Create remote directory progress Toggle display of progress meter put local-path [remote-path] Upload file pwd Display remote working directory exit Quit sftp quit Quit sftp rename oldpath newpath Rename remote file rmdir path Remove remote directory rm path Delete remote file symlink oldpath newpath Symlink remote file version Show SFTP version !command Execute 'command' in local shell ! Escape to local shell ? Synonym for help % sftp -help usage: sftp [-vC1] [-b batchfile] [-o ssh_option] [-s subsystem | sftp_server] [-B buffer_size] [-F ssh_config] [-P sftp_server path] [-R num_requests] [-S program] [user@]host[:file [file]] % scp -help scp: illegal option -- h usage: scp [-pqrvBC1246] [-F config] [-S program] [-P port] [-c cipher] [-i identity] [-l limit] [-o option] [[user@]host1:]file1 [...] [[user@]host2:]file2 % slogin -help slogin: illegal option -- h Usage: slogin [options] host [command] Options: -l user Log in using this user name. -n Redirect input from /dev/null. -F config Config file (default: ~/.ssh/config). -A Enable authentication agent forwarding. -a Disable authentication agent forwarding (default). -X Enable X11 connection forwarding. -x Disable X11 connection forwarding (default). -i file Identity for public key authentication (default: ~/.ssh/identity) -t Tty; allocate a tty even if command is given. -T Do not allocate a tty. -v Verbose; display verbose debugging messages. << やり取りが出て来る。 Multiple -v increases verbosity. -V Display version number only. -q Quiet; don't display any warning messages. -f Fork into background after authentication. -e char Set escape character; ``none'' = disable (default: ~). -c cipher Select encryption algorithm -m macs Specify MAC algorithms for protocol version 2. -p port Connect to this port. Server must be on the same port. -L listen-port:host:port Forward local port to remote address -R listen-port:host:port Forward remote port to local address These cause slogin to listen for connections on a port, and forward them to the other side by connecting to host:port. -D port Enable dynamic application-level port forwarding. -C Enable compression. << Zlib を入れたので圧縮ができる。 -N Do not execute a shell or command. -g Allow remote hosts to connect to forwarded ports. -1 Force protocol version 1. -2 Force protocol version 2. -4 Use IPv4 only. -6 Use IPv6 only. -o 'option' Process the option as if it was read from a configuration file. -s Invoke command (mandatory) as SSH2 subsystem. -b addr Local IP address. % slogin ikken@sola $ ~? << チルダ押しながら '?' を押す。 Supported escape sequences: ~. - terminate connection ~B - send a BREAK to the remote system ~C - open a command line ~R - Request rekey (SSH protocol 2 only) ~^Z - suspend ssh ~# - list forwarded connections ~& - background ssh (when waiting for connections to terminate) ~? - this message ~~ - send the escape character by typing it twice (Note that escapes are only recognized immediately after newline.) $ << チルダ押しながら '.' を押すと抜ける。 $ Connection to taro closed.