Kozupon.com    
 
 DebianGNULinux3.1SargeでSSH!


Debianをインストールすると、デフォルトでSSHがセットアップされる。したがって、リモートクライアントはSSHを選んだほうが楽だ。そこで、Debianでめちゃくちゃ簡単にSSHをセットアップして、ちゃんと暗号化通信出来る状態にするところまでを伝授したい。

セットアップ環境)
マシン : Dell OptiplexGX1(PentiumU)
OS : DebianGNULinux3.1Sarge


1.SSHのセットアップ
SSHは、DebianをセットアップしたときにデフォルトでSSHがインストールされている環境を想定する。


2.SSHの鍵の作成
ssh-keygenを使って鍵を作成する。ここでは、1024ビットのrsa鍵を作成する。

ns:~# ssh-keygen -t rsa        ←ここでは、rsa方式で鍵を作るが、dsa方式が良いので有れば「-t dsa」みたいに入力すればよい

ssh-keygenを実行して、パスフレーズを入力し終えると、以下の場所にファイルが生成される。
ns:~# ls -al /root/.ssh/
total 20
drwx------ 2 root root 4096 May 29 09:44 .
drwxr-xr-x 5 root root 4096 Nov 12 2005 ..
-rw------- 1 root root 736 May 29 09:44 id_rsa
-rw-r--r-- 1 root root 597 May 29 09:44 id_rsa.pub
-rw-r--r-- 1 root root 227 Oct 19 2005 known_hosts


3.SSH鍵の設置とオーナーとパーミッションの設定
2項で作った鍵をこのサーバへloginするユーザのホームディレクトリへ設置する。
例えば、loginユーザを user と言う名前とする。

ns:~# mkdir /home/user/.ssh
ns:~# chown user.user /home/user/.ssh
ns:~# chmod 700 /home/user/.ssh
ns:~# cp /root/.ssh/id_rsa.pub /home/user/.ssh/authorized_keys
ns:~# chown user.user /home/user/.ssh/authorized_keys
ns:~# chmod 600 /home/user/.ssh/authorized_keys

注 : .sshのパーミッションは「700」、authorized_keysのパーミッションは「600」にすること。これを間違えると以下のエラーでアクセス不可になるので気をつけること。Puttyでloginしようとすると直ぐにダイアログが消滅してしまう。
Jun 10 17:22:10 ns sshd[2626]: Received disconnect from 192.168.255.2: 14: No supported authentication methods available


4.sshd_configの編集
sshがデフォルトでセットアップされて、何もしない状態では以下のようになっている。
■ SSH2のみが有効となっている。
■ パスワード認証は、行わないモードになっている。
■ rootでlogin出来てしまう。
したがって、以下のsshd_configを参考にして、濃い青字のように編集する。だから、設定はいたって簡単だ。

ns:~# vi /etc/ssh/sshd_config
Port 22

Protocol 2

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key

UsePrivilegeSeparation yes

KeyRegenerationInterval 3600

ServerKeyBits 1024

SyslogFacility AUTH

LogLevel INFO

LoginGraceTime 600

PermitRootLogin no           #rootでのログインを許可するかどうか、デフォルトは「yes」

StrictModes yes

# RSAAuthentication yes         #SSHバージョン1の時のRSA認証の許可・不可の選択、SSH2の場合は特に必要なし

PubkeyAuthentication yes      #PublicKey による認証許可

AuthorizedKeysFile %h/.ssh/authorized_keys

IgnoreRhosts yes             # .rhosts を無視

RhostsRSAAuthentication no    #rhosts による認証禁止

HostbasedAuthentication no

IgnoreUserKnownHosts yes

PermitEmptyPasswords no      #空のパスワードを許可するかどうか、デフォルトは「no」

ChallengeResponseAuthentication no

PasswordAuthentication no     #パスワード認証を許可するかどうか(テキスト認証)デフォルトは、「yes」

AllowUsers hoge unko chinko   #loginを許可するユーザ

X11Forwarding no

X11DisplayOffset 10

PrintMotd no

KeepAlive yes

UseLogin no

Subsystem sftp /usr/lib/sftp-server

UsePAM no

注:SSHの意味を考えると、PasswordAuthentication(パスワードのみによる認証を許可するか?)を「no」にして、本ネタ7項のようなRSA側で認証するようにした方が望ましい。

他に、AllowHostsやDenyHostsパラメータで許可するホスト、拒否するホストを設定できる。しかし、SSHはTCP_Wappersに対応してるので、俺はSSH側でアクセス制限を行わないで、TCP_Wappersを使っている。
さらに、AllowUsersパラメータがあり、サーバへログインを許可するユーザを指定できる。


5.SSHの再起動
ns:~# /etc/init.d/ssh restart


6.SSHクライアントPuTTyのセットアップと運用(sshd_configで PasswordAuthentication yes の場合)
1)PuTTyのゲット
ここ でSSHクライアントPuTTyをゲットする。

2)インストール
圧縮ファイルを解凍して適当なフォルダを作り、つっこむ。

3)セッションを保存する
PuTTyを立ち上げて、以下図1のようにターゲットホスト名もしくはxxx.xxx.xxx.xxxのようなIPアドレスを入力して、必要な項目を変更して、セッション名を決めて保存する。次回から、このセッションを起動して目的のホストへ接続を行う。


   図1

4)接続する
PuTTyを使って、図2のようにつなげてみる。
例えば、仮に user と入力する。


   図2

5)loginする
ユーザが許可されて、さらにパスワードが許可されれば、図3のようにlogin出来る。


   図3


7.puttygenでプライベートキーを作成してputtyで運用する(sshd_configで PasswordAuthentication no の場合)
前項のようなテキスト認証ではなく、login時にパブリックkeyをインポートしてプライベートkeyとでパスフレーズ入力による認証を行う方法を説明する。本来、こちらの方法がセキュリティ的にはベスト。

1)puttygen.exeでプライベートkeyを作る、まずは、puttygen.exeのゲット
ここ からputtygen.exeをゲットする。

2)sshサーバからprivate keyをインポートしてputtyのprivate keyファイル「ppkファイル」を作る
あらかじめ、sshサーバの /root/.ssh/id_rsa keyファイルをフロッピーディスクへコピーしておく。
図4のようにputtygen.exeを実行する。


  図4

図5のような画面になるので「Load」をクリックしてkeyファイルを読み込む。


  図5

図6のようにフロッピーディスクの中の「id_rsa」ファイルを選択する。


  図6

図7のように読み込んだら、sshサーバで設定したパスフレーズを入力する。


  図7

インポートが上手くいくと図8のようなダイアログが表示される。


  図8

図9のような詳細が出るので、「Save private key」をクリックして「ファイル名.ppk」の形式で保存する。このときの保存場所は、puttyのカレントディレクトリとかがいいだろう。


  図9

3)実際に作成したprivate keyを使ってloginする

puttyを開く。すると、図10のような画面になるのでホスト名(sshサーバ)やセッション名を設定する。


  図10

図11のようにSSHタブを選択して、画面のように「優先するSSHプロトコルバージョンを「2」にチェックする。


  図12

図13のようにSSHタブの「認証」を選択すると、図のような画面が出る。その中の「"keybord-interactive"認証を試みる」にチェックをする。さらに、「認証のためのプライベートキーファイル」として、2)で作成したputtyのプライベートキーppkファイルのフルパスを入力する。


  図13

図14のように、接続タブの「データ」を選択すると、図のような画面になる。ここの中の「自動ログインのユーザ名」(ターゲットアカウント)を入力する。以上でputtyの設定は終わりだ。


  図14

4)sshサーバへloginしてみる
puttyから、sshサーバへloginしてみる。puttyでsshサーバへ接続すると、以下のようなメッセージが出てパスフレーズを入力するとめでたくloginが成功する。

Using username "hoge".
Authenticating with public key "imported-openssh-key"
Passphrase for key "imported-openssh-key": xxxxxxxx     ←パスフレーズを入力する
Last login: Sun Jun 10 16:05:47 2007 from 192.168.255.2
[hoge@ns ~]$                                 ←loginが成功する

以上


 
 
 



Copyright 2007 Kozupon.com.