セキュア FTP (SFTP) は、メインの MFFTP プログラムで PuTTY SFTP の実装をシェルアウトして呼び出すことで実現します。
これは、FTPS (SSL/TLS を使用する FTP) ではなく、FTP over Secure Shell (SSH) です。
PuTTY ツールセットをインストールしてパスを通す必要があります。
具体的には、PuTTY SFTP の実行可能ファイル psftp.exe が必要です。
これらのユーティリティは、ここからダウンロードできます。
証明書ベースの承認を使用する場合は、証明書を使用できる必要があります。これを実現するためのプロセスについては、PuTTY のマニュアルを参照してください。
次の制御変数を構成する必要があります。
認証に使用する成果物を次のように決定するために使用します。
4 つの各変数には、値が次のように割り当てられています。
1 – ユーザー ID
2 – パスワード
4 – 証明書
8 – パスフレーズ
次のように必要な値を加算して、認証に使用する要素を取得します。
1 - ユーザー ID のみ
2 - パスワードのみ
3 - ユーザー ID とパスワード
4 - 証明書のみ
5 - 証明書とユーザー ID
6 - 証明書とパスワード
7 - 証明書とユーザー ID とパスワード
8 - 無効 (パスフレーズを持つには証明書が必要)
9 - 無効
10 - 無効
11 - 無効
12 - 証明書とパスフレーズ
13 - 証明書とパスフレーズとユーザー ID
14 - 証明書とパスフレーズとパスワード
次の DD 定義で承認パラメーターを構成できます。
次のパラメーターが有効です。<> 内のテキストを正しい値に置き換えてください。
FTP.DATA というデータセットで制御変数を構成し、FTP.PRIV.DATA というデータセットに ppk 証明書を配置する JCL の例
//SETUP02 JOB 'FTP.DATA',MSGCLASS=X,CLASS=A,MSGLEVEL=(1,1) //*-------------------------------------------------------- //DEL EXEC PGM=IEFBR14 //DEL1 DD DSN=FTP.DATA,SPACE=(TRK,1),DISP=(MOD,DELETE) //DEL2 DD DSN=FTP.AUTH.DATA,SPACE=(TRK,1),DISP=(MOD,DELETE) //DEL3 DD DSN=FTP.PRIV.DATA,SPACE=(TRK,1),DISP=(MOD,DELETE) //*========================================================== //* FTP.PRIV CONFIGURATION FILE //*========================================================== //DEFPRIV EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSIN DD DUMMY //SYSUT1 DD * PuTTY-User-Key-File-2: ssh-rsa Encryption: aes256-cbc Comment: slesz1 Public-Lines: 6 AAAAB3NzaC1yc2EAAAABJQAAAQEAmTd1uLtTsQ6RoyTuhzr3VxFBa0zAK7p91XbQ sa1NRh9lcVs8zeI3xOzNfW4fyTAe4YUyLCxF0dSXTChDvJtqNeNa9bXiY/noTzc8 WmnWklGzOI+JoxLGIfFvzEN/LjxkB3Tzmc5ESsLLC/xTJrvcuCw/H5Wbh377xaKH 6S4NfXCtaYxWJ3vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv0MRfH15y8DqF9bWhOP6 ywmZAmIZqJeL+0cgeGFtADiV7DSGSrMyEvKayh1OTTRpgebJ40fFaqWvPW6D5yQW LafvaQLh+OIuMc9iAUwhoetw7VNBLekIFUvwtpS6Pdrs98f0ZQ== Private-Lines: 14 Wo+ACSDjbOHFd3XXSaYI+meJ5wgJklTLIRjYzJe6QB3bRelm0iSdPTo+lJ8Gtn0u 7mXHsszk0hXAtkv1nWAVPYszk5tk+kY/zuT9YVRp03nwsuW/WQkofNAn5C205/sC WfvlklaYIBe5FBVmVUYu+p4FzTJYmshZDqMRLYGougB8LLI8knlRfmJn3jgjWR3Z yRS7XIzgBExy+NX6dyv6UA1mWHU2kV22ao7NBot9M9p2BrVh8NTyYwc4SDz238H9 JIV50m+BZkmZLhRHUokABY3DwAzDQnQHMRFLJ8rOFkPw4WfrJHyy9Do1wU5PlqJ/ SF7FSpTVlzilP7aI5mzexdrXs5WZtxJ5wDvSHTUmtcQSh2YDLxAZf4IPavHsD+eM nJh4AsU8Pvd4Op5ONPBJY1xrCdQ0AtfrvudFWjPlLJgm8901wo7Mzokbk3ys5sR+ IVu6FWCBk9iN+0KLLPxxxxxxxxxxxVmVzUK8AtbWkBr01bFSAbHiLgnwm1M4LwJz r1vY96CrBGEfj7wCKeaFmw7FIvc1r8n3WyYcmUfiv0WqZeuBX+yb90QwxzarQBuD Cbn7hgXgQq6ckE2BerhpM8TRpa2xHk5t0ACrZNyOIrfyRs6E+Bk6dmseMqWJYdRb 7lqdHH6smXW/fMLMurFv0P4WX7f4IPF4OrBG3CoJ3rBCTFXa6/+RaUjaC0/RKUtu n09m8WLdxVemHhlrg99NQmLx9JEUSr+GbiriAgj5bdppZB5Niz3YiKodZVtcH3ow 90rND6pMrKF/Fs6Zkt7Oxf8bIX3yzs7dpq9OqWU0AuyS5oMwtyMdBjmDrTBEumoF tKtHuQxX95/TXOJasCaMNRCb1RmGo7bbzo00Xjiq0UHj/fDZuGg9E1Dm2oXYGxg8 Private-MAC: 54aba03aff3cd77f65335b92b6a72df08034462b /* //SYSUT2 DD DSN=FTP.PRIV.DATA,SPACE=(TRK,1),UNIT=SYSDA, // DCB=(RECFM=LSEQ,LRECL=80),DISP=(NEW,CATLG) / //*========================================================== //* FTP.AUTH CONFIGURATION FILE //*========================================================== //* keypcn d:\util\putty\keys\slesz11-3private.ppk //DEFAUTH EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSIN DD DUMMY //SYSUT1 DD * machine slesz1 user fred pass password keypass slesz1ABCDEF hostkey 12:03:da:81:ea:49:6d:96:ed:6f:46:eb:84:27:4d:12 /* //SYSUT2 DD DSN=FTP.AUTH.DATA,SPACE=(TRK,1),UNIT=SYSDA, // DCB=(LRECL=80,RECFM=FB,DSORG=PS),DISP=(NEW,CATLG) / //*========================================================== //* FTP.DATA CONFIGURATION FILE //*========================================================== //DEFFTP EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSIN DD DUMMY //SYSUT1 DD * ; --------------------------------------------------------------------- ; MFFTP SETTINGS ; --------------------------------------------------------------------- MFFTP_ABCODE 3085 ; SET DEFAULT ABEND CODE FOR MFFTP MFFTP_OUTPUT_LRECL 120 MFFTP_PREFIX=Y MFALLOC_LOC d:\temp\j1 ;MFFTP_VERBOSE_OUTPUT ON ;MFFTP_KEEP_IP Y ;MFFTP_KEEP Y MFFTP_CLIENT=SFTP MFFTP_SFTP_AUTH=13 ..... and so on /* //SYSUT2 DD DSN=FTP.DATA,SPACE=(TRK,1),UNIT=SYSDA, // DCB=(LRECL=80,RECFM=FB,DSORG=PS),DISP=(NEW,CATLG) //SFTP を利用して FTP を使用する JCL の例
//MFFTP05  JOB 'MFFTP TEST',CLASS=A,MSGCLASS=A
//* sftp flavour .
//*
//* Delete files
//*
//DEL1  EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
 DELETE MFI01.MFFTP.FBFILE.TOUPLD FORCE
 DELETE MFI01.FTPDATA.FBFILE FORCE
 DELETE MFI01.MFFTP.GDG FORCE
 SET MAXCC=0
/*
//*
//* Allocate GDG base
//*
//ALLOC  EXEC  PGM=IDCAMS
//SYSPRINT DD  SYSOUT=*
//SYSIN    DD  *
  DEFINE  GDG -
         (NAME(MFI01.MFFTP.GDG) -
          LIMIT(5) -
          NOEMPTY -
          SCRATCH)
/*
//*
//* Create an FB/10 dataset
//*
//STEP0 EXEC PGM=IEBGENER
//SYSPRINT  DD SYSOUT=*
//SYSIN     DD DUMMY
//SYSUT1    DD *
AAAAAAAAAA
BBBBBBBBBB
/*
//SYSUT2    DD DSN=MFI01.MFFTP.FBFILE.TOUPLD,
//             DISP=(NEW,CATLG,DELETE),
//             DCB=(RECFM=FB,LRECL=10)
//*
//* Upload an MVS dataset
//*
//STEP1 EXEC PGM=MFFTP,PARM='slesz11-3.microfocus.com'
//SYSOUT DD  SYSOUT=*
//OUTPUT DD  SYSOUT=*
//SFTPAUTH DD DSN=FTP.AUTH.DATA,DISP=(SHR)
//SFTPPPK  DD DSN=FTP.PRIV.DATA,DISP=(SHR)
//INPUT  DD *
cd MFFTP_TEST
mkdir machine_os
cd machine_os
put MFI01.MFFTP.FBFILE.TOUPLD MFFTP01.txt
quit
/*
//*
//* Download a text file to an MVS dataset (FB/10)
//*
//STEP2 EXEC PGM=MFFTP,PARM='slesz11-3.microfocus.com'                                                    
//SYSOUT DD  SYSOUT=*
//OUTPUT DD  SYSOUT=*
//SFTPAUTH DD DSN=FTP.AUTH.DATA,DISP=(SHR)
//SFTPPPK  DD DSN=FTP.PRIV.DATA,DISP=(SHR)
//INPUT DD *
cd MFFTP_TEST/machine_os
locsite recfm=fb lrecl=10
get MFFTP01.txt MFI01.FTPDATA.FBFILE (rep
MFFTP_VARS
quit
/*
//*
//* Download a text file to a new GDG bias
//*
//STEP3 EXEC PGM=MFFTP,PARM='slesz11-3.microfocus.com'                                                   
//SYSOUT DD  SYSOUT=*
//OUTPUT DD  SYSOUT=*  
//SFTPAUTH DD DSN=FTP.AUTH.DATA,DISP=(SHR)
//SFTPPPK  DD DSN=FTP.PRIV.DATA,DISP=(SHR)
//INPUT DD *
cd MFFTP_TEST/machine_os
locsite recfm=fb lrecl=10
locstat
get MFFTP01.txt MFI01.MFFTP.GDG(+1)
del MFFTP01.txt
cd ..
rmdir machine_os
/*