最近、FFRPGをVSCodeで開発するといったセミナーや記事を目にする事が増えました。
システムエンジニアであれば一度は耳にしたことがあるであろうVSCodeとIBM iをどう連携させるのか、何から始めれば良いのか分からなかったので本記事にて、
IBM iで開発している人が最初に踏み出す一歩目としてSSH接続についてイチから順を追って説明させていただきます。
丁寧に書いてみましたので最後までお付き合いください!
0.環境前提-2024年10月時点
環境項目 | 環境名 |
---|---|
PC | Windows11 |
IBM iバージョン | V7.3 |
エミュレーター | 5250(IBM i Access Client Solutions) |
QCCSID | 65535(記事内で5035のユーザープロファイルを用意) |
導入済ライセンス | 5733SC1あり |
1.SSH接続とは…?
Secure SHellの略称で暗号化された通信方法の事を指します。
暗号なので大きな問題は無いですが、時折、セキュリティの脆弱性が報告されます。
IBM i上でも問題とみなされた場合はPTF(不具合修正プログラム:Program Temporary Fixの略称)を提供される場合があります。
詳細については、IBM i Worldからご確認ください。
メール配信設定をすると自動で最新情報をキャッチ出来るようになります!
IBM iの環境が無く、試したい方はフリーのIBM iの開発環境からでもお試しいただけます。
PUB400の導入手順はコチラ
【VS Code】RPGⅣからFFRPGにConvertしてみた!
2.IBM iでSSH接続するための前提条件
SSH接続をするためには、以下の4つの条件を確認する必要があります。
確認項目 | 設定値 | |
---|---|---|
A | ライセンスプログラム | 5733SC1 |
B | CCSID(コード化文字セット:Coded Character Set IDentifier) | 5035 |
C | HCP(Host Code Page) |
939 (1399も可) |
D | SSH接続を開始するためのユーザープロファイル |
QSECOFRか同権限の ユーザープロファイル |
D.のユーザープロファイルがB.の要件を満たしていない場合は、QSECOFRのプロファイルと同等権限のユーザープロファイルの作成を推奨します。
(プロファイルを変更する事で業務に影響を及ぼす可能性があるため)
3.前提条件の確認方法
A.IBM Portable Utilities for iのライセンス・プログラムがあるかの確認
WRKSFWAGR
上記コマンドを実行→「ソフトウェア契約の処理」画面に赤点線枠内のように
ライセンス・プログラム5733SC1が存在するか確認する。
B-1.ユーザー「QSECOFR」のCCSIDの確認方法
DSPUSRPRF USRPRF(QSECOFR)
上記コマンドを実行→4回ページダウン後の5画面目に表示される赤点線枠のコード化文字セット IDの値が5035になっているか確認する。
B-2.システム値のQCCSIDの確認方法
DSPSYSVAL SYSVAL(QCCSID)
上記コマンドを実行→「システム値表示」画面の「コード化文字セットID」の値が5035になっているか確認する。
C.HCPの確認と変更方法
ASCの場合…
エミュレーターの「通信」タブ→「構成」→「ホスト・コード・ページ」にて939を指定する。
Pcommの場合…
エミュレーターの「通信」タブ→「構成」→「セッション・パラメーター」→「ホスト・コード・ページ」にて5035を指定する。
D-1.ユーザー「QSECOFR」のCCSIDを「5035」に変更する方法
CCSIDを5035以外の状態でSSHDサーバーを起動すると異常終了するのでCCSIDの変更が必要です。
CHGUSRPRF USRPRF(QSECOFR) CCSID(5035)
SETJOBATR(*CCSID *DATFMT *DATSEP *DECFMT *SRTSEQ *TIMSEP)
LOCALE('/QSYS.LIB/JA_5035.LOCALE')
D-2.ユーザー「QSECOFR」と同権限のプロファイルのユーザーコピー作成方法
WRKUSRPRF USRPRF (QSECOFR)
上記コマンドを実行→「ユーザー・プロファイルの処理」画面で「3=コピー」を実行→ユーザー・プロファイル、パスワードを任意変更します。
(今回は例としてユーザー・プロファイル名をSSHとする)
D-1.のコマンドのUSRPRF(QSECOFR)の部分をUSRPRF(SSH)に変更して実行します。
※QSECOFRを変更せずにSSHDサーバーを起動したい場合には、QShellからSSHDサーバーを起動する方法もあります。
4.SSH接続方法
A-1.ユーザープロファイル「QSECOFR」で開始する方法
SSHDサーバーを開始する時に、以下のコマンドを実行します。
STRTCPSVR SERVER(*SSHD)
A-2.ユーザープロファイル「QSECOFR」以外で開始する方法
2.D-2.で作成したユーザープロファイルでSIGNONし、以下のコマンドを実行します。
QSH CMD('/QOpenSys/usr/sbin/sshd')
実行後、「コマンドは終了状況0で正常に終了しました。」と表示されたら成功、それ以外は失敗となるため、Qshell の終了ステータスまたはシグナルの意味を判断する方法にて説明が記載されているので必要に応じて確認します。
B.SSHDサーバー起動の確認方法
3.A-1.か2を実行後、起動確認をする場合は以下のコマンドをそれぞれ実行します。
NETSTAT OPTION(*CNN)
上記コマンドを実行→F14押下→ポート22が一覧にあるか確認します。
WRKACTJOB JOB(QP0ZSPWP)
上記コマンドを実行→活動ジョブ処理一覧にジョブQP0ZSPWP、機能PGM-sshdがあるか確認します。
5.SSHDサーバー終了方法
SSHDサーバーを終了する時に、以下のコマンドを実行します。
ENDTCPSVR SERVER(*SSHD)
暗号化通信なので問題は無いですが、念のためSSHDサーバーを使った作業を終えたら終了コマンドを実行するようにしましょう。
以上となります、お疲れ様でした。
6.苦戦したところ
当記事の内容を実際に設定していくうえで筆者の環境ですとSSHDサーバーを使用しておりませんでした。暗号化しているとは言え、上司に確認する際、説明をしても中々理解してもらえず、後続のVS CodeとIBM iの連携をイチから設定してみたの設定に進めず辛かったです。
設定や確認事項に関しては苦戦するほどの難易度では無かったと思いますし、当記事を読んでいただければSSHDサーバーの開始と終了方法についてはマスター出来ると思いますので是非、挑戦してみてください!