OpenSSHのインストール。

§1 インストール

SSHサーバのみが必要ならopenssh-server、クライアントのみが必要ならopenssh-clientsをインストールする。 opensshはいずれの場合も必須。

# インストールされているか確認
rpm -qi openssh
rpm -qi openssh-server
rpm -qi openssh-clients

# インストール
yum install openssh
yum install openssh-server
yum install openssh-clients

§2 SSHサーバ(openssh-server)設定

SSHサーバを起動する前に設定ファイル/etc/ssh/sshd_configを編集する。 参考資料:sshd_config.0

以下は設定例。 条件は次の通り。

  • SSHバージョン1および2を使用する
  • 公開鍵認証方式のみを許可する
  • rootユーザの直接ログインは許可しない
#
# 全般的な設定
#

# SSHバージョン1および2を使用する
Protocol 1,2

# ポート22番をSSH接続で使用するポートに設定する
Port 22

#
# 公開鍵認証のみを許可するための設定
#

# RSAによる公開鍵認証を許可する(SSHバージョン1)
RSAAuthentication yes

# RSAによる公開鍵認証を許可する(SSHバージョン2)
PubkeyAuthentication yes

# ユーザ認証に使用される公開鍵ファイル(ホームディレクトリ下にする)
AuthorizedKeysFile %h/.ssh/authorized_keys

# ホスト側の秘密鍵を格納するファイルを指定する
HostKey /etc/ssh/ssh_host_key
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key

#
# それ以外の認証設定
#

# パスワードによる認証を許可しない
PasswordAuthentication no

# PAMを使用しない
UsePAM no

# チャレンジ・レスポンス方式による認証を許可しない
ChallengeResponseAuthentication no

# rootユーザの直接ログインを許可しない
PermitRootLogin no

# パスワードが設定されていないアカウントのログインを許可しない
PermitEmptyPasswords no

# rhostsによる認証を許可しない
RhostsRSAAuthentication no
IgnoreRhosts yes

#
# その他細かな設定
#

# ログインできるユーザを限定する
AllowUsers santamarta

# 最後にログインした時間を表示する
PrintLastLog yes

# ファイルやディレクトリのパーミッションが適切に設定されているかチェックする
StrictModes yes

# 60秒以内にログイン出来ない場合は、接続を切断する
LoginGraceTime 60s

# 接続を試行できる最大回数(ここで指定した回数の半数以上認証に失敗した場合はログに記録される)
MaxAuthTries 6

# ログのファシリティとレベル
SyslogFacility AUTHPRIV
LogLevel INFO

# クライアントの生存チェック間隔と試行回数(15秒3回=最短45秒で切断)
ClientAliveInterval 15s
ClientAliveCountMax 3

# sftpを使用するための設定
Subsystem sftp /usr/libexec/openssh/sftp-server

設定ファイルの編集が終わったら、起動する。

# デーモンの起動設定を確認
chkconfig --list sshd

# デーモンの起動設定
chkconfig sshd on
chkconfig --list sshd

# sshdを起動
service sshd start

§3 クライアントの設定例

ここではWindows上で動作するSSH2対応ターミナルエミュレータ、Poderosaを使用してSSH接続するための設定例を紹介する。 まずは、Poderosaにて次の手順で公開鍵・秘密鍵のペアを生成する。

  1. Poderosaを起動して「ツール」メニューの「SSH鍵作成ウィザード」を開く
  2. アルゴリズム、ビット数、パスフレーズ(およびその確認入力)の各項目を設定して、「次へ」
  3. 現れるウィンドウ内でマウスカーソルを適当に動かす(カーソルの動きが鍵を生成する際の乱数源となる)
  4. 生成が完了したら、
    1. 「秘密鍵を名前を付けて保存」で秘密鍵を保存する
    2. 「OpenSSH形式で公開鍵を名前を付けて保存」で公開鍵を保存する

続いて、作成した公開鍵をサーバに保存する。 保存する場所は、SSH接続で使用するユーザのホームディレクトリ(実際には、設定ファイルのAuthorizedKeysFileで指定したファイルとなる)。 以下の例では、pubkey.pubが作成した公開鍵で、FTPなどでアップロードしたものと仮定する。

mkdir ~/.ssh
chmod 700 ~/.ssh
cat pubkey.pub > ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

ここで注意点。 設定ファイルでStrictModesをonに設定した場合、公開鍵を保存するディレクトリ・ファイルのパーミッションを正しく設定しないと正しく動作しない。 この場合、ログファイルには次のようなメッセージが出力される。

tail -f /var/log/secure
Nov 12 18:35:14 keine sshd[10733]: Authentication refused: bad ownership or modes for directory /home/santamarta/.ssh

ここまでの設定が完了したら、実際に接続してみる。 「ファイル」メニューの「新規Telnet/SSH接続」をクリックする。

出てくるダイアログについて次のように入力する。

  • ホスト: 接続先ホスト
  • プロトコル: SSH2(Poderosaで生成した鍵はSSH2に対応したもののため、SSH2を選択)
  • ポート: SSH(22)
  • ユーザ名: 接続に使用するユーザ名
  • 認証方法: 公開鍵
  • パスフレーズ: 鍵ペアを生成する際に使用したパスフレーズ
  • 鍵ファイル: 生成した鍵ペアのファイルのうち、秘密鍵のファイルを指定

そのほか適宜パラメータを設定してOKをクリック。 うまくいかない場合は/var/log/secureなどを参照して原因を探る。 うまくいけばそれでOK。