IBM CloudのIBM i にACSでssh接続する手順

掲題の情報は色々出ていますが、自分的まとめです。
目的としてはIBM CloudのIBM i インスタンスに接続してACSで5250その他作業したい、というケースです。接続はIBM i のグローバルIP側から行います。
IBM i のプライベートネットワーク側からアクセスするのはGREだったり設定が必要なのでたちまちできないケースもあると思います。（ちょっと面倒だし・・）最近、Transit Gatewayというサービスが開始されており、それだとオンプレとPowerVS IBM iを一発で接続できるようですがまだ試したことが無く・・とりあえずコンサバな方法でやってしまいます。

■全体図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/19f39b19-844c-98d4-9cb5-5847de58bfc2.png)

■設定手順
手順1.IBM CloudのIBM iの接続情報を確認する
 IBM i のCFGTCP等ではIBM iのグローバルIP(図では128.1.1.10 *実際はこのアドレスはプライベートIPです、例として記載）がわかりません。この情報はIBM Cloudコンソールから対象のIBM i仮想サーバーインスタンスの詳細画面を開いて確認します。外部IPは下図の 外部IP の欄になります。この資料では仮に128.1.1.10 となっているものとします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/fc9d9a33-d5b0-e78e-006a-5cc3bb00ce41.png)


手順2.IBM i で必要なサーバージョブを起動する
 STRHOSTSVR *ALL, STRTCPSVR *SSHD, sTRTCPSVR *TELNETで必要なサーバージョブを起動します。他にも必要なら起動してください。

＊IBM i で初めてSSH接続をする場合は以下の設定が必要な場合もあります。
SSHでログインするユーザー用に/home以下に専用のディレクトリ作成します。このIFSディレクトリはユーザープロフィールのホームディレクトリーと同一になります。
　MKDIR '/home/（ユーザー名）' 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/63fcc956-de94-0190-ab1c-de4e47be8cf4.png)


手順3.sshクライアントの導入・設定
Windows10以降は標準でsshクライアントが導入されていますが、私がまだ馴染んでいないため、Puttyの例を記載します。
Puttyをダウンロード、インストールして起動します。以下の設定を行います。
〇セッション
　ホスト名：IBM i のホスト名またはIP（128.1.1.10）
  接続タイプ：SSH
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/c40752fd-17c8-2678-49ab-ee6cd77aa809.png)
〇接続→SSH→トンネル
　ACSで接続に必要となるポート番号を　ポート転送　に登録します。例では受け側ポート 8476 送り先 localhost:8476 を登録しています。この設定ではまずPuttyでIBM iにSSH接続して、そのあとにACSでこのIBM i めがけてACSの5250等を起動するとIBM i へのポート8476の通信をssh経由で(ポート22を使用して）IBM iへ接続してくれます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/43e373ee-fa39-19a0-a785-411bd7dfc676.png)
転送するポートに追加する,ACSで必要なポートは以下です。
　449, 50000(今回の場合、ACS 5250のポートNOに指定する番号）, 8470, 8471, 8472, 8473, 8474, 8475, 8476
今回後でACSの5250接続に使用するポート50000はtelnetのポートである23へ転送するように指定します。（受け側ポート 50000 送り先 localhost:23)

設定が完了したらPuttyの画面で 開く を押してssh通信を開始します。
Puttyのターミナル画面が開くのでACSのID/PWDを入力します。これでIBM i とSSH通信経路が確立します。
＊初回に対象IBM iに接続した際は下記のようなセキュリティ警告画面が出ます。内容を確認して、受け入れる をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/a10b14d0-8839-2baf-b125-2f64304eaac6.png)
IBM i にSSHで正しく接続されるとPuttyのターミナル画面に下記のようにプロンプト $ が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/899282f4-6274-f276-55db-d538d3beaaf1.png)
＊注意
　今回は手っ取り早くということでSSHをパスワード認証としていますが脆弱なので早急にキー認証に変更することを推奨します。手順は検索で見つかると思いますが、いずれ更新したいと思います。
＊＊SSHをキー認証に変更する手順

手順4.ACSを導入して、5250端末を起動する
ACSの導入手順もいろいろ見つかるのでそちらをご参照ください。
＊＊ACS導入手順

ACSが導入できたら、接続するIBM i の情報を登録します。システム構成→一般タブでIBM i のホスト名かIPを登録します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/781bfe5a-cfec-cee0-0537-950ea12518b6.png)

最後にACS 5250端末設定です。5250エミュレーター→接続設定画面で、宛先アドレスを（IBM iへSSH通信するので）localhost, 宛先ポートにPuttyのtelnet 23番ポートの転送先ポートに指定した 50000 を指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/85c9e649-3715-6d91-202e-801448c61da2.png)


以上でACS 5250画面が起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/cf15a0eb-7709-1df6-ee75-2522cd61c164.png)



通信を終了する際は接続と逆の手順で、5250セッションをサインオフ＆終了→Puttyを終了します。

■参考情報　IBM Cloudドキュメント
IBM i 仮想マシン (VM) への接続　https://cloud.ibm.com/docs/power-iaas?topic=power-iaas-connect-ibmi

PowerVSのインスタンスにNavigator for i にブラウザーで接続する場合は、以下のポートを追加します。
2004,2001,5010,5555,5544,8480,446,137,445,139,3000