IBM iのSSH設定その3
前回の続きです。IBM i(※以下AS/400)にSSHサーバーを立てたので、公開鍵認証にします。それから、外部環境からインターネット越しに、SSHで接続して、5250エミュが使えるかやってみました。
sshd_configの変更
まず、パスワード認証やユーザー制限を掛ける為に、SSHデーモンの設定ファイル”sshd_config”を変更します。”sshd_config”は「/QOpenSys/QOpenSys/QIBM/UserData/SC1/OpenSSH/openssh-3.5p1/etc/sshd_config」にあります。
- 以下の項目を設定します。
# rootでのログインの許可 PermitRootLogin no # RSA 認証が成功した時、rhosts を使った認証を許可。 RhostsRSAAuthentication no # パスワード認証を許可 PasswordAuthentication no # 空のパスワードを許可 PasswordAuthentication no # 特定ユーザのみ接続許可をする AllowUsers user1 user2
※SSHクライアントからホストへユーザー名が届く時には、小文字として認識されている様です。
AllowUsersは小文字で登録する必要が有ります。
AllowUsersを使う場合は、SSHクライアントのユーザー名とホームディレクトリ名も完全一致している必要があります。
設定後、SSHデーモンを再起動します。
公開鍵・秘密鍵の作成
- 公開鍵・秘密鍵を作成するまでの手順は以下の通りです。
手順をまとめると以下の通りです。
$ // ディレクトリ移動 > cd /home/user1 $ // 「.ssh」ディレクトリ作成 > mkdir .ssh $ // ディレクトリ移動 > cd .ssh $ // 鍵を作成 > ssh-keygen -t rsa 公開 / 秘密 rsa 鍵ペアの生成中。 Enter file in which to save the key (/home/user1/.ssh/id_rsa): > ( 実行キー ) Enter passphrase (empty for no passphrase): > ( 秘密鍵のパスワード入力 ) Enter same passphrase again: 識 > ( パスワード確認入力 ) 別が /home/user1/.ssh/id_rsa に保管されました。 自身の公開鍵が /home/user1/.ssh/id_rsa.pub に保管されました。 キーの指紋 : $ // 公開鍵の登録 > cat id_rsa.pub >> authorized_keys $
上記で出来た秘密鍵の「id_rsa」は、クライアント側で厳重に保管します。クライアント側で鍵を作成して、サーバーに登録でも構いません。(今回、githubの時に、cygwinで作成した鍵でも試してみましたが、もちろんOKでした。)。windowsの場合は”TeraTerm”などを使えば、以下の様に簡単に出来ます。
SSHクライアントの実行
今回はTeraTermでやってみました。設定は以下の通りです。
- 「漢字コード」を”SJIS”にする
- メニューの[設定(S)]→[設定の保存(S)]で設定を保存しておく(次回から設定読込で使えます)
ディレクトリパーミッション・所有権
実は、ここで少し躓きました。
自分は、ディレクトリ作成、鍵の配置やらを、前述の様にシェルを使って、操作をしたのではなく、実はiナビ(オペナビ)でしていました。その為、パーミッションの設定や、所有権がメタメタで、SSHで接続しても、「Permission denied (publickey,keyboard-interactive).」となってしまいました。最初は、クライアント側の-vオプションで、デバッグしても、「何事か?」と全く解からず、「ならばと」サーバー側のデーモンをデバッグモードの「sshd -d」で動かすと、ようやく「原因は”パーミッション”と”所有権”にある」と気づいたのでした。恥ずかしい...:-p
+--home +--user_home ( 755 ) +--.ssh ( 700 ) +--authorized_keys ( 644 )
- シェルで以下を実行
chmod 755 /home/user_home chmod 700 /home/user_home/.ssh chmod 644 /home/user_home/.ssh/authorized_keys chown user /home/user_home chown user /home/user_home/.ssh chown user /home/user_home/.ssh/authorized_keys