第5回 PuTTYでSSH2接続

  • PuTTYでSSH2接続(1)
    • Windowsマシンからリモートで操作したい!
    • PuTTYの入手とインストール
    • PuTTYでサーバにアセクスする(パスワード認証)
  • PuTTYでSSH2接続(2)
    • PuTTYでサーバにアセクスする(パスフレーズ認証)
    • パスフレーズ認証の設定
  • PuTTYでSSH2接続(3)
    • 後始末-SSHのセキュリティを高める
    • 役に立つサイト
  • PuTTYでSSH2接続(4)
    • [参考]sshd_configの内容(初期設定)

後始末-SSHのセキュリティを高める

ここまででパスフレーズ認証までのSSHについての設定を紹介しました。これでルータに繋がっている室内のPCどこからでもPuTTYと秘密鍵があれば、サーバを操作することができるはずです。

ここではセキュリティを高めるというと何やら大げさですが、2,3やり残したことがあるのでそれらを行うことにします。

秘密鍵の削除

そういえば秘密鍵(id_dsa)がサーバのディレクトリに残りっぱなしでした。そのまま放置して、万が一誰かに盗まれでもしたら大変です。秘密鍵をサーバに置きっぱなしにしておくのはよろしくありません。

rm命令を実行して秘密鍵(id_dsa)を削除します。

$rm /home/hoge/.ssh/id_dsa

本当に消去されたか念のために確認してみます。

$ls -al /home/hoge/.ssh
合計 8
drwx------ 2 hoge hoge 45 2005-11-23 16:22 .
drwxr-xr-x 3 hoge hoge 71 2005-11-23 15:12 ..
-rw-r--r-- 1 hoge hoge 604 2005-11-23 15:50 authorized_keys
-rw-r--r-- 1 hoge hoge 604 2005-11-23 15:14 id_dsa.pub

上のようにファイルの一覧にid_dsaファイルがなければ削除されています。これでまた少しサーバのセキュリティが高まりました。

パスワード認証の禁止

せっかく秘密鍵、公開鍵を使用したパスフレーズ認証の設定をしたのだから、いっそのことパスワード認証は禁止してしまいます。

パスワード認証を禁止してしまえば、秘密鍵をもったユーザしかログインできなくなるわけです。そして今のところ秘密鍵をもっているのは自分(ユーザ名:hoge)だけ。ということは今後ユーザをいくら増やしても自分がそのユーザにSSH接続を許可しない限り、他のユーザからログインされることはないはずです。

パスワード認証を禁止するためにはSSHの設定ファイルを編集する必要があります。

SSHの設定ファイルはsshd_configというファイル名で/etc/sshディレクトリの下にあります。編集するにはvi命令を実行します。

#vi /etc/ssh/sshd_config

すると次ページのような情報が表示されるはずです。もちろん英語です(´・ω・`) 。

なんかわけのわからん英語がずらずらと書かれていますが、ここで編集する項目はそんなに多くありません。

設定ファイルの中から

# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes

と、書かれた行を探します。真ん中よりちょっと下のあたりでしょうか。

なんとか探し出せたら、次のように編集します(書きかえた箇所は強調表示にしてあります。あと先頭の"#"を消してコメントを有効にするのをお忘れなく)。

# Change to no to disable s/key passwords
ChallengeResponseAuthentication no

lennyでは以下の設定も必要です。

# Change to no to disable tunnelled clear text passwords PasswordAuthentication no

変更したら設定ファイルを保存します。

変更した設定を有効にするために、SSHを再起動します。

ところでWindowsで「再起動」といえば本当に電源を落としたりしてしまいますが(しかも再起動に時間がかかる)、Linuxも同じようにシャットダウンする必要があるのかというとそうではありません。

Linuxの場合は以下の命令を実行すれば、システムは起動したまま必要なソフトだけ(下の例はSSHの場合)再起動させることができます。これは便利。

#/etc/init.d/ssh reload

ためしにパスワード認証でログインしようとすると、login as:でユーザ名を入力した瞬間にPuTTYが落ちます。これでまた一つサーバのセキュリティが高まりました。

SSH2限定で接続

SSHの通信方式にはプロトコル1とプロトコル2(SSH2)の2種類があり、プロトコル2の方がセキュリティが高いらしいです(←よく知らない)。

これまでの接続でプロトコル2(SSH2)で接続していると思っていたのですが、本当にプロトコル2で接続されているのか確認してみます。

プロトコル2で接続されているかどうかは、SSHの設定ファイル(/etc/ssh/sshd_config)に書いてあります。確かめるにはgrep命令を使えば手っ取り早く確認できます。

$grep "Protocol" /etc/ssh/sshd_config

上のコマンドはsshd_configファイルの中から"Protocol"と書かれた行をピックアップして表示するというものです。

上の命令を実行して下のように"Protocol 2"と表示されれば、プロトコル2(SSH2)で接続されています。

$grep "Protocol" /etc/ssh/sshd_config
Protocol 2

もし違うように表示された場合は、vi命令でSSH設定ファイル(/etc/ssh/sshd_config)を編集して、"Protocol"と書かれた行を"Protocol 2"に修正します。

変更後は#/etc/init.d/ssh reloadでSSHの再起動をお忘れなく。

役に立つサイト

この記事を書くにあたり、以下のサイトを参考にさせて頂きました。この場を借りてお礼申し上げます。

@IT:Windowsからssh 2でLinuxにログインするには
PuTTYの入手先や、SSH接続の基本的なことが判りやすく書かれています。
sshセキュリティ強化 | debian.co.jp
セキュリティを高める手法などは、ほとんどここのインスパイアという噂も……
PuTTYでssh2プロトコルを使ってssh接続
PuTTYの設定など参考にしました。鍵の作成方法はこことは異なりWindows側で作成します。