2.17.1 SSHの設定
ここでは,JP1/IM - ManagerホストがUNIX環境である場合の,SSHの設定について説明します。なお,SSHの認証には,公開鍵認証方式を使用します。
SSHで接続するには次の設定が必要となります。
-
SSHサーバを設定する
リモートの監視対象ホストで設定します。
-
鍵を作成する
UNIX環境のJP1/IM - Managerホストで設定します。
-
公開鍵を監視対象ホストに配置する
リモートの監視対象ホストで設定します。
- 注意事項
-
対話環境が前提であるstty,tty,tset,scriptコマンドなどは,SSH接続ユーザーのログインスクリプトに記載しないでください。記載されている場合は,リモート監視用にSSH接続ユーザーを新たに作成するか,これらのコマンドを実行しないようにSSH接続ユーザーのログインスクリプトを変更してください。
(1) SSHサーバを設定する
SSHサーバを設定するための手順を次に示します。
-
リモートの監視対象ホストにroot権限のユーザーでログインする。
-
sshd_configを開く。
HP-UX (IPF)の場合:/opt/ssh/etc/sshd_config
HP-UX (IPF)以外の場合:/etc/ssh/sshd_config
-
PubkeyAuthenticationの値をyesに設定する※1。
-
次の項目を設定する※1,※2。
-
SolarisでOpenSSHを使用しているまたはSolaris以外の場合
UseDNSをnoに設定してください。
-
Solarisの場合
LookupClientHostnamesをnoに設定してください。
-
-
PermitRootLoginをyesに設定する※1。
root権限のユーザーでログインして情報収集する場合だけ,この手順を実行してください。
-
次のコマンドを実行し,sshdサービスを再起動する。
実行するコマンドの例を,OSごとに次に示します。
-
Linuxの場合(Linux 5の例)
/etc/rc.d/init.d/sshd restart
-
Solarisの場合(Solaris 10の例)
/usr/sbin/svcadm restart ssh
-
AIXの場合(AIX 6.1の例)
kill -HUP sshdのプロセスID
-
HP-UXの場合(HP-UX 11i V3 (IPF)の例)
/sbin/init.d/secsh stop; /sbin/init.d/secsh start
なお,このコマンドは,OSのバージョンによって異なる可能性があります。詳細は,各OSのマニュアルを参照してください。
-
- 注※1
-
sshd_configの設定項目および設定方法については,使用するSSHサーバのマニュアルを参照してください。
- 注※2
-
設定しない場合は,監視対象ホストで次の名前解決ができるように設定してください。
-
マネージャーホストのIPアドレスからマネージャーホスト名を解決できる
-
マネージャーホストのホスト名の解決先IPアドレスが,マネージャーホストのIPアドレスと一致する
名前解決にDNSを使用していてDNSサーバに接続できない場合,リモート監視ログファイルトラップの起動,またはログファイルの収集が遅延することがあります。また,遅延によってタイムアウトしてしまい,起動や収集が失敗することがあります。そのため,UseDNSやLookupClientHostnamesをnoに設定することを推奨します。
-
(2) 鍵を作成する(初めて鍵を作成する場合)
UNIX環境のJP1/IM - Managerホストにroot権限のユーザーでログインし,ssh-keygenコマンドを実行して鍵を作成します。なお,この手順は,初めて鍵を作成する場合だけに必要な作業です。
鍵の種類はRSA暗号とDSA暗号のどちらかを選択できます。
-
root権限のユーザーでログインする。
-
ssh-keygenコマンドを実行する。
次のように入力してコマンドを実行してください。
-
RSA鍵を作成する場合:ssh-keygen -t rsa
-
DSA鍵を作成する場合:ssh-keygen -t dsa
-
-
秘密鍵の出力先と名前を決める。
マルチバイト文字を含まないパスとファイル名を指定してください。デフォルトは「~/.ssh/id_rsa」が設定されます。
-
リターンキーを2回押す。
秘密鍵のパスフレーズの入力を求められるため,何も入力しないでリターンキーを押します。再入力を求められるので,何も入力しないで再度リターンキーを押します。
ssh-keygen -t rsaコマンドの実行例を次に示します。
[root@HOST]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ssh-user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/ssh-user/.ssh/id_rsa.
Your public key has been saved in /home/ssh-user/.ssh/id_rsa.pub.
The key fingerprint is:
ax:xx:xx:xx:xx:bx:xx:xc:xx:xx:xx:xd:xd:xa:ed:xx root@HOST
- 注意事項
-
-
秘密鍵の情報は厳重に管理してください。
-
鍵(公開鍵と秘密鍵のペア)の作成は環境やツールには依存しないため,どのような環境やツールでも問題ありません。ただし,鍵の作成後は,秘密鍵と公開鍵を適切に配置する必要があります。
-
(3) 公開鍵をリモートの監視対象ホストに配置する
「2.17.1(2) 鍵を作成する(初めて鍵を作成する場合)」で作成した公開鍵をリモートの監視対象ホストに配置します。配置する手順を次に示します。
なお,作業を始める前に.sshディレクトリの上位ディレクトリのパーミッションに所有者以外の書き込み権限が設定されていないことを確認してください。所有者以外の書き込み権限が設定されているとSSHの接続に失敗します。
-
リモートの監視対象ホストにリモート監視で使用するユーザーでログインする。
-
.sshディレクトリに移動する。
リモート監視で使用するユーザーのホームディレクトリ配下に.sshディレクトリがない場合は作成してください。ディレクトリの属性は700を設定してください。
-
scpコマンドを実行し,公開鍵ファイルをリモートの監視対象ホストにコピーする。
「2.17.1(2) 鍵を作成する(初めて鍵を作成する場合)」で作成済みの公開鍵ファイルを監視対象ホストにコピーします。公開鍵のコピー先は,リモート監視で使用するユーザーのホームディレクトリの.sshディレクトリです。
-
catコマンドを実行し,公開鍵ファイルの内容を認証鍵ファイルに追加する。
-
コピーした公開鍵ファイルを削除する。
-
chmodコマンドを実行し,認証鍵ファイルの属性を600に変更する。
-
「/etc/ssh/sshd_config」の「AuthorizedKeysFile」を設定する。
デフォルトでは「~/.ssh/authorized_keys」または「.ssh/authorized_keys」が設定されています。手順6で作成した認証鍵のパスを変更した場合は,AuthorizedKeysFileの値を見直してください。なお,sshd_configの設定を変更した場合は,スーパーユーザーでsshdサービスを再起動してください。
scpコマンド,catコマンドおよびchmodコマンドの実行例を次に示します。ここでは,「2.17.1(2) 鍵を作成する(初めて鍵を作成する場合)」で鍵を作成したJP1/IM - Managerホストのホスト名をIMHostとしています。
-
コマンドの実行例
[ClientUser@TargetHost ]$ cd .ssh
[ClientUser@TargetHost .ssh]$ scp root@IMHost:/home/ssh-user/.ssh/id_rsa.pub ./
root@IMHost's password: <パスワードを入力>
id_rsa.pub 100% 233 0.2KB/s 00:00
[ClientUser@TargetHost .ssh]$ cat id_rsa.pub >> authorized_keys
[ClientUser@TargetHost .ssh]$ rm id_rsa.pub
[ClientUser@TargetHost .ssh]$ chmod 600 authorized_keys
(4) 接続を確認する
JP1/IM - Managerホストとリモートの監視対象ホストが接続できるかどうかを確認する手順について説明します。
-
JP1/IM - Managerホストにroot権限のユーザーでログインする。
-
作成した秘密鍵を利用し,リモートの監視対象ホストに対してsshコマンドを実行する。
何も入力しないで接続に成功したら,SSHの設定は完了です。
エラーが発生した場合や,パスワードおよびパスフレーズの入力を要求された場合は,手順どおり正しく設定できているかどうかを見直してください。また,OSの設定を見直し,SSH接続ができる環境であるか確認してください。
接続を確認するときのsshコマンドの実行例を次に示します。
ここでは,JP1/IM - Managerホストのホスト名をIMHostとしています。また,監視対象ホストのホスト名をTargetHost,リモート監視で使用するユーザー名をssh-userとしています。
-
コマンドの実行例
[root@IMHost]$ /usr/bin/ssh -i /home/ssh-user/.ssh/id_rsa -p 22 ssh-user@TargetHost
The authenticity of host 'TargetHost (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'TargetHost,xxx.xxx.xxx.xxx' (RSA) to the list of known hosts.
Last login: Mon Mar 23 17:17:52 2011 from xxx.xxx.xxx.xxx
[ssh-user@TargetHost ~]$ exit
logout
Connection to TargetHost closed.
[root@IMHost]$
また,リモート監視では,リモートの監視対象ホストで次のコマンドを実行します。リモート監視で使用するユーザーで次のコマンドが実行できることを確認してください。
-
uname
-
ls
-
wc
-
tail
-
find
-
grep
-
head
コマンドを実行できるか確認する際の手順を,次に示します。
(a) ホスト情報を収集する場合に使用するコマンドの確認
-
[リモート監視設定]画面で設定したユーザーで監視対象ホストにログインする。
-
次のコマンドを実行し,戻り値が0であることを確認する。
uname -s
(b) ログファイルを収集する場合に使用するコマンドの確認
-
[リモート監視設定]画面で設定したユーザーで監視対象ホストにログインする。
-
次のコマンドを実行し,戻り値が0であることを確認する。
-
ls -ild 監視対象のログファイルパス
コマンドの例:
ls -ild /var/log/messages
実行結果の例:
12345 -rw-r--r-- 1 root root 100 4月 12 13:00 2013 messages
-
ls 監視対象のログファイルが存在するディレクトリパス
コマンドの例:
ls /var/log
実行結果の例:
messages
-
(監視対象ホストのOSがAIXの場合)LC_CTYPE=C wc -l 監視対象のログファイルパス
コマンドの例:
LC_CTYPE=C wc -l /var/log/messages
実行結果の例:
20 /var/log/messages
-
(監視対象ホストのOSがAIX以外の場合)wc -l 監視対象のログファイルパス
コマンドの例:
wc -l /var/log/messages
実行結果の例:
20 /var/log/messages
-
(監視対象ホストのOSがSolarisの場合)tail +監視対象のファイルの任意の行番号 監視対象のログファイルパス | tail -収集するサイズの上限値c
コマンドの例:
tail +19 /var/log/messages | tail -10241c
実行結果の例:
line num = 19
line num = 20
-
(監視対象ホストのOSがSolaris以外の場合)tail -n +監視対象のファイルの任意の行番号 監視対象のログファイルパス | tail -c 収集するサイズの上限値
コマンドの例:
tail -n +19 /var/log/messages | tail -c 10241
実行結果の例:
line num = 19
line num = 20
なお,ログファイルの出力形式がSEQ2の場合,上記のコマンドに加えて,下記のコマンドを実行し,戻り値が0であることを確認してください。
-
find 監視対象のディレクトリパス -xdev -inum 監視対象のログファイルのinode
コマンドの例:
find /var/log/ -xdev -inum 12345
実行結果の例:
/var/log/messages.1
-
(c) 事前フィルターを適用する場合に使用するコマンドの確認
-
[リモート監視設定]画面で設定したユーザーで監視対象ホストにログインする。
-
次のコマンドを実行し,戻り値が0であることを確認する。
-
(監視対象ホストのOSがLinuxの場合)/bin/grep -E '事前フィルター'
コマンドの例:
tail -n +19 /var/log/messages | /bin/grep -E 'filter' | tail -c 10241
実行結果の例:
line num = 19
line num = 20
-
(監視対象ホストのOSがSolarisの場合)/usr/xpg4/bin/grep -E '事前フィルター'
コマンドの例:
tail +19 /var/log/messages | /usr/xpg4/bin/grep -E 'filter' | tail -10241c
実行結果の例:
line num = 19
line num = 20
-
(監視対象ホストのOSがLinux,Solaris以外の場合)/usr/bin/grep -E '事前フィルター'
コマンドの例:
tail -n +19 /var/log/messages | /usr/bin/grep -E 'filter' | tail -c 10241
実行結果の例:
line num = 19
line num = 20
-
head -n 監視対象ファイルの任意の行番号
コマンドの例:
tail -n +19 /var/log/messages | head -n 20
実行結果の例:
line num = 19
line num = 20
-