IBM i駆け出し日記：Power VSをACSに接続する -ACSとssh接続編-

## ACSからsshでPowerVS環境のIBM iへ接続できるようにする
[前回](https://qiita.com/koga39chan/items/40a61868dba59f72a5dd)はACSをローカル環境にインストールするところまでをやりました。

今回はPower VS側での設定とACS側の設定について書いていきます。

## Power VSでの設定
IBM Cloudですでにインスタンス(LPAR,区画)は作成しており、QSECFRでログインしたのちメインメニューが表示できている状態にした以降の操作を書きます。

※QSECOFR：IBM iでの管理者権限、UNIXでいうroot権限みたいな。インスタンス作成後に最初にログインするときのUser IDとPassWordは共にQSECOFRです。

### ユーザープロファイルの作成(作成済みなら飛ばしてください）
以下のコマンドをIBM Cloudコンソール5250で入力します。
CRTUSRPRFコマンドでユーザープロフィールを作成し、2個目のMKDIRコマンドでユーザープロフィールのホームディレクトリを作成します。
```
CRTUSRPRF USRPRF(SAKURA) PASSWORD(#任意のパスワード)
MKDIR DIR('/HOME/SAKURA')
```



### TCP/IPの確認
まず**CFGTCP**コマンドでIPが振られていることを確認します。
以下のコマンドを入力します。
```
CFGTCP
```

1を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/3345f0c0-6001-fc79-1c02-a51d90622086.png)

127.0.0.1以外の自分にIPがあればOK
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/611d5774-c802-85ca-9c0e-da6288b09a05.png)
今回はインターネット接続をオン（パブリック接続を使用可能にチェック）したので2つIPアドレスが割り振られていますが、パブリックを使用可能にしないとIPは1つだけ表示されます。


クラウドコンソールのここで外部IPが振られていることを確認します。上のパブリックネットワークの方が振られていればOKです。
外部IPをこの先使います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/4b9afccc-5cc7-b3d3-1116-fe37885cf31b.png)


### 公開鍵の登録準備
IBM iのコンソールで.sshというフォルダーを自分のディレクトリ配下に作成します。
```
MKDIR DIR('/HOME/KOGA/.SSH')
```

### iの設定変更
Telnet 5250 で接続できるように、IBM i 側の設定をします。
SECOFRクラスのユーザーで接続を可能にします。
以下のコマンドを入力します。
```
CHGSYSVAL SYSVAL(QAUTOCFG) VALUE('1') 
CHGSYSVAL SYSVAL(QAUTOVRT) VALUE(10)
CHGSYSVAL SYSVAL(QLMTSECOFR) VALUE('0')
```
※ちなみに上記コマンドの意味は
- QAUTOCFG('1')：5250端末セッション接続に使用する5250端末装置*DEVDを自動的に作成する
- QAUTOVRT('10')：5250端末セッション接続に使用する5250端末装置*DEVDを最大10個自動構成する
- QLMTSECOFR('0')：*SECOFRクラスでログインする場合に*DEVDに明示的に*SECOFRクラスユーザーの権限がなくともログインできるようにする

とのことらしい。

### 必要なサーバージョブを開始する
以下のコマンドを5250に入力します。
```
STRHOSTSVR *ALL
STRTCPSVR *SSHD
STRTCPSVR *TELNET
```

これで一旦Power VSでの操作は終わりです。

## Macでのコンソール操作
### 鍵の登録
公開鍵を scp コマンドで先程作成したIBM i の.SSHディレクトリにコピーします。

```
scp .ssh/id_rsa.pub sakura@192.xxx.xxx.xx:/home/sakura/.ssh/id_rsa.pub
sakura@192.xxx.xxx.xx's password:　 #パスワード要求されるのでiで作成したユーザープロファイルのパスワードを入れます
id_rsa.pub                                          100%  745    38.3KB/s   00:00
```

認証鍵の作成方法の参考記事はこちら：
https://qiita.com/soma_sekimoto/items/35845495bc565c38ae9d

以下公開鍵と権限の設定をします。
sshでローカルのコンソールからIBM Cloud環境のIBMiログインし、転送したid_rsa.pub ファイルをIBM iの.ssh/authorized_keys に追記します。
追記した後にchmodで権限の変更をし、exitコマンドで出ます。
上記の作業を以下のコマンドでやります。
```
ssh SAKURA@192.xxx.xxx.xx
SAKURA@192.xxx.xxx.xx's password:　#IBM iのユーザープロファイルのパスワードを入力

$ pwd
/home/SAKURA
$cat .ssh/id_rsa.pub >> .ssh/authorized_keys
$ chmod 700 .
$ chmod 700 .ssh
$ chmod 600 .ssh/id_rsa.pub

$exit
```
ssh の鍵認証の失敗のほとんどは権限の設定もれらしいので権限の変更は絶対にやりましょう。

### power VSとACSをトンネリングして繋ぐ
ACSのポートとpower VSのポート(正しくはIBM Cloudかも)を繋ぎます。
以下のコマンドをローカルのコンソールで入力します。
ちなみに私はMacでPuttyを使えないのでコマンド操作でやります。
```
sudo ssh -L 50000:localhost:23 -L 2001:localhost:2001 -L 2005:localhost:2005 -L 449:localhost:449 -L 8470:localhost:8470 -L 8471:localhost:8471 -L 8472:localhost:8472 -L 8473:localhost:8473 -L 8474:localhost:8474 -L 8475:localhost:8475 -L 8476:localhost:8476 -o ExitOnForwardFailure=yes -o ServerAliveInterval=15 -o ServerAliveCountMax=3 SAKURA@192.xxx.xxx.xx
```
1回目に聞かれたPWはMacのパスワード
2回目に聞かれるPWはIBM i のSAKURAのパスワード
です。

※sudoじゃないと449が開かない、sudoで繋がらない時もたまにあるのでsudoを消去してやってみてください

WindowsだとPutty使えるみたい。
参考：https://qiita.com/gomAnomalocaris/items/9eb2ced60c9830704b65


## ACSでの操作
### 接続先IPの設定
ACSを開き、管理＞システム構成で自分のMacのIP(今回は127.0.0.1)を登録します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/ecc7d25a-c02c-cf55-57e0-c1abbd16c3c3.png)
新規のボタンから登録、システム名のところにIPを入れます。
![スクリーンショット 2023-03-29 17.30.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/ca7c60ec-229a-6df6-b056-e9d1fa80f005.png)

### ポートの設定
一番上のIPを選択していることを確認したのち、5250エミュレーターを開きます。
![スクリーンショット 2023-03-29 17.35.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/9dec72b9-4fd3-6f49-719d-3e0db7a3b3df.png)
作成したIBM iの自分のユーザー名とパスワードでログインします。

その後通信>構成を開き、宛先ポートを50000に変更します。
![スクリーンショット 2023-03-29 17.37.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/b0193091-d8ce-c5c8-c6dc-1267e159e769.png)

![スクリーンショット 2023-03-29 17.37.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/befff034-61aa-ccfd-33c5-f81a9cf17941.png)

入力したらOKを押して、再度ログインします。

こんな画面が出たらOKです！
![スクリーンショット 2023-03-29 17.47.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/dd3fd16e-2487-afcd-d232-9f25c94f7155.png)

### パスワード認証の停止
不正アクセス防止のためパスワード認証を停止します。
パスワード認証停止の詳しい記事は以下、今回は手順のみ記載します。
参考：https://qiita.com/6onoda/items/824d56250345ccd2b8c6

以下のコマンドを変更しパスワード認証をストップします
```
EDTF '/QOpenSys/QIBM/UserData/SC1/OpenSSH/etc/sshd_config'
```
**#PasswordAuthntification yes**の行を探して、**PasswordAuthntification no**　に書き換えます。
書き換えるこんな感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/9e6e5af4-1a35-de28-7b61-70adaa93a080.png)





<font color="Gray">
※コマンドがよくわからない場合は

```
WRKLNK /
```
で対象ファイルを5でどんどん開いていってもたどり着けます。
sshd_configを見つけたら2で開くと上のようにファイル編集できます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3212743/35706be2-600d-5b73-18ef-f1fa907f1567.png)
↑こんな感じ
</font>




設定を変更したらSSHDサーバー再起動します。
以下のコマンドを入力します。
```
ENDTCPSVR SERVER(*SSHD)
STRTCPSVR SERVER(*SSHD)
```

## Macでのコンソール操作
### コンソールでパスワードなしで入れることを確認する
ssh接続してみます。
```
ssh SAKURA@192.xxx.xxx.xx
```
これで入れたら無事設定完了です。