

AWS 大型机现代化服务（托管运行时环境体验）不再向新客户开放。有关类似于 AWS 大型机现代化服务（托管运行时环境体验）的功能，请浏览 AWS 大型机现代化服务（自我管理体验）。现有客户可以继续正常使用该服务。有关更多信息，请参阅[AWS 大型机现代化可用性变更](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# M2SFTP 批处理实用程序
<a name="m2sftp"></a>

M2SFTP 是一个 JCL 实用程序，旨在使用安全文件传输协议 (SFTP) 在系统之间执行安全的文件传输。该程序使用 Putty SFTP 客户端 `psftp` 来执行实际的文件传输。该程序的工作原理与大型机 FTP 实用程序类似，使用用户和密码进行身份验证。

**注意**  
不支持使用公钥进行身份验证。

要将您的大型机 FTP JCLs 转换为使用 SFTP，请更改为`PGM=FTP`。`PGM=M2SFTP`

**Topics**
+ [支持的平台](#m2sftp-platforms)
+ [安装依赖项](#m2sftp-dependencies)
+ [配置 M2SFTP 以实现 AWS 大型机现代化托管](#m2sftp-configure-managed)
+ [在 Amazon EC2（包括 WorkSpaces 应用程序）上为 AWS 大型机现代化运行时配置 M2SFTP](#m2sftp-configure-customer-infra)
+ [样本 JCLs](#m2sftp-jcl)
+ [Putty SFTP (PSFTP) 客户端命令参考](#m2sftp-cmd-ref)
+ [后续步骤](#m2sftp-next)

## 支持的平台
<a name="m2sftp-platforms"></a>

您可以在以下任何平台上使用 M2SFTP：
+ AWS 大型机现代化火箭软件（前身为 Micro Focus）托管
+ 火箭软件运行时（在亚马逊 EC2 上）
+ 火箭软件企业开发者 (ED) 和 Rocket Software 企业服务器 (ES) 产品的所有变体。

## 安装依赖项
<a name="m2sftp-dependencies"></a>

**在 Windows 上安装 Putty SFTP 客户端**
+ 下载并安装 [Putty SFTP](https://www.putty.org/) 客户端。

**在 Linux 上安装 Putty SFTP 客户端：**
+ 运行以下命令来安装 Putty SFTP 客户端：

  ```
    sudo yum -y install putty
  ```

## 配置 M2SFTP 以实现 AWS 大型机现代化托管
<a name="m2sftp-configure-managed"></a>

如果您迁移的应用程序在 AWS 大型机现代化管理版上运行，则需要按如下方式配置 M2SFTP。
+ 为 MFFTP 设置相应的 Rocket 企业服务器环境变量。下面是几个示例：
  + `MFFTP_TEMP_DIR`
  + `MFFTP_SENDEOL`
  + `MFFTP_TIME`
  + `MFFTP_ABEND`

  您可以根据需要设置任意数量的变量。您可以在 JCL 中使用 `ENVAR DD` 语句设置它们。有关这些变量的更多信息，请参阅 Micro Focus 文档中的 [MFFTP 控制变量](https://www.microfocus.com/documentation/enterprise-developer/ed80/ED-Eclipse/GUID-3F94BBC8-CB97-4642-A4A7-4235C0C079E2.html)。

要测试配置，请参阅[样本 JCLs](#m2sftp-jcl)。

## 在 Amazon EC2（包括 WorkSpaces 应用程序）上为 AWS 大型机现代化运行时配置 M2SFTP
<a name="m2sftp-configure-customer-infra"></a>

如果您迁移的应用程序在 Amazon EC2 AWS 的大型机现代化运行时上运行，请按如下方式配置 M2SFTP。

1. 更改 [Micro Focus JES 程序路径](https://www.microfocus.com/documentation/enterprise-developer/ed80/ED-Eclipse/GUID-BC8A1796-9EDE-48EB-8363-31C9BDE7F96B.html)以包含批处理实用程序的二进制位置。如果您需要指定多个路径，请在 Linux 上使用冒号 (`:`) 分隔路径，在 Windows 上使用分号 (`;`) 分隔路径。
   + Linux：`/opt/aws/m2/microfocus/utilities/64bit`
   + Windows（32 位）：`C:\AWS\M2\MicroFocus\Utilities\32bit`
   + Windows（64 位）：`C:\AWS\M2\MicroFocus\Utilities\64bit`

1. 为 MFFTP 设置相应的 Rocket 企业服务器环境变量。下面是几个示例：
   + `MFFTP_TEMP_DIR`
   + `MFFTP_SENDEOL`
   + `MFFTP_TIME`
   + ``MFFTP\$1ABEND

   您可以根据需要设置任意数量的变量。您可以在 JCL 中使用 `ENVAR DD` 语句设置它们。有关这些变量的更多信息，请参阅 Micro Focus 文档中的 [MFFTP 控制变量](https://www.microfocus.com/documentation/enterprise-developer/ed80/ED-Eclipse/GUID-3F94BBC8-CB97-4642-A4A7-4235C0C079E2.html)。

要测试配置，请参阅[样本 JCLs](#m2sftp-jcl)。

## 样本 JCLs
<a name="m2sftp-jcl"></a>

要测试安装，您可以使用以下其中一个示例 JCL 文件。

**M2 SFTP1 .jcl**

此 JCL 展示了如何调用 M2SFTP，以便将文件发送到远程 SFTP 服务器。请注意 `ENVVAR DD` 语句中设置的环境变量。

```
//M2SFTP1 JOB 'M2SFTP1',CLASS=A,MSGCLASS=X,TIME=1440
//*
//* Copyright Amazon.com, Inc. or its affiliates.* 
//* All Rights Reserved.* 
//*
//*-------------------------------------------------------------------**
//* Sample SFTP JCL step to send a file to SFTP server* 
//*-------------------------------------------------------------------**
//*
//STEP01 EXEC PGM=M2SFTP,
//            PARM='127.0.0.1 (EXIT=99 TIMEOUT 300'
//*
//SYSFTPD  DD  *
RECFM FB
LRECL 80
SBSENDEOL CRLF
MBSENDEOL CRLF
TRAILINGBLANKS FALSE
/*
//NETRC    DD  *
machine 127.0.0.1 login sftpuser password sftppass
/*
//SYSPRINT DD  SYSOUT=*
//OUTPUT   DD  SYSOUT=*
//STDOUT   DD  SYSOUT=*
//INPUT    DD  *
type a
locsite notrailingblanks
cd files
put 'AWS.M2.TXT2PDF1.PDF' AWS.M2.TXT2PDF1.pdf   
put 'AWS.M2.CARDDEMO.CARDDATA.PS' AWS.M2.CARDDEMO.CARDDATA.PS1.txt
quit
/*
//ENVVAR   DD *
MFFTP_VERBOSE_OUTPUT=ON
MFFTP_KEEP=N
/*
//*
//
```

**M2 SFTP2 .jcl**

此 JCL 展示了如何调用 M2SFTP，以便接收来自远程 SFTP 服务器的文件。请注意 `ENVVAR DD` 语句中设置的环境变量。

```
//M2SFTP2 JOB 'M2SFTP2',CLASS=A,MSGCLASS=X,TIME=1440
//*
//* Copyright Amazon.com, Inc. or its affiliates.* 
//* All Rights Reserved.* 
//*
//*-------------------------------------------------------------------**
//* Sample SFTP JCL step to receive a file from SFTP server* 
//*-------------------------------------------------------------------**
//*
//STEP01 EXEC PGM=M2SFTP
//*
//SYSPRINT DD  SYSOUT=*
//OUTPUT   DD  SYSOUT=*
//STDOUT   DD  SYSOUT=*
//INPUT    DD  *
open 127.0.0.1
sftpuser
sftppass
cd files
locsite recfm=fb lrecl=150
get AWS.M2.CARDDEMO.CARDDATA.PS.txt +
'AWS.M2.CARDDEMO.CARDDATA.PS2' (replace
quit
/*
//ENVVAR   DD *
MFFTP_VERBOSE_OUTPUT=ON
MFFTP_KEEP=N
/*
//*
//
```

**注意**  
我们强烈建议将 FTP 凭证存储在 NETRC 文件中，并限制只有经过授权的用户才能访问。

## Putty SFTP (PSFTP) 客户端命令参考
<a name="m2sftp-cmd-ref"></a>

PSFTP 客户端不支持所有 FTP 命令。以下列表显示了 PSFTP 支持的所有命令。


| 命令 | 说明 | 
| --- | --- | 
|  \$1  |  运行本地命令  | 
|  bye  |  完成 SFTP 会话  | 
|  cd  |  更改远程工作目录  | 
|  chmod  |  更改文件权限和模式  | 
|  关闭  |  完成 SFTP 会话但不退出 PSFTP  | 
|  del  |  删除远程服务器上的文件  | 
|  dir  |  列出远程文件  | 
|  exit  |  完成 SFTP 会话  | 
|  入  |  将文件从服务器下载到本地机器上  | 
|  help  |  提供帮助  | 
|  lcd  |  更改本地工作目录  | 
|  lpwd  |  打印本地工作目录  | 
|  ls  |  列出远程文件  | 
|  mget  |  一次下载多个文件  | 
|  mkdir  |  在远程服务器上创建目录  | 
|  mput  |  一次上传多个文件  | 
|  mv  |  移动或重命名远程服务器上的文件  | 
|  open  |  连接到主机  | 
|  put  |  将文件从本地机器上传到服务器  | 
|  pwd  |  打印远程工作目录  | 
|  quit  |  完成 SFTP 会话  | 
|  reget  |  继续下载文件  | 
|  ren  |  移动或重命名远程服务器上的文件  | 
|  reput  |  继续上传文件  | 
|  rm  |  删除远程服务器上的文件  | 
|  rmdir  |  删除远程服务器上的目录  | 

## 后续步骤
<a name="m2sftp-next"></a>

要使用 SFTP 将文件上传和下载到亚马逊简单存储服务，您可以将 M2SFTP 与结合使用 AWS Transfer Family，如以下博客文章中所述。
+ [使用 AWS SFTP 逻辑目录构建简单的数据分发服务](https://aws.amazon.com/blogs/storage/using-aws-sftp-logical-directories-to-build-a-simple-data-distribution-service/)
+ [启用密码身份验证以供 AWS Transfer for SFTP 使用 AWS Secrets Manager](https://aws.amazon.com/blogs/storage/enable-password-authentication-for-aws-transfer-for-sftp-using-aws-secrets-manager/)