PowerVS IBM i 初期設定まとめ - ssh 鍵認証と日本語環境
これまで、試行錯誤で環境を作ってきました。
手順をあちらこちらに書き散らしているので、自分でも新規インスタンスを作成するのに、困っていました。
そこで、今回は新規インスタンスを作成後に、環境を日本語化するまでの手順をまとめることとしました。
パブリックネットワークを持つ PowerVS IBM i のインスタンスを作成し、SRC が 0000-0000 になって起動していることを前提としています。
クライアントで ssh のキーベアを作成する
クライアント側はユーザーのホームディレクトリーでの実行を想定しています。
Windows であれば、通常「C:\Users\ユーザー名」です。
現在の Windows 10 では ssh-keygen、ssh や scp が標準で利用できます。
ssh-keygen で ssh のキーベアを作成します。
ホームディレクトリーの「.ssh」に鍵ペアが作成されます。
ssh-keygen -t rsa -b 4096
IBM i コンソールからユーザー作成と sshd の起動
ポータルからコンソールに接続します。
QSECOFR/QSECOFR で接続します。
QSECOFR のパスワードを変更します。
ライセンス条項を許諾します。
9 文字や 10 文字のユーザー名で ssh 接続したい場合は、下記を sshd の開始前に実行します。
ADDENVVAR ENVVAR(PASE_USRGRP_LIMITED) VALUE('N') LEVEL(*SYS)
ssh 接続用のユーザーを作成します。
CRTUSRPRF USRPRF(yourUser) PASSWORD(yourPssword) HOMEDIR('/home/yourUser')
MKDIR DIR('/home/yourUser')
CHGOWN OBJ('/home/yourUser') NEWOWN(yourUser)
sshd を起動します
STRTCPSVR SERVER(*SSHD)
クライアントから鍵認証の設定
公開鍵を scp で IBM i にコピーします。パスワードで認証します。
この scp は Windows 10 標準のものです。
scp .ssh\id_rsa.pub yourUser@[パブリックIP]:/home/yourUser/id_rsa.pub
ssh で接続します。パスワードで認証します。
この ssh も Windows 10 標準のものです。
ssh yourUser@[パブリックIP]
接続した ssh のセッションで鍵認証の設定をします。
「pwd」ではホームディレクトリーが正しく「/home/yourUser」か確認します。
pwd
mkdir .ssh
cat id_rsa.pub >> .ssh/authorized_keys
chmod 700 .
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
exit
再度、ssh で接続します。パスワード無しで接続されることを確認します。
ssh yourUser@[パブリックIP]
IBM i コンソールから ssh のパスワード認証を除外
現在 ssh はパスワード認証が可能になっています。
ssh のパスワード認証を除外します。
設定ファイルを開きます。
EDTF '/QOpenSys/QIBM/UserData/SC1/OpenSSH/etc/sshd_config'
設定ファイル内に「PasswordAuthentication no」を設定します。
PasswordAuthentication no
sshd を再起動します。
ENDTCPSVR SERVER(*SSHD)
STRTCPSVR SERVER(*SSHD)
これでパスワードでの認証ができなくなり、安全になりました。
IBM i コンソールから Telnet の接続準備
Telnet 5250 で接続できるように、IBM i 側の設定をします。
端末の自動構成を可能にし、*SECOFR レベルの接続を可能にします。
CHGSYSVAL SYSVAL(QAUTOCFG) VALUE('1')
CHGSYSVAL SYSVAL(QAUTOVRT) VALUE(10)
CHGSYSVAL SYSVAL(QLMTSECOFR) VALUE('0')
--- 2023/03/26 追記 ここから---
7.4 のストックイメージからデプロイしたところ上記の CHGSYSVAL は「CPF18C0 System value &1 cannot be changed.」のエラーで実行できませんでした。
実行するためには DST/SST での設定変更が必要です。
詳しくは「PowerVS IBM i 日記(51): 新しいポータル GUI での PowerVS IBM i のデプロイ-8-コンソールへのアクセス・外部からのアクセス」をご覧ください。
--- 2023/03/26 追記 ここまで---
Telnet サーバーを起動します。
STRTCPSVR SERVER(*TELNET)
クライアントから ssh トンネル接続 (ACS の場合)
Windows 標準の ssh は 1024 以下のポートからのトンネルができないので Putty や Tera Term で ssh トンネル接続を設定します。
今回は、Tera Term を使います。
ユーザー名を指定し、秘密鍵にはホームディレクトリーの「.ssh\id_rsa」を指定します。
ACS で Telnet 接続する場合、下記の 5 つのポートに対して ssh トンネルの設定をします。
Telnet のポート 23 には任意のローカルポートを、それ以外はそのままのポートを指定します。
23 - Telnet
449 - Server Mapper
8470 - License Management
8475 - Remote Command
8476 - Signon Verification
ACS で localhost のポート 23 に対応付けたポートに接続します。
5250 画面が表示されました。これでコンソールを使わずに作業ができます。
クライアントからssh トンネル接続 (PCOMM の場合)
ACS ではなく PCOMM の場合は、ポート 23 へのトンネルのみで接続できます。
Windows 標準の ssh コマンドで Telnet のポート 23 に任意のローカルポートからの転送を指定するだけです。
Tera Term や Putty を使う必要はありません。
ssh yourUser@[パブリックIP] -L 50000:localhost:23
PCOMM では localhost ポート 23 に対応付けたポートに接続します。
接続されました。
日本語環境用システム値の変更
日本語環境用にシステム値を変更します。
CHGSYSVAL SYSVAL(QCCSID) VALUE(1399)
CHGSYSVAL SYSVAL(QCNTRYID) VALUE(JP)
CHGSYSVAL SYSVAL(QDATFMT) VALUE(YMD)
CHGSYSVAL SYSVAL(QTIMZON) VALUE(QP0900JST)
QINTER を 2次言語 2930 日本語に設定
コンソールは 1 次言語 2924 英語のまま、それ以外は 2930 日本語で接続出来るように設定します。
QINTER のサインオン画面は英語のままにしてありますが、お好みで QSYS2930/QDSINGON にしてもよいでしょう。
CHGSYSVAL SYSVAL(QCTLSBSD) VALUE('QCTL QSYS')
CHGSBSD SBSD(QINTER) SYSLIBLE(QSYS2930)
sshd と Telnet サーバーの自動起動
IPL 時に sshd と Telnet サーバーが自動起動するように設定します。
RUNSQL SQL('update QUSRSYS/QATOCSTART set AUTOSTART = ''*YES'' where SERVER in (''*TELNET'',''*SSHD'')') COMMIT(*NONE)
再起動して確認
再起動します。
PWRDWNSYS OPTION(*IMMED) RESTART(*YES) CONFIRM(*NO)
サインオン後、メインメニューが日本語であることが確認できました。
ここまで実行したらブートイメージにしておくとよいでしょう。
当日記のIndexはこちらです。
許可の無い転載を禁じます。
この記事は筆者の個人的な責任で無保証で提供しています。
当記事に関してIBMやビジネスパートナーに問い合わせることは、固くお断りします。