はじめに
PC上(Windows)の各種ツールからWazi aaSのz/OSに接続する方法を見ていきます。
ここでは前の記事のネットワーク構成で示した浮動IPを使用する例で構成されている前提で進めます。
(VPNを使用する場合も基本的な考え方は同様ですので適宜読み替えてください。)
関連記事
Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (1) 概要
Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (2) 仮想サーバー作成
Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (3) ネットワーク構成
Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (4) Wazi aaS への接続
Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (5) Stock Iamge確認
Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (6) Stock Iamge基本操作/カスタマイズ
Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (7) Wazi Image Builder
Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (7)' Wazi Image Builder - Trouble Shootingメモ
Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (8) Wazi aaS仮想サーバーの複製
Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (9) TerraformによるWazi aaS仮想サーバーの管理
概要
上のイメージのようにPC上の各ツールからWazi aaSに接続してみます。
Wazi aaSを使用する際の作法としては、まず最初にSSHで接続してIBMUSERのパスワードを設定する必要がありますのでSSHでの接続は必須です。
PCからの接続例
事前準備
PC上のhostsにホスト名とWazi aaS仮想サーバーのIPアドレスのマッピングをしておきます。
仮想サーバー名に合わせてwazi01
という名前のホスト名を定義します。
SSH
参考: Connecting to z/OS virtual server instances
まずはじめにSSHでWazi aaSのUSSに接続する必要がありますのでPC上にはSSHクライアントが必要になります。上のマニュアルの記述の通りコマンドプロンプトやWSLからsshコマンドを使用してもよいですが、ここでは使い勝手のよいteratermを使用する例を示します。
teratermを起動し新しい接続でホスト名wazi01
、サービス:SSH
、ポート22
を指定します。
ユーザー名:ibmuser
、認証方式としてRSA/DSA/ECDSA/ED25519鍵を使う
を選択し、秘密鍵としてWazi aaS仮想サーバー作成時に作成したキーペアの秘密鍵のファイルを指定します。
IBMUSERパスワード設定
SSH接続ができたら、ここからTSOコマンドを投入してIBMUSERのパスワードを設定します。
tsocmd 'ALTUSER IBMUSER PASSWORD(XXXXXXXX) NOEXPIRE RESUME'
証明書取得
後続のPCOM接続で必要なCA証明書を入手しておきます。CA証明書は、/u/ibmuser/common_cacert
に提供されています。
マニュアルの記述に従って、scpコマンドを使用してもよいですが、ここではteratermを使用する例を示します。
teratermのメニューから ファイル - SSH SCP を選択します。以下のポップアップ・ウィンドウが開くので、下段の項目でFrom:/u/ibmuser/common_cacert
、To: に適当なPC上のフォルダを指定し、Reciveを押します。
common_cacertというファイルがPC上に作成されますので、拡張子.cerを付与します。ファイルをダブルクリックして開くと証明書の中身の情報が確認できます。
※注意:この証明書ファイル"common_cacert"は、Wazi aaS仮想サーバーごとに固有のものが生成されます。複数のWazi aaS仮想サーバーにアクセスする必要がある場合、それぞれの証明書を取得して管理する必要があります。
PCOM(TN3270)
CA証明書の登録
Wazi aaSではTN3270接続についてはAT-TLSを使用する構成になっています。そのため、先に入手したCA証明書(common_cacert.cer
)を信頼できるCA証明書として登録しておく必要があります。
Windowsの場合以下の手順でCA証明書を登録します。
Windowsのインターネットオプションを開き、コンテンツ・タブから"証明書"ボタンをクリックします。
先に入手したCA証明書のファイルcommon_cacert.cer
を指定して"次へ"
"証明書をすべて次のストアに配置する"を選択し、証明書ストアに"信頼されたルート証明機関"を指定し"次へ"
接続構成
CA証明書がインポートできたら、PCOMの接続構成を行います。
ホスト定義タブにて、ホスト名またはIPアドレス: wazi01
、ポート番号: 992
を指定します。
セキュリティーの設定タブにて、"セキュリティーの使用"にチェックを入れます。
TSOへのログイン
上の接続構成を使用して接続すると、以下のような画面が表示されます。
パスワード入力用のプロンプトが出るので、上で設定したパスワードを入力します。
あとは実際のz/OSと同様に操作が行えます。
z/OSMF
ブラウザからhttps://wazi01:10443/zosmf/
にアクセスします。
IBMUSERと、上で設定したパスワードを指定してログインします。
VS Code
VS Codeからz/OSへの接続構成の詳細は以下の記事もご参照ください。
参考: VS Code - z/OS接続構成 (Zowe CLI V2編)
接続構成例:
{
"$schema": "./zowe.schema.json",
"profiles": {
"isecloud_wazi01": {
"properties": {
"host": "wazi01"
},
"profiles": {
"zosmf": {
"type": "zosmf",
"properties": {
"port": 10443
}
},
"ssh": {
"type": "ssh",
"properties": {
"port": 22,
"privateKey": "C:\\xxx\\id_rsa_wazi"
}
}
},
"secure": [
"user",
"password"
]
},
"base": {
"type": "base",
"properties": {
"rejectUnauthorized": false
}
}
},
"defaults": {
"zosmf": "wazi01.zosmf",
"base": "base"
},
"autoStore": true
}
IDz
IDzからz/OSへの接続構成の詳細は以下の記事もご参照ください。
参考: Eclipseを使用したメインフレーム・アプリケーション開発 - (2)z/OS基本操作 - RSE接続での操作 - 接続構成
接続構成例:
リモート・システム・ビューの 新規接続 - z/OSを右クリック - 新規接続を選択
ファイル転送
Wazi aaSではFTPサーバーも自動で起動しますが、AT-TLSによる通信が行われるよう構成されているため、TLS対応のFTPクライアントから接続する必要があります。また、浮動IPを使用したポートごとのアクセス制御の場合、FTPのデータ通信用のポートが動的にアサインされたりするのでちょっとその辺りの考慮が面倒です(Windows標準のFTPクライアントではPassiveモードの通信やTLS通信ができないらしい)。
...と思っていたら、PCOMのFTPクライアント機能を使うとPassiveモード、かつTLS通信ができるということを教えていただきました。
ここでは、PCOMのFTPクライアント機能、および、Wazi aaSのStock Imageのデフォルト環境で利用できるFTP以外のデータ転送方法を記載します。
PCOMのFTPクライアントによる通信
まず、事前にWazi aaS側でFTPサーバーのカスタマイズをしてPassiveモードのデータ通信用ポートのレンジを絞っておきます。そのうえで、IBM Cloudの仮想サーバーとしてそのポートレンジの通信を受け付けるようネットワークの設定をしておきます。例えば、セキュリティー・グループでポート範囲を絞っている場合は、Passiveモードのデータ通信用ポート・レンジを許可しておきます。
参考: FTPサーバーのPassiveモードのデータ通信用ポート設定例 → Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (6) Stock Iamge基本操作/カスタマイズ - FTPカスタマイズ
次にPCでPCOMのFTPクライアントを起動します。
※FTPではAT-TLSの通信が行われます。上のPCOM(TN3270)接続設定例に示したCA証明書の登録は完了している前提です。
"接続"タブにてホスト名、ポートを指定し、データ接続モードとしてパッシブを選択します。
"SSL"タブにて、"セキュリティーを有効にする"にチェックを入れます。
MVSデータセット、USSいずれもファイル転送可能です。
WinSCPによるFTP通信
WinSCPでもパッシブモード、TLS通信はできるので、PCOMのFTPクライアントと同様FTP通信ができました。
ただし、WinSCPの場合MVSデータセットとのファイル転送は無理そうです(USSのみ)。
設定例:
明示的なTLS/SSL暗号化を指定
設定にて、パッシブモード接続でIPアドレスを強制するをオンに指定
OpenSSHベースの通信
OpenSSHをベースとしてファイル転送の仕組みです。SSHのポートが使われるのでネットワーク構成としては楽です。
sftp
参考: Configuring sftp
sftpプロトコルを使用してUSS上のファイルを送受信できます。ただし基本的に"バイナリモード"での送受信となりますので、コード変換が必要な場合は個別にiconvなどで手動で実施する必要があります。
scp
参考: Configuring scp
scpプロトコルを使用してUSS上のファイルを送受信できます。ただし基本的に"テキストモード"での送受信となりますので、ASCII-EBCDIC変換が必ず発生します。USS側のコードページはロケールに依存しますが、ネットワーク上を流れるデータとしては一旦ISO8859-1(ISO Latin 1)に変換されることになりますので、日本語(DBCS)を含むデータは正しく変換されません。
z/OSMF + Zowe CLI
z/OSMFではMVSデータセットやUSSファイルを操作するためのREST APIが提供されていますので、そちらを利用することができます。
参考:z/OS data set and file REST interface
ただ、これらをそのままREST APIとして使用するのは使い勝手が悪いので、この仕組みを利用したZowe CLIというツール(OSS)が提供されています。
これは専用のCLI(Commannd Level Interface)が提供されるので、コマンドでデータの送受信が行えます。
USS上のファイルだけでなくMVSデータセットの送受信も行えます。また、バイナリーモード/テキストモードの制御や、日本語のコードページも対応しているので日本語(DBCS)を含むコード変換にも対応しています。
参考:
Zowe CLI quick start
zowe › zos-files
zowe cliコマンド使用例
データセットのメンバー表示例
c:\>zowe zos-files list all-members IBMUSER.JCL --host wazi01 --port 10443 --user IBMUSER --password xxxxx
APPLY
HZSALLCP
RACFCERT
RECIEVE
RRSCOLD
SADMPDS
SADMPOSG
SSHKYCP
TRSDUMP
TRSREST
USS上のファイル表示例
c:\>zowe zos-files list uss-files /u/ibmuser --host wazi01 --port 10443 --user IBMUSER --password xxxxx
. drwxr-xr-x 8192 BPXROOT
.. dr-xr-xr-x BPXROOT
.ansible drwx------ 8192 BPXROOT
.ssh drwx------ 8192 BPXROOT
common_cacert -rw------- 1387 BPXROOT
.sh_history -rw------- 2482 BPXROOT
.dbb drwx------ 8192 BPXROOT
.bashrc -rw-r--r-- 158 BPXROOT
env-overrides -rw------- 16 BPXROOT
.cache drwxr-xr-x 8192 BPXROOT
.bash_history -rw------- 23 BPXROOT
Util drwxr-xr-x 8192 BPXROOT
shutsys -rw-r--r-- 2386 BPXROOT
.gitconfig -rw-r--r-- 149 BPXROOT
.profile -rw-r--r-- 82 BPXROOT
JCL drwxr-xr-x 8192 BPXROOT
Git drwxr-xr-x 8192 BPXROOT
dbb-zappbuild drwxr-xr-x 8192 BPXROOT
private_common_properties drwx------ BPXROOT