WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

OpenSSHのインストールと基本的な設定

      2012/12/14

SSHとは?

SSHは、クライアントからサーバへ安全に通信するための技術です。
Secure Shell(セキュアシェル)の略でSSHと表記します。

サーバと通信するプロトコルとしてはSSH以外にもTelnetがありますが、Telnetがパスワードなどの認証を含むすべての通信を暗号化せずに平文で送信するのに対して、SSHでは通信内容をすべて暗号化して送信するため、よりセキュアな通信を行うことができます。

このページでは、内部は基より外部からも安全に通信を行うため、パスワード認証ではなく鍵方式を採用します。
また、SSHにはバージョン1(SSH1)とバージョン2(SSH2)の2種類のプロトコルが共存していますが、よりセキュアなSSH2で通信します。

OpenSSHのインストール

OpenSSHは、UNIX系OSでSSHサーバ・クライアントとして広く利用されているソフトウェアです。
通常、デフォルトでインストールされている場合がほとんどです。
下記コマンドでOpenSSHのパッケージが出力されれば、OpenSSHはインストール済みです。

[root@centos ~]# yum list installed | grep openssh
openssh.i386                             4.5p1-6.fc7            installed
openssh-clients.i386                     4.5p1-6.fc7            installed
openssh-server.i386                      4.5p1-6.fc7            installed

OpenSSHがインストールされていなかった場合はyumでインストールします。
openssh-serverはクライアントサイドからのSSH接続に対応するためのパッケージ、openssh-clientsは当該端末をクライアントとして他サーバへ通信する際に必要となるパッケージです。

[root@centos ~]# yum -y install openssh-server
[root@centos ~]# yum -y install openssh-clients

続いて、sshdが起動しているか確認します。

[root@centos ~]# ps aux | grep sshd
root     13326  0.0  0.2   5396   984 ?        Ss   Jan15   0:13 /usr/sbin/sshd
root     21337  0.0  0.1   5112   784 pts/0    S+   17:37   0:00 grep sshd

起動していなかった場合は下記コマンドで起動させます。

[root@centos ~]# /etc/rc.d/init.d/sshd start

公開鍵・秘密鍵の生成と設定

OpenSSHで主流に利用されている認証方式には、パスワード認証と公開鍵認証があります。

パスワード認証は、Linuxのログイン時に利用するアカウントをそのまま利用し、IDとパスワードが一致すれば認証するものです。
Linuxのアカウントとそのまま連動するパスワード認証は手軽に利用できる反面、辞書攻撃や総当り攻撃の標的になる恐れがあります。

公開鍵認証では、公開鍵とそれに対応する秘密鍵を生成し、クライアント側にある秘密鍵がサーバ側の公開鍵に対応するものであるかどうかで認証します。
認証の鍵となる秘密鍵に関してはクライアントから送信されることはなく、サーバ側の公開鍵から秘密鍵を推測することもできません。
したがって、公開鍵認証ではパスワードや秘密鍵などの認証の要となる情報がネットワーク上に一切流出することはなく、パスワード認証で懸念されるようなパスワード推測攻撃による被害の心配もありません。

ここではWindowsからのリモート操作を想定して、端末エミュレータソフトPoderosaを用いて公開鍵・秘密鍵の作成を行います。
Poderosaのはこちらからダウンロードできます。

Poderosaでの鍵ペアの生成

1. Poderosaを起動し、「ツール」 → 「SSH鍵作成ウィザード」を選択

任意のパスフレーズを入力し、「次へ」をクリック
なお、ここで設定したパスフレーズは公開鍵認証の際に入力する必要があるので忘れないこと

2. 表示されるメッセージにそのまま従い、ウィンドウ内でマウスを乱雑に動かす

しばらくマウスを動かし続けると生成が完了するので「次へ」をクリック

3. 鍵ぺアを保存

秘密鍵をローカルの任意の場所に適当な名前を付けて保存する

公開鍵をOpenSSH形式でローカルの任意の場所に適当な名前を付けて保存する

サーバに公開鍵を設置

1. Poderosaへパスワード認証を利用してサーバへログイン
※公開鍵認証を利用したいアカウントでログインすること

2. 公開鍵保存ファイルを作成

[centos@centos ~]$ mkdir -p ~/.ssh    SSH設定ファイル保存ディレクトリ作成
[centos@centos ~]$ chmod 700 ~/.ssh
[centos@centos ~]$ vi ~/.ssh/authorized_keys    公開鍵保存ファイルを作成
ssh-dss AAAAB3Nza...(略)    ※クライアント側でPoderosaで作成した公開鍵をテキストエディタで開いてその内容を丸々コピーして貼りつける
[root@centos ~]# chmod 600 ~/.ssh/authorized_keys

公開鍵認証でサーバにログイン


ホスト名に接続先のサーバ、プロトコルにSSH2、ポートにSSH(22)を選択
アカウントにはログインするユーザを入力する
①公開鍵を選択
②鍵ペア生成時に入力したパスフレーズを入力
③鍵ペア生成時にローカルに保存した秘密鍵を選択

上記の通りに各項目を設定したら「OK」をクリック
サーバにログインできればOK

設定ファイルの編集

sshdの設定ファイルは/etc/ssh/sshd_configです。
似たような名前のファイルとして/etc/ssh/ssh_configがありますが、こちらはクライアントの設定なのでお間違えのないように。
下記設定によりsshdをよりセキュアにします。

[root@centos ~]# vi /etc/ssh/sshd_config
SSH2以外のプロトコルは許可しない
#Protocol 2,1
 ↓
Protocol 2

rootでのログインを禁止する
#PermitRootLogin yes
 ↓
PermitRootLogin no

パスワード認証でのログインで禁止
#PasswordAuthentication yes
 ↓
PasswordAuthentication no

空パスワードでのログインを禁止
#PermitEmptyPasswords no
 ↓
PermitEmptyPasswords no

編集を保存したら、反映させるためsshdを再起動します。

[root@centos ~]# /etc/rc.d/init.d/sshd restart

 - SSHサーバ構築 , , ,