Debianをインストールすると、デフォルトでSSHがセットアップされる。したがって、リモートクライアントはSSHを選んだほうが楽だ。そこで、Debianでめちゃくちゃ簡単にSSHをセットアップして、ちゃんと暗号化通信出来る状態にするところまでを伝授したい。
セットアップ環境)
マシン : Dell OptiplexGX1(PentiumⅡ)
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アドレスを入力して、必要な項目を変更して、セッション名を決めて保存する。次回から、このセッションを起動して目的のホストへ接続を行う。
4)接続する
PuTTyを使って、図2のようにつなげてみる。
例えば、仮に user と入力する。
5)loginする
ユーザが許可されて、さらにパスワードが許可されれば、図3のようにlogin出来る。
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を実行する。
図5のような画面になるので「Load」をクリックしてkeyファイルを読み込む。
図6のようにフロッピーディスクの中の「id_rsa」ファイルを選択する。
図7のように読み込んだら、sshサーバで設定したパスフレーズを入力する。
インポートが上手くいくと図8のようなダイアログが表示される。
図9のような詳細が出るので、「Save private key」をクリックして「ファイル名.ppk」の形式で保存する。このときの保存場所は、puttyのカレントディレクトリとかがいいだろう。
3)実際に作成したprivate keyを使ってloginする
puttyを開く。すると、図10のような画面になるのでホスト名(sshサーバ)やセッション名を設定する。
図11のようにSSHタブを選択して、画面のように「優先するSSHプロトコルバージョンを「2」にチェックする。
図13のようにSSHタブの「認証」を選択すると、図のような画面が出る。その中の「”keybord-interactive”認証を試みる」にチェックをする。さらに、「認証のためのプライベートキーファイル」として、2)で作成したputtyのプライベートキーppkファイルのフルパスを入力する。
図14のように、接続タブの「データ」を選択すると、図のような画面になる。ここの中の「自動ログインのユーザ名」(ターゲットアカウント)を入力する。以上でputtyの設定は終わりだ。
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が成功する
以上
コメント