2
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?

日本語2962のIBM i でQCCSIDが65535とか5026の環境でSSHDを開始する方法

Posted at

はじめに

IBM i の世界でもセキュアなファイル転送やリモート・コマンドの実行など、着実にSSHで接続するケースが増えてきていると思います。
IBM i でSSHDを開始するには、STRTCPSVR SERVER(*SSHD) コマンドを実行すれば良く、また CHGTCPSVR SVRSPCVAL(*SSHD) AUTOSTART(*YES) の設定をしておくことで、IPL後に自動開始させることもできます。
しかし、日本語2962でシステム値QCCSIDが65535や5026のIBM i ではこれらの設定でSSHDを開始させることができず、別途開始する仕組みを整える必要があります。

そこで今回はそのような環境でSSHDを開始する方法についてまとめてみました。

セットアップの流れ

以下のステップで手動開始する設定を行っていきます。

  1. SSHD開始用ユーザーの作成
  2. SSHホスト鍵の生成
  3. SSHD開始コマンド実行プログラムの作成
  4. スタート・アップ・プログラムへの組み込み

1. SSHD開始用ユーザーの作成

セットアップでは英小文字を入力・使用しますので、ホスト・コード・ページが「939 日本 (拡張ローマ字)」の通信構成を行ったエミュレーター・セッションを使用してください。
image.png

サイン・オン後はまずジョブのCCSIDを5035にしておきます。

ジョブのCCSIDの変更
CHGJOB CCSID(5035)

それではここからセットアップを行っていきます。
まず、SSHD開始処理で使用するユーザー・プロファイルSSHDUSRを作成します。
作成するユーザー・プロファイルは、
・パスワード: *NONE
・状況: *DISABLED
・特殊権限: *ALLOBJ
・CCSID: 5035
とします。*ALLOBJ特殊権限を持たせるため、通常のアクセスでは使用できないようにパスワードなしで*DISABLEDにしています。

ユーザーSSHDUSRの作成
CRTUSRPRF USRPRF(SSHDUSR) PASSWORD(*NONE) STATUS(*DISABLED) SPCAUT(*ALLOBJ) CCSID(5035)

次に作成したユーザーSSHDUSRのホーム・ディレクトリーを作成し、所有者をSSHDUSRにしておきます。

ユーザーSSHDUSRのホーム・ディレクトリーの作成
CRTDIR DIR('/home/SSHDUSR')
CHGOWN OBJ('/home/SSHDUSR') NEWOWN(SSHDUSR)

2. SSHホスト鍵の生成

SSHDのホスト鍵のペアを生成します。まずPASE for i のターミナルに入ります。

PASE for i ターミナルの開始
CALL QP2TERM

PASE for i のターミナルで以下のコマンドを順に実行し、実行後はF3キーでPASE for i のターミナルから抜けます。

PASE for i で実行するコマンド
cd /QOpenSys/QIBM/UserData/SC1/OpenSSH/etc
ssh-keygen -t dsa -b 1024 -f ssh_host_dsa_key -N ''
ssh-keygen -t rsa -b 4096 -f ssh_host_rsa_key -N ''
ssh-keygen -t ecdsa -b 256 -f ssh_host_ecdsa_key -N ''
ssh-keygen -t ed25519 -b 256 -f ssh_host_ed25519_key -N ''

以下が上記の各コマンドの実行結果です。

PASE for i ターミナルでの実行結果
PASE for i ターミナルでの実行結果
                             /QOpenSys/usr/bin/-sh                              
                                                                                
   #                                                                            
 > cd /QOpenSys/QIBM/UserData/SC1/OpenSSH/etc                                   
   #                                                                            
 > ssh-keygen -t dsa -b 1024 -f ssh_host_dsa_key -N ''                          
   Generating public/private dsa key pair.                                      
   Your identification has been saved in ssh_host_dsa_key.                      
   Your public key has been saved in ssh_host_dsa_key.pub.                      
   The key fingerprint is:                                                      
   SHA256:VyaFaVakEKi0Jnql5KuksjF1Qm5kcLOvC6VB7BDaHko qsecofr@IBMI.XXX.LOCAL    
   The key's randomart image is:                                                
   +---[DSA 1024]----+                                                          
   |o o    .o. =+    |                                                          
   |o= o. .  .=o     |                                                          
   |oEB. o   oo o    |                                                          
   |=Boo=      +     |                                                          
   |o=B=o   S .      |                                                          
   |.*++     .       |                                                          
   |=o..             |                                                          
   |++..             |                                                          
   |=o.              |                                                          
   +----[SHA256]-----+                                                          
   #                                                                            
 > ssh-keygen -t rsa -b 4096 -f ssh_host_rsa_key -N ''                          
   Generating public/private rsa key pair.                                      
   Your identification has been saved in ssh_host_rsa_key.                      
   Your public key has been saved in ssh_host_rsa_key.pub.                      
   The key fingerprint is:                                                      
   SHA256:wPTTzggOhPeiznGd4sRZI65HzsNwHXGRoC3xE5UwSy0 qsecofr@IBMI.XXX.LOCAL    
   The key's randomart image is:                                                
   +---[RSA 4096]----+                                                          
   |   .o B=o+       |                                                          
   |  ...OE==.       |                                                          
   |   .+.O+o .      |                                                          
   |    o+=+ =       |                                                          
   |   + B.+S o      |                                                          
   |  + X +          |                                                          
   | o & .           |                                                          
   |  + B            |                                                          
   |   . .           |                                                          
   +----[SHA256]-----+                                                          
   #                                                                            
 > ssh-keygen -t ecdsa -b 256 -f ssh_host_ecdsa_key -N ''                       
   Generating public/private ecdsa key pair.                                    
   Your identification has been saved in ssh_host_ecdsa_key.                    
   Your public key has been saved in ssh_host_ecdsa_key.pub.                    
   The key fingerprint is:                                                      
   SHA256:NKwUKm5zbVfqU+QK8uB4TiVr47aX3U0VvQbEPxJRpH4 qsecofr@IBMI.XXX.LOCAL    
   The key's randomart image is:                                                
   +---[ECDSA 256]---+                                                          
   |      .     oo++ |                                                          
   |     . o     +o .|                                                          
   |  . . . + o  .+..|                                                          
   | . . o o *  ...= |                                                          
   |  + = * S o  ooE.|                                                          
   | . = O + o  . .  |                                                          
   |  . B .o+. o     |                                                          
   |   *..o ... .    |                                                          
   |   .+o           |                                                          
   +----[SHA256]-----+                                                          
   #                                                                            
 > ssh-keygen -t ed25519 -b 256 -f ssh_host_ed25519_key -N ''                   
   Generating public/private ed25519 key pair.                                  
   Your identification has been saved in ssh_host_ed25519_key.                  
   Your public key has been saved in ssh_host_ed25519_key.pub.                  
   The key fingerprint is:                                                      
   SHA256:t6GxhDGAq+MEOk/Jd2c/2v2FusH1oG1WPWA+2l81qPc qsecofr@IBMI.XXX.LOCAL    
   The key's randomart image is:                                                
   +--[ED25519 256]--+                                                          
   |   ..            |                                                          
   |  .  .           |                                                          
   |   .  o      o   |                                                          
   |. .    +    o o .|                                                          
   |oo .  . S o  +oo+|                                                          
   |=.+ . ..o= +++.=+|                                                          
   |o= . . oo..o+o= +|                                                          
   | ..      .o..=o..|                                                          
   |        ....+o.E |                                                          
   +----[SHA256]-----+                                                          
   #                                                                            

なお、既存のホスト鍵ペアが既に存在する場合には以下のようなメッセージが出されますので、再作成するか、そのまま既存を使用するか選択できます。(以下はそのまま既存を使用する場合の例で n で応答しています)

既存のホスト鍵ペアが存在する場合の例
                             /QOpenSys/usr/bin/-sh                              
                                                                                
   #                                                                            
 > cd /QOpenSys/QIBM/UserData/SC1/OpenSSH/etc                                   
   #                                                                            
 > ssh-keygen -t dsa -b 1024 -f ssh_host_dsa_key -N ''                          
   Generating public/private dsa key pair.                                      
   ssh_host_dsa_key already exists.                                             
   Overwrite (y/n)?                                                             
 > n                                                                            
   #                                                                            

3. SSHD開始コマンド実行プログラムの作成

SSHD開始コマンドは QSH CMD('/QOpenSys/usr/sbin/sshd') となります。これをユーザーSSHDUSRでサブシステムQSYSWRKにバッチ投入するCLプログラムSTRSSHDを作成します。バッチ投入されるジョブのCCSIDはユーザーSSHDUSRのCCSIDから引き継がれるようにしています。

STRSSHD.CLP
     PGM                                                 

     SBMJOB     CMD(QSH CMD('/QOpenSys/usr/sbin/sshd')) +
                  JOB(SSHD) JOBQ(QSYS/QSYSNOMAX) +
                  USER(SSHDUSR) CCSID(*USRPRF)

     ENDPGM                                              

このCLプログラムは借用権限を使用してユーザーSSHDUSRの権限で動くようにコンパイルします。
作成したタイミングではプログラム・オブジェクトの所有者はコンパイルを実行したユーザーとなっていますので、プログラム・オブジェクトが作成された後に所有者をSSHDUSRに変更しておきます。

CLプログラムSTRSSHDのコンパイル
CRTCLPGM PGM(QGPL/STRSSHD) SRCFILE(QGPL/QCLSRC) USRPRF(*OWNER)
CHGOBJOWN OBJ(QGPL/STRSSHD) OBJTYPE(*PGM) NEWOWN(SSHDUSR) CUROWNAUT(*REVOKE)

4. スタート・アップ・プログラムへの組み込み

作成したCLプログラムSTRSSHDの実行をスタート・アップ・プログラムの一番最後に組み込めば、IPL後にSSHDが自動で開始されるようになります。
なお、スタート・アップ・プログラムはQPGMRで動きます。
今回作成したプログラムはそのプログラムの所有者であるSSHDUSRの権限で実行されます。
そのため、プログラム内のSBMJOBコマンドで USER(SSHDUSR) を指定しているものの、ユーザーQPGMRがユーザーSSHDUSRに対して使用権限を持つ必要はなく、スタート・アップ・プログラムへの組み込みは単純にCALLコマンドでの実行のみで良い形となります。

スタート・アップ・プログラムへの組み込み例
...
     CALL PGM(QSYS/QWCSWTRS)
     MONMSG MSGID(CPF0000)
NOWTRS:

     /* START SSHD */
     CALL PGM(QGPL/STRSSHD)

     RETURN
     CHGVAR VAR(&CPYR) VALUE(&CPYR)
     ENDPGM

終わりに

実際にスタート・アップ・プログラムに組み込んでSSHDを自動開始させた際のWRKACTJOBコマンドで見た活動ジョブの様子です。
サブシステムQSYSWRK配下で現行ユーザーがSSHDUSR、機能がPGM-sshdのジョブQP0ZSPWPが動いていればOKです。
image.png

NETSTAT OPTION(*CNN) で見るとsshがリッスン状態になっていますね。
image.png

ちなみに、SSHDの終了はQCCSIDが65535であっても、ENDTCPSVR SERVER(*SSHD) で終了できます。

2
1
2

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
2
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?