4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IBM iのSSH接続をイチから設定してみた

Last updated at Posted at 2024-10-09

 
最近、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が存在するか確認する。
ソフトウェア契約の処理画面_20240919.png

B-1.ユーザー「QSECOFR」のCCSIDの確認方法

DSPUSRPRF USRPRF(QSECOFR)

上記コマンドを実行→4回ページダウン後の5画面目に表示される赤点線枠のコード化文字セット IDの値が5035になっているか確認する。

5035ではなく、*SYSVALだった場合はB-2.へ、それ以外の場合はD-1.かD-2.へ

ユーザープロファイル画面_20240919.png

B-2.システム値のQCCSIDの確認方法

DSPSYSVAL SYSVAL(QCCSID)

上記コマンドを実行→「システム値表示」画面の「コード化文字セットID」の値が5035になっているか確認する。

5035以外だった場合はD-1.かD-2.へ
QCCSIDの確認画面_20240919.png

C.HCPの確認と変更方法

ASCの場合…
エミュレーターの「通信」タブ→「構成」→「ホスト・コード・ページ」にて939を指定する。
HCP設定画面_20240919.png

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サーバーの開始と終了方法についてはマスター出来ると思いますので是非、挑戦してみてください!

4
1
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?