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

标签 bash shell unix ssh sftp

我需要使用 sftp 将日志文件传输到远程主机从 Linux 主机。我已经从我的操作组获得了相同的凭据。但是,由于我无法控制其他主机,因此无法生成 RSA key 并与其他主机共享。

那么有没有办法通过 cron 从 Bash 脚本内部运行 sftp 命令(使用提供的用户名/密码)工作?

我发现了一个类似的 Stack Overflow 问题, Specify password to sftp in a Bash script ,但我的问题没有令人满意的答案。

最佳答案

除了使用公钥身份验证之外,您还有几个选择:

  1. 使用keychain
  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
!

关于bash - 如何使用 Bash 脚本中的密码运行 sftp 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42503757/

相关文章:

macos - 复制包含空文件的目录树

linux - `cron` 文件是由哪种编程语言制作的?

linux - Bash 脚本 - 如何设置创建新文件的组?

bash - Unix 验证文件没有内容和空行

macos - Bash 命令替换 stdout+stderr 重定向

bash - 如何在 Bash 中使用 tail 获取文件的最后一个非空行?

bash - unix awk 列等于一个变量

linux - 强调用户输入

shell - Cygwin在shell脚本中找不到文件

c - Unix:将文件从当前目录复制到 C 中的另一个目录