正在修改文件内容,通过 ftp 发送

正在修改文件内容,通过 ftp 发送

我使用 openssl 加密我的备份,然后将其发送到存储它们的 ftp 服务器。

起初,当我尝试解密文件时出现了这个错误:

openssl rsautl -decrypt -inkey ../key.server.pem -in enc.key.txt -out key.txt 
RSA operation error 139759177856680:error:0407106B:rsa routines:RSA_padding_check_PKCS1_type_2:block type is not 02:rsa_pk1.c:190:
139759177856680:error:04065072:rsa routines:RSA_EAY_PRIVATE_DECRYPT:padding check     failed:rsa_eay.c:616:

我正在关注此步骤加密

我以为问题出在加密上,但检查文件的 md5sum 后发现,服务器上的文件与我从 ftp 服务器下载的文件不同。例如:

我有一个名为 enc.key.txt 的文件,其中包含用于解密备份的密码:

$ hexdump enc.key.txt
//...
//...
0000100 16e3 c2e3 cecd 2afe eb8c 9617 8d58 *0dd0*
//...

下载到我的电脑后的 enc.key.txt 的十六进制转储有一个值不同,在这一行:

//...
0000100 16e3 c2e3 cecd 2afe eb8c 9617 8d58 *0ad0*
//...

我已经使用十六进制编辑器编辑了该值,然后我能够解密该文件,但我不知道为什么该文件被修改。

我正在使用 ncftp 将备份发送到 ftp 服务器,如下所示:

### Dump backup using FTP ###
#Start FTP backup using ncftp
ncftp -u"$FTPU" -p"$FTPP" $FTPS<<EOF
mkdir $FTPD
mkdir $FTPD/$NOW
cd $FTPD/$NOW
put enc.key.txt
lcd $BACKUP
mput *
quit
EOF

你能帮我吗?提前谢谢

答案1

字符 0a 是换行符,0d 是回车符。在“ASCII 模式”下,不同操作系统之间的 FTP 传输可以更改这些字符。例如,上传到 Windows SharePoint 站点的 Unix/Linux 原生文件(行终止符为 LF)会将每个 LF 更改为 CRLF。某些实现可能只是将 LF 更改为 CR。请检查以确保您binary在传输中指定了模式。

的文档ncftp表明它默认为二进制模式,但确实binary像大多数 ftp 客户端一样接受该命令。我会在传输任何文件之前插入该命令,看看是否有帮助。如果有帮助,则意味着某些东西以某种方式覆盖了默认值。

在这种情况下,问题显然ncftp不是菲利兹拉另一端。它默认为“自动”,这意味着带有.txt扩展名的文件将被 ASS|U|MEd 为 ASCII,并且会弄乱行终止符。

相关内容