2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

DebianGNULinux3.1SargeでSSH!

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アドレスを入力して、必要な項目を変更して、セッション名を決めて保存する。次回から、このセッションを起動して目的のホストへ接続を行う。

図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が成功する

以上

コメント