如何使用Bash脚本的密码运行sftp命令?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (940)

我想在Linux主机中使用sftp

有什么方法可以运行sftp命令(提供用户名/密码)从Bash脚本执行?

提问于
用户回答回答于

除了使用公钥认证之外,还有几个选项:

  1. 使用钥匙串
  2. 使用sshpass(不太安全)
  3. 使用expect(最不安全和更多的编码需要)

sshpass:

export SSHPASS=your-password-here
sshpass -e sftp -oBatchMode=no -b - sftp-user@remote-host << !
   cd incoming
   put your-log-file.log
   bye
!
用户回答回答于

使用lftp:

lftp sftp://user:password@host  -e "put local-file.name; bye"

这种方法的缺点是计算机上的其他用户可以从以下工具读取密码ps密码可以成为shell历史的一部分。

因为LFTP 4.5.0正在设置LFTP_PASSWORD环境变量和执行lftp--env-password以下是一个完整的例子:

LFTP_PASSWORD="just_an_example"
lftp --env-password sftp://user@host  -e "put local-file.name; bye"

LFTP还包括一个很酷的镜像功能(可以包括确认传输后的删除---删除-源文件“):

lftp -e 'mirror -R /local/log/path/ /remote/path/' --env-password -u user sftp.foo.com

扫码关注云+社区

领取腾讯云代金券