MD5 hash validation
As an extra layer of protection, you can use MD5 hash validation to ensure that your file is not corrupted during the SFTP transfer process.
How it works
Before you upload a file, you generate and upload an MD5 hash of it first. When you upload the actual file, SFTP Gateway checks the MD5 hash. If it's valid, the file gets uploaded to S3. Otherwise, an error is logged, and the file remains on the local file system.
Instructions
The MD5 hash validation feature is disabled by default. You can enable it by editing the global properties file:
vi /home/ec2-user/.sftpgateway/sftpgateway.properties
And change the last line from no
to yes
:
sftpgateway.md5check=yes
From your local machine (commands below are for Mac), run the following command:
md5 test.txt > test.txt.md5
The generated .md5
file looks something like this:
MD5 (test.txt) = dc2ad2ded1fa0f457035b198afc41da6
Note: The .md5
file contains the file path, so it's important that you run the md5
command from
the current directory.
Next, upload the .md5
file:
sftp -i robtest.key robtest@<ip_address>:uploads <<< $'put test.txt.md5'
This .md5
file will remain in the uploads
directory until the actual file is uploaded.
Now upload the actual file:
sftp -i robtest.key robtest@<ip_address>:uploads <<< $'put test.txt'
SFTP Gateway will run an MD5 hash validation. If it passes, the actual file gets uploaded to S3,
and the .md5
file is discarded.