You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何加密curl命令保障服务器密码安全?Ubuntu终端文件传输有哪些方案?

解决方案

一、开源场景下的密码存储安全规范

  • 绝对禁止硬编码密码到公开的脚本文件中:只要包含明文密码的脚本被提交到开源仓库,无论后续是否删除,密码都会泄露,存在被爬取滥用的风险。
  • 敏感信息单独存储:将账号密码存放在独立的配置文件中,给文件设置600权限(仅当前用户可读写),同时将该配置文件加入.gitignore等忽略规则,永远不提交到代码仓库。
  • 第三方运行环境使用官方加密变量功能:如果脚本在GitHub Actions、GitLab CI这类第三方服务上运行,直接使用平台提供的加密敏感变量功能,密码会被平台加密存储,仅在脚本运行时动态注入到环境变量中,不会明文出现在代码或日志里。
  • 不要做无效加密:不要将对称加密后的密码存放在脚本中,只要解密密钥同时存在于脚本或运行环境中,攻击者可以直接解密拿到明文密码,没有实际防护效果。

二、Bash中curl命令的敏感信息处理方案

curl本身提供了多种避免明文密码出现在命令行/脚本中的方案,不需要额外对命令做加密:

  1. 使用--netrc参数读取独立配置
    将FTP的登录信息存放在~/.netrc文件中,设置文件权限为600,文件内容格式如下:
machine ftp.server.ru
login 你的登录账号
password 你的登录密码

修改curl命令为:

curl -T filedata.txt --netrc ftp://ftp.server.ru/

此时命令行和脚本中完全不会出现密码,也不会被ps等进程查看命令捕获到敏感信息。
2. 动态读取环境变量传入
如果不方便生成.netrc文件,可以将账号密码注入到环境变量中,结合curl的配置读取参数避免密码出现在进程参数里:

curl -K - <(echo "user = $FTP_USER:$FTP_PASS") -T filedata.txt ftp://ftp.server.ru/

环境变量不要写在脚本中,由运行环境动态传入即可。

额外提醒:FTP本身是明文传输协议,就算密码不泄露,传输过程中的内容也可能被抓包窃取,非必要不建议使用FTP做文件传输。

三、Ubuntu终端下更安全的文件传输替代方案

  • scp:基于SSH协议加密传输,默认Ubuntu系统自带,不需要额外安装服务端(只要服务器开了SSH端口即可),无需单独维护FTP账号密码,使用SSH密钥登录即可完全避免密码泄露问题,命令示例:
scp filedata.txt 服务器SSH用户名@服务器IP:/文件存放目标路径/
  • rsync:同样基于SSH加密,支持增量传输、断点续传,适合传输大文件或者批量同步文件,效率远高于scp和FTP,命令示例:
rsync -avz filedata.txt 服务器SSH用户名@服务器IP:/文件存放目标路径/
  • rclone:支持对接FTP、SFTP、各类对象存储等几十种存储服务,敏感账号信息统一加密存储在rclone的配置文件中,适合需要对接多存储介质的场景。

内容的提问来源于stack exchange,提问作者Dew Debra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 08:42:03