ACSからsshでPowerVS環境のIBM iへ接続できるようにする
前回は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
127.0.0.1以外の自分にIPがあればOK
今回はインターネット接続をオン(パブリック接続を使用可能にチェック)したので2つIPアドレスが割り振られていますが、パブリックを使用可能にしないとIPは1つだけ表示されます。
クラウドコンソールのここで外部IPが振られていることを確認します。上のパブリックネットワークの方が振られていればOKです。
外部IPをこの先使います。
公開鍵の登録準備
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
Password: #Macのパスワード
SAKURA@192.xxx.xxx.xx's password: #IBMiのSAKURAのパスワード
※sudoじゃないと449が開かない、sudoで繋がらない時もたまにあるのでsudoを消去してやってみてください
WindowsだとPutty使えるみたい。
参考:https://qiita.com/gomAnomalocaris/items/9eb2ced60c9830704b65
ACSでの操作
接続先IPの設定
ACSを開き、管理>システム構成で自分のMacのIP(今回は127.0.0.1)を登録します。
新規のボタンから登録、システム名のところにIPを入れます。
ポートの設定
一番上のIPを選択していることを確認したのち、5250エミュレーターを開きます。
作成したIBM iの自分のユーザー名とパスワードでログインします。
その後通信>構成を開き、宛先ポートを50000に変更します。
入力したらOKを押して、再度ログインします。
パスワード認証の停止
不正アクセス防止のためパスワード認証を停止します。
パスワード認証停止の詳しい記事は以下、今回は手順のみ記載します。
参考:https://qiita.com/6onoda/items/824d56250345ccd2b8c6
以下のコマンドを変更しパスワード認証をストップします
EDTF '/QOpenSys/QIBM/UserData/SC1/OpenSSH/etc/sshd_config'
#PasswordAuthntification yesの行を探して、PasswordAuthntification no に書き換えます。
書き換えるこんな感じ。
WRKLNK /
で対象ファイルを5でどんどん開いていってもたどり着けます。
sshd_configを見つけたら2で開くと上のようにファイル編集できます。
設定を変更したらSSHDサーバー再起動します。
以下のコマンドを入力します。
ENDTCPSVR SERVER(*SSHD)
STRTCPSVR SERVER(*SSHD)
Macでのコンソール操作
コンソールでパスワードなしで入れることを確認する
ssh接続してみます。
ssh SAKURA@192.xxx.xxx.xx
これで入れたら無事設定完了です。