<< SSH のすすめ >>

リモートからログインする環境



最近では ローミングサービスやIBM 、 ATT 、AOL などの現地サービスの
普及で海外旅行中でもインターネットに接続して WEB を見たり メールを
読んだりできる環境が整いつつありますね。

自セグメント以外からの接続では、ネットに流すパスワード等重要な情報への
配慮が必要に迫られつつあります。いえ、実はとっくにそうなんですが。

自前サーバーの管理を旅行中といえども、やらなきゃいけない
かわいそうな人は切実ですよね。root のパスなんてネットに流せないし。

通常、ネットを流れる情報は暗号化されていないので、パスワードなども
生で流れます。これを途中で覗き見る事はじつは簡単な事なんですね。
つまり流す方にとって大変、恐い気持ちの悪い事なんです。

流れるのが多いのはきっと、pop のパスワードでしょう。
telnet などと違って pop のパスワードは1つパケット上に
乗ってしまっています。
で、それはログインアカウントのパスワードと一緒でしょうから
ホスト側(プロバイダのサーバー)が アクセス制御もしてない環境では
簡単に偽りログインされてしまいます。

さて、あなたのサーバーのホストはアクセス制御してますか?
っていうのはここでは置いといて。。

その前の ネットに流すパスワードを暗号化しようってお話です。
SSH を使って通信内容(パスワード含めて)を暗号化できます。
では順番に




1)SSH のインストール
	a) 準備
		ssh-1.2.26.tar.gz

		/usr/local/src とかに上記アーカイブを持ってくる


	b) 展開、make、インストール

		% cd /usr/local/src
		% gtar -zxvf ssh-1.2.26.tar.gz

		% cd ssh-1.2.26
		% ./configure	でもいいが、option でrsh までのパスを
				指定するといいかも知れない。
		 --with-rsh=/usr/bin/rsh とか SunOS4 では /usr/ucb/rsh となる。


		また、rlogin rsh rcp などのコマンドと連携するように option で
		--program-transform-name='s/^s/r/' とすればいいでしょう。

		まとめると
		% ./configure --with-rsh=/usr/bin/rsh \
		              --program-transform-name='s/^s/r/'
		(rsh へのパスはそれぞれの環境に合わせて下さい)


		% make

		% su
		# make install





2)暗号鍵の生成( 手元のマシンで )
	暗号鍵には公開鍵と秘密鍵がありますが、自分の手もとのマシンで
	% ssh-keygen とすることで、両方の鍵が作られます。

	パスフレーズ(pass-phrase)は10〜30文字で容易に推測できないように。

	デフォルトでは ~/.ssh 以下に identity     (秘密鍵)
	                             identity.pub (公開鍵)が作られます。

	公開鍵を接続先のホストに ~/.ssh 以下に authorized_keys として
	コピーします。
	% chmod 600 authorized_keys としてパーミッションを変えます。






3) sshd の起動( サーバー側 )
	inetd 経由で sshd を起動する場合、そのリクエスト毎に鍵の計算を
	するので、遅い計算機では結構待たされる事になります。
	そのような場合は デーモンで起動しておくといいでしょう。

	SSHではコネクションを張る際の認証に時間がかかりますが、圧縮して
	送りますので、通信スピードは通常のr コマンドより速くなるらしいです。
	( 計ったわけではありませんが。)


	--おまけ--


	inetd 経由での起動は
		/etc/sevices を編集して
		ssh	22/tcp
		ssh	22/udp
		の2行を追加する。

		/etc/inetd.conf を編集して
		ssh	stream	tcp nowait	root	/usr/local/sbin/sshd sshd -i
		の1行を追加する。
		** sshd にパスが通ってない時は sshd までのフルパスを書く事
		( 普通は通ってないかな。。)

		inetd のプロセスID を 
		# ps aux | grep inetd 
		で調べ
		# kill -HUP (inetdのpid) 



	BSD系のOSでの デーモンの起動は /etc/rc.local の中に
		if [ -f /usr/local/sbin/sshd [; then
			/usr/local/sbin/sshd && echo " Start SSHD daemon "
		fi
	などと書いておきます。reboot 後 sshd が立ち上がっています。
	% ps aux | grep sshd で確認


	--おまけ--ここまで--






4)SSH の使用
	例として SSH で telnet を使う。

	まず SSH で リモートホストへ接続します。
	2023 とは -L option で指定する使われていない適当なポート番号です。
	23 は telnet の標準ポート番号です。

	% ssh -L 2023:リモートホスト名:23 リモートホスト名
	とやっておいて別のターミナルから

	% telnet localhost 2023
	とすれば接続完了です。



	以上、X11 の転送機能のようなものを使って、SSH で実行した 2023 番の
	ポートを 23 番に転送しています。




5)Windows 環境からの SSH の使用
	持って出る環境、つまりノートPCなどは Windows 環境な事が多いでしょう。
	ここでは Windows マシンから SSH 経由で telnet ログインするようにします。

	a) 準備
		TeraTerm-Pro2.3 (フリーソフト):vector などにあります。
		TTSSH1.4        (フリーソフト):こちらから頂きました。

		Windows 環境では定番の TeraTerm で SSH 経由でtelnetするため
		TTSSH という ライブラリを使います。


	b) インストール
		TeraTerm Pro は通常のインストーラで普通にインストールします。

		同じディレクトリに TTSSH のzipアーカイブを展開します。

		TeraTermの環境変数のセットをします。
		Win95では autoexec.bat に SET TERATERM_EXTENSIONS=1 を追加
		WinNTでは 「コントロールパネル」--> 「システム」--> 
		          「環境」を開き 変数 --> TERATERM_EXTENSIONS
		                         値   --> 1
		を設定する。

		システムリブートする。


	c) 使う
		ttssh.exe を起動するか TeraTerm を起動し 「NewConnection」
		でSSH を選んで OK をクリックする。

		次のダイアログで user name を入れて pass phrase を入れ
		「Use RSA key to log in 」を選び 「Private key」をクリック
		して identity ファイルの場所を指示する。
		ok を押す。

		接続が始まる。

		ここからは 通常の telnet と一緒です。


6)Windows 環境からの SSHポートフォワーディング経由で
    安全なメールのやりとりをする。

		インターネットではじつはpopの認証が一番恐かったりしますね。
		telnet などの他のサービスと違って pop の認証は
		生パスワードを通信経路に1つのパケット上に入れて流します。
		secure もへったくれもあったもんじゃないです。

		メールサーバーがAPOPに対応していれば、パスワード自体は
		保護できますが、通信内容は丸見えです。
		普通は qpopper を with-APOPでコンパイルしますが。

		そうでない場合は SSH を使って メール全体も 安全な経路に流すように
		します。

		上記 5)までの環境ができていれば、あとは設定だけです。
		なにもいりません。
		TeratermPRO+TTSSH ライブラリでは ポートフォワード機能が
		サポートされているので、簡単に実現できます。

	重要)当然ですが ポートをフォワードするので pop3 の
		ポート番号を変更できるメーラーを使っている事が重要です。
		fetchmail や Win環境なら「Becky」 などを使っていれば
		問題ありませんが、腐っているメーラーの代表選手「Outlook Express」
		などは他にも問題があるのでこの際やめましょう。
		( このページをご覧の方はいないと思いますが。。。(^^;;    )

	訂正)後日、OutlookExpress でもポート番号の変更は可能ということが
		判りました。(^^;
		んーでも、他の問題もあるし。。(マクロウィルスとか)
		なんといってもたかがメーラーであんなに重いし。。。
		やっぱ、OutlookExpress やめたほうがいいと思うです。

		# 通じゃないし。。。ぼそっ(^.^;;
		# ヘッダ見られてばかにされるのやでしょ。。


	a) サーバー側設定
		pop3 と sshd が動いていれば設定は特にありません。

	b) クライアント側設定
		TeratermPRO のsetup メニューから
		--> SSH Forwarding をクリック
		--> add をクリック
		--> Forward loacl port に 使っていない 6110 などを
		--> to remote machine にメールサーバーを( IP なら確実 )
		--> port に 110 ( pop3 のデフォルト )を入れて ok 、ok を
		--> 念のため Save Setup をする。

	c)メーラーの設定
		Becky では ツールから
		--> 設定をクリック
		--> 高度をクリック
		--> pop3ポート番号を6110 などに

		POPサーバー名を localhost にします。


	d)順番
		使い方は TeratermPRO でまず SSH 経路をつなげます。
		その時 option の ポートフォワーディング機能が
		設定されているので、あとは通常とおりメーラーを
		使えば、OK です。

		構成ですがこんな感じです。



(通常のPOP3でパスワード垂れ流しのばやい)

クライアント側  |                  | サーバー側
                |                  |
                |                  |
                | 110/tcp  110/tcp |
   Becky   -------- The INTERNET ------- POP3 daemon
   Fetchmail    |                  |
                |                  |



( SSH でトンネル経由で使うばやい )

クライアント側  |                  | サーバー側
                |                  |
                |                  |
TeratwermPRO    | 22/tcp    22/tcp |
 + TTSSH   -------- The INTERNET ------- sshd
    |           |                  |       |
    |           |                  |     110/tcp
    |           |                  |   ( POP3 daemon )
  6110/tcp 
  Becky や
  Fetchmail




		この辺まで、やってやっと少しは安心になってきますね。
		めでたし、めでたし。









それではごきげんよう     ふろ〜む  しんたろ@茨城県境町の空のしたより

             ∩  ∩           E-mail
           ( ̄。 ̄)..zzZ   URL          http://www.shin.nu/
        〜(_ x _)  




表紙へ戻る