Skip to content

Commit

Permalink
Until today, the service supported only RSA host keys and user keys. …
Browse files Browse the repository at this point in the history
…Now with this launch, Transfer Family has expanded the support for ECDSA and ED25519 host keys and user keys, enabling customers to support a broader set of clients by choosing RSA, ECDSA, and ED25519 host and user keys.
  • Loading branch information
aws-sdk-dotnet-automation committed Jun 22, 2022
1 parent facbbd4 commit f8b7773
Show file tree
Hide file tree
Showing 18 changed files with 141 additions and 430 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1708,8 +1708,7 @@
},
"SshPublicKeyBody":{
"type":"string",
"max":2048,
"pattern":"^ssh-rsa\\s+[A-Za-z0-9+/]+[=]{0,3}(\\s+.+)?\\s*$"
"max":2048
},
"SshPublicKeyCount":{"type":"integer"},
"SshPublicKeyId":{
Expand Down
20 changes: 10 additions & 10 deletions generator/ServiceModels/transfer/transfer-2018-11-05.docs.json

Large diffs are not rendered by default.

23 changes: 11 additions & 12 deletions generator/ServiceModels/transfer/transfer-2018-11-05.normal.json
Original file line number Diff line number Diff line change
Expand Up @@ -682,7 +682,7 @@
},
"HostKey":{
"shape":"HostKey",
"documentation":"<p>The RSA private key as generated by the <code>ssh-keygen -N \"\" -m PEM -f my-new-server-key</code> command.</p> <important> <p>If you aren't planning to migrate existing users from an existing SFTP-enabled server to a new server, don't update the host key. Accidentally changing a server's host key can be disruptive.</p> </important> <p>For more information, see <a href=\"https://docs.aws.amazon.com/transfer/latest/userguide/edit-server-config.html#configuring-servers-change-host-key\">Change the host key for your SFTP-enabled server</a> in the <i>Amazon Web Services Transfer Family User Guide</i>.</p>"
"documentation":"<p>The RSA, ECDSA, or ED25519 private key to use for your server.</p> <p>Use the following command to generate an RSA 2048 bit key with no passphrase:</p> <p> <code>ssh-keygen -t rsa -b 2048 -N \"\" -m PEM -f my-new-server-key</code>.</p> <p>Use a minimum value of 2048 for the <code>-b</code> option: you can create a stronger key using 3072 or 4096.</p> <p>Use the following command to generate an ECDSA 256 bit key with no passphrase:</p> <p> <code>ssh-keygen -t ecdsa -b 256 -N \"\" -m PEM -f my-new-server-key</code>.</p> <p>Valid values for the <code>-b</code> option for ECDSA are 256, 384, and 521.</p> <p>Use the following command to generate an ED25519 key with no passphrase:</p> <p> <code>ssh-keygen -t ed25519 -N \"\" -f my-new-server-key</code>.</p> <p>For all of these commands, you can replace <i>my-new-server-key</i> with a string of your choice.</p> <important> <p>If you aren't planning to migrate existing users from an existing SFTP-enabled server to a new server, don't update the host key. Accidentally changing a server's host key can be disruptive.</p> </important> <p>For more information, see <a href=\"https://docs.aws.amazon.com/transfer/latest/userguide/edit-server-config.html#configuring-servers-change-host-key\">Change the host key for your SFTP-enabled server</a> in the <i>Amazon Web Services Transfer Family User Guide</i>.</p>"
},
"IdentityProviderDetails":{
"shape":"IdentityProviderDetails",
Expand Down Expand Up @@ -774,7 +774,7 @@
},
"SshPublicKeyBody":{
"shape":"SshPublicKeyBody",
"documentation":"<p>The public portion of the Secure Shell (SSH) key used to authenticate the user to the server.</p> <note> <p> Currently, Transfer Family does not accept elliptical curve keys (keys beginning with <code>ecdsa</code>). </p> </note>"
"documentation":"<p>The public portion of the Secure Shell (SSH) key used to authenticate the user to the server.</p> <p>Transfer Family accepts RSA, ECDSA, and ED25519 keys.</p>"
},
"Tags":{
"shape":"Tags",
Expand Down Expand Up @@ -1238,7 +1238,7 @@
},
"ProtocolDetails":{
"shape":"ProtocolDetails",
"documentation":"<p> The protocol settings that are configured for your server. </p> <p> Use the <code>PassiveIp</code> parameter to indicate passive mode. Enter a single dotted-quad IPv4 address, such as the external IP address of a firewall, router, or load balancer. </p>"
"documentation":"<p> The protocol settings that are configured for your server. </p> <p> Use the <code>PassiveIp</code> parameter to indicate passive mode. Enter a single IPv4 address, such as the public IP address of a firewall, router, or load balancer. </p>"
},
"Domain":{
"shape":"Domain",
Expand Down Expand Up @@ -1657,7 +1657,7 @@
},
"SshPublicKeyBody":{
"shape":"SshPublicKeyBody",
"documentation":"<p>The public key portion of an SSH key pair.</p>"
"documentation":"<p>The public key portion of an SSH key pair.</p> <p>Transfer Family accepts RSA, ECDSA, and ED25519 keys.</p>"
},
"UserName":{
"shape":"UserName",
Expand Down Expand Up @@ -2231,15 +2231,15 @@
"members":{
"PassiveIp":{
"shape":"PassiveIp",
"documentation":"<p> Indicates passive mode, for FTP and FTPS protocols. Enter a single dotted-quad IPv4 address, such as the external IP address of a firewall, router, or load balancer. For example: </p> <p> <code> aws transfer update-server --protocol-details PassiveIp=<i>0.0.0.0</i> </code> </p> <p>Replace <code> <i>0.0.0.0</i> </code> in the example above with the actual IP address you want to use.</p> <note> <p> If you change the <code>PassiveIp</code> value, you must stop and then restart your Transfer server for the change to take effect. For details on using Passive IP (PASV) in a NAT environment, see <a href=\"http://aws.amazon.com/blogs/storage/configuring-your-ftps-server-behind-a-firewall-or-nat-with-aws-transfer-family/\">Configuring your FTPS server behind a firewall or NAT with Amazon Web Services Transfer Family</a>. </p> </note>"
"documentation":"<p> Indicates passive mode, for FTP and FTPS protocols. Enter a single IPv4 address, such as the public IP address of a firewall, router, or load balancer. For example: </p> <p> <code> aws transfer update-server --protocol-details PassiveIp=<i>0.0.0.0</i> </code> </p> <p>Replace <code> <i>0.0.0.0</i> </code> in the example above with the actual IP address you want to use.</p> <note> <p> If you change the <code>PassiveIp</code> value, you must stop and then restart your Transfer Family server for the change to take effect. For details on using passive mode (PASV) in a NAT environment, see <a href=\"http://aws.amazon.com/blogs/storage/configuring-your-ftps-server-behind-a-firewall-or-nat-with-aws-transfer-family/\">Configuring your FTPS server behind a firewall or NAT with Transfer Family</a>. </p> </note>"
},
"TlsSessionResumptionMode":{
"shape":"TlsSessionResumptionMode",
"documentation":"<p>A property used with Transfer servers that use the FTPS protocol. TLS Session Resumption provides a mechanism to resume or share a negotiated secret key between the control and data connection for an FTPS session. <code>TlsSessionResumptionMode</code> determines whether or not the server resumes recent, negotiated sessions through a unique session ID. This property is available during <code>CreateServer</code> and <code>UpdateServer</code> calls. If a <code>TlsSessionResumptionMode</code> value is not specified during CreateServer, it is set to <code>ENFORCED</code> by default.</p> <ul> <li> <p> <code>DISABLED</code>: the server does not process TLS session resumption client requests and creates a new TLS session for each request. </p> </li> <li> <p> <code>ENABLED</code>: the server processes and accepts clients that are performing TLS session resumption. The server doesn't reject client data connections that do not perform the TLS session resumption client processing.</p> </li> <li> <p> <code>ENFORCED</code>: the server processes and accepts clients that are performing TLS session resumption. The server rejects client data connections that do not perform the TLS session resumption client processing. Before you set the value to <code>ENFORCED</code>, test your clients.</p> <note> <p>Not all FTPS clients perform TLS session resumption. So, if you choose to enforce TLS session resumption, you prevent any connections from FTPS clients that don't perform the protocol negotiation. To determine whether or not you can use the <code>ENFORCED</code> value, you need to test your clients.</p> </note> </li> </ul>"
"documentation":"<p>A property used with Transfer Family servers that use the FTPS protocol. TLS Session Resumption provides a mechanism to resume or share a negotiated secret key between the control and data connection for an FTPS session. <code>TlsSessionResumptionMode</code> determines whether or not the server resumes recent, negotiated sessions through a unique session ID. This property is available during <code>CreateServer</code> and <code>UpdateServer</code> calls. If a <code>TlsSessionResumptionMode</code> value is not specified during <code>CreateServer</code>, it is set to <code>ENFORCED</code> by default.</p> <ul> <li> <p> <code>DISABLED</code>: the server does not process TLS session resumption client requests and creates a new TLS session for each request. </p> </li> <li> <p> <code>ENABLED</code>: the server processes and accepts clients that are performing TLS session resumption. The server doesn't reject client data connections that do not perform the TLS session resumption client processing.</p> </li> <li> <p> <code>ENFORCED</code>: the server processes and accepts clients that are performing TLS session resumption. The server rejects client data connections that do not perform the TLS session resumption client processing. Before you set the value to <code>ENFORCED</code>, test your clients.</p> <note> <p>Not all FTPS clients perform TLS session resumption. So, if you choose to enforce TLS session resumption, you prevent any connections from FTPS clients that don't perform the protocol negotiation. To determine whether or not you can use the <code>ENFORCED</code> value, you need to test your clients.</p> </note> </li> </ul>"
},
"SetStatOption":{
"shape":"SetStatOption",
"documentation":"<p>Use the <code>SetStatOption</code> to ignore the error that is generated when the client attempts to use SETSTAT on a file you are uploading to an S3 bucket.</p> <p>Some SFTP file transfer clients can attempt to change the attributes of remote files, including timestamp and permissions, using commands, such as SETSTAT when uploading the file. However, these commands are not compatible with object storage systems, such as Amazon S3. Due to this incompatibility, file uploads from these clients can result in errors even when the file is otherwise successfully uploaded.</p> <p>Set the value to <code>ENABLE_NO_OP</code> to have the Transfer Family server ignore the SETSTAT command, and upload files without needing to make any changes to your SFTP client. While the <code>SetStatOption</code> <code>ENABLE_NO_OP</code> setting ignores the error, it does generate a log entry in CloudWatch Logs, so you can determine when the client is making a SETSTAT call.</p> <note> <p>If you want to preserve the original timestamp for your file, and modify other file attributes using SETSTAT, you can use Amazon EFS as backend storage with Transfer Family.</p> </note>"
"documentation":"<p>Use the <code>SetStatOption</code> to ignore the error that is generated when the client attempts to use <code>SETSTAT</code> on a file you are uploading to an S3 bucket.</p> <p>Some SFTP file transfer clients can attempt to change the attributes of remote files, including timestamp and permissions, using commands, such as <code>SETSTAT</code> when uploading the file. However, these commands are not compatible with object storage systems, such as Amazon S3. Due to this incompatibility, file uploads from these clients can result in errors even when the file is otherwise successfully uploaded.</p> <p>Set the value to <code>ENABLE_NO_OP</code> to have the Transfer Family server ignore the <code>SETSTAT</code> command, and upload files without needing to make any changes to your SFTP client. While the <code>SetStatOption</code> <code>ENABLE_NO_OP</code> setting ignores the error, it does generate a log entry in Amazon CloudWatch Logs, so you can determine when the client is making a <code>SETSTAT</code> call.</p> <note> <p>If you want to preserve the original timestamp for your file, and modify other file attributes using <code>SETSTAT</code>, you can use Amazon EFS as backend storage with Transfer Family.</p> </note>"
}
},
"documentation":"<p> The protocol settings that are configured for your server. </p>"
Expand Down Expand Up @@ -2514,7 +2514,7 @@
},
"SshPublicKeyBody":{
"shape":"SshPublicKeyBody",
"documentation":"<p>Specifies the content of the SSH public key as specified by the <code>PublicKeyId</code>.</p>"
"documentation":"<p>Specifies the content of the SSH public key as specified by the <code>PublicKeyId</code>.</p> <p>Transfer Family accepts RSA, ECDSA, and ED25519 keys.</p>"
},
"SshPublicKeyId":{
"shape":"SshPublicKeyId",
Expand All @@ -2525,8 +2525,7 @@
},
"SshPublicKeyBody":{
"type":"string",
"max":2048,
"pattern":"^ssh-rsa\\s+[A-Za-z0-9+/]+[=]{0,3}(\\s+.+)?\\s*$"
"max":2048
},
"SshPublicKeyCount":{"type":"integer"},
"SshPublicKeyId":{
Expand Down Expand Up @@ -2714,7 +2713,7 @@
"members":{
"RetryAfterSeconds":{"shape":"RetryAfterSeconds"}
},
"documentation":"<p>The request was denied due to request throttling.</p> <p> HTTP Status Code: 400</p>",
"documentation":"<p>The request was denied due to request throttling.</p>",
"exception":true
},
"TlsSessionResumptionMode":{
Expand Down Expand Up @@ -2819,7 +2818,7 @@
},
"HostKey":{
"shape":"HostKey",
"documentation":"<p>The RSA private key as generated by <code>ssh-keygen -N \"\" -m PEM -f my-new-server-key</code>.</p> <important> <p>If you aren't planning to migrate existing users from an existing server to a new server, don't update the host key. Accidentally changing a server's host key can be disruptive.</p> </important> <p>For more information, see <a href=\"https://docs.aws.amazon.com/transfer/latest/userguide/edit-server-config.html#configuring-servers-change-host-key\">Change the host key for your SFTP-enabled server</a> in the <i>Amazon Web ServicesTransfer Family User Guide</i>.</p>"
"documentation":"<p>The RSA, ECDSA, or ED25519 private key to use for your server.</p> <p>Use the following command to generate an RSA 2048 bit key with no passphrase:</p> <p> <code>ssh-keygen -t rsa -b 2048 -N \"\" -m PEM -f my-new-server-key</code>.</p> <p>Use a minimum value of 2048 for the <code>-b</code> option: you can create a stronger key using 3072 or 4096.</p> <p>Use the following command to generate an ECDSA 256 bit key with no passphrase:</p> <p> <code>ssh-keygen -t ecdsa -b 256 -N \"\" -m PEM -f my-new-server-key</code>.</p> <p>Valid values for the <code>-b</code> option for ECDSA are 256, 384, and 521.</p> <p>Use the following command to generate an ED25519 key with no passphrase:</p> <p> <code>ssh-keygen -t ed25519 -N \"\" -f my-new-server-key</code>.</p> <p>For all of these commands, you can replace <i>my-new-server-key</i> with a string of your choice.</p> <important> <p>If you aren't planning to migrate existing users from an existing SFTP-enabled server to a new server, don't update the host key. Accidentally changing a server's host key can be disruptive.</p> </important> <p>For more information, see <a href=\"https://docs.aws.amazon.com/transfer/latest/userguide/edit-server-config.html#configuring-servers-change-host-key\">Change the host key for your SFTP-enabled server</a> in the <i>Amazon Web Services Transfer Family User Guide</i>.</p>"
},
"IdentityProviderDetails":{
"shape":"IdentityProviderDetails",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,6 @@
<property-value-rule>
<property>Amazon.Transfer.Model.CreateUserRequest.SshPublicKeyBody</property>
<max>2048</max>
<pattern>^ssh-rsa\s+[A-Za-z0-9+/]+[=]{0,3}(\s+.+)?\s*$</pattern>
</property-value-rule>
<property-value-rule>
<property>Amazon.Transfer.Model.CreateUserRequest.UserName</property>
Expand Down Expand Up @@ -263,7 +262,6 @@
<property-value-rule>
<property>Amazon.Transfer.Model.ImportSshPublicKeyRequest.SshPublicKeyBody</property>
<max>2048</max>
<pattern>^ssh-rsa\s+[A-Za-z0-9+/]+[=]{0,3}(\s+.+)?\s*$</pattern>
</property-value-rule>
<property-value-rule>
<property>Amazon.Transfer.Model.ImportSshPublicKeyRequest.UserName</property>
Expand Down Expand Up @@ -994,7 +992,6 @@
<property-value-rule>
<property>Amazon.Transfer.Model.SshPublicKey.SshPublicKeyBody</property>
<max>2048</max>
<pattern>^ssh-rsa\s+[A-Za-z0-9+/]+[=]{0,3}(\s+.+)?\s*$</pattern>
</property-value-rule>
<property-value-rule>
<property>Amazon.Transfer.Model.SshPublicKey.SshPublicKeyId</property>
Expand Down
41 changes: 39 additions & 2 deletions sdk/src/Services/Transfer/Generated/Model/CreateServerRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -214,8 +214,45 @@ internal bool IsSetEndpointType()
/// <summary>
/// Gets and sets the property HostKey.
/// <para>
/// The RSA private key as generated by the <code>ssh-keygen -N "" -m PEM -f my-new-server-key</code>
/// command.
/// The RSA, ECDSA, or ED25519 private key to use for your server.
/// </para>
///
/// <para>
/// Use the following command to generate an RSA 2048 bit key with no passphrase:
/// </para>
///
/// <para>
/// <code>ssh-keygen -t rsa -b 2048 -N "" -m PEM -f my-new-server-key</code>.
/// </para>
///
/// <para>
/// Use a minimum value of 2048 for the <code>-b</code> option: you can create a stronger
/// key using 3072 or 4096.
/// </para>
///
/// <para>
/// Use the following command to generate an ECDSA 256 bit key with no passphrase:
/// </para>
///
/// <para>
/// <code>ssh-keygen -t ecdsa -b 256 -N "" -m PEM -f my-new-server-key</code>.
/// </para>
///
/// <para>
/// Valid values for the <code>-b</code> option for ECDSA are 256, 384, and 521.
/// </para>
///
/// <para>
/// Use the following command to generate an ED25519 key with no passphrase:
/// </para>
///
/// <para>
/// <code>ssh-keygen -t ed25519 -N "" -f my-new-server-key</code>.
/// </para>
///
/// <para>
/// For all of these commands, you can replace <i>my-new-server-key</i> with a string
/// of your choice.
/// </para>
/// <important>
/// <para>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -263,12 +263,10 @@ internal bool IsSetServerId()
/// The public portion of the Secure Shell (SSH) key used to authenticate the user to
/// the server.
/// </para>
/// <note>
///
/// <para>
/// Currently, Transfer Family does not accept elliptical curve keys (keys beginning
/// with <code>ecdsa</code>).
/// Transfer Family accepts RSA, ECDSA, and ED25519 keys.
/// </para>
/// </note>
/// </summary>
[AWSProperty(Max=2048)]
public string SshPublicKeyBody
Expand Down
4 changes: 2 additions & 2 deletions sdk/src/Services/Transfer/Generated/Model/DescribedServer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -316,8 +316,8 @@ internal bool IsSetPreAuthenticationLoginBanner()
///
/// <para>
/// Use the <code>PassiveIp</code> parameter to indicate passive mode. Enter a single
/// dotted-quad IPv4 address, such as the external IP address of a firewall, router, or
/// load balancer.
/// IPv4 address, such as the public IP address of a firewall, router, or load balancer.
///
/// </para>
/// </summary>
public ProtocolDetails ProtocolDetails
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,10 @@ internal bool IsSetServerId()
/// <para>
/// The public key portion of an SSH key pair.
/// </para>
///
/// <para>
/// Transfer Family accepts RSA, ECDSA, and ED25519 keys.
/// </para>
/// </summary>
[AWSProperty(Required=true, Max=2048)]
public string SshPublicKeyBody
Expand Down
Loading

0 comments on commit f8b7773

Please sign in to comment.