为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

哈士奇WWW 2019-07-15 15:25:15
如何使用Bash脚本中的密码运行sftp命令?我需要使用sftp来自Linux主机。我从我的行动组获得了同样的证书。但是,由于我无法控制其他主机,所以无法生成RSA密钥并与另一个主机共享。那么有什么方法可以运行sftp命令(提供用户名/密码)从Bash脚本内部通过克隆工作?我发现了一个类似的堆栈溢出问题,在Bash脚本中指定sftp密码但对我的问题没有令人满意的答案。
查看完整描述

3 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

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

  1. 使用

    键链

  2. 使用

    刀柄

    (安全性较低,但可能符合您的要求)
  3. 使用

    期待

    (安全性最低,需要更多编码)

如果您决定给sshpass一个机会,这里有一个工作脚本片段可以这样做:

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


查看完整回答
反对 回复 2019-07-15
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

Expect是一个很好的应用程序。

在Ubuntu上安装它时:

sudo apt-get install expect

在CentOS机器上安装它时:

yum install expect

假设您希望连接到sftp服务器,然后将本地文件从本地计算机上载到远程sftp服务器。

#!/usr/bin/expectspawn sftp username@hostname.com
expect "password:"send "yourpasswordhere\n"expect "sftp>"send "cd logdirectory\n"expect "sftp>"send "put
 /var/log/file.log\n"expect "sftp>"send "exit\n"interact

这将打开一个带有您的密码到服务器的sftp连接。

然后,它将转到要上载文件的目录,在本例中为“logDirectory”。

这会将日志文件从/var/log/的本地目录上传到远程服务器上的“log目录”,文件名为file.log。


查看完整回答
反对 回复 2019-07-15
  • 3 回答
  • 0 关注
  • 1674 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信