猿问

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

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

我需要使用sftp来自Linux主机。我从我的行动组获得了同样的证书。但是,由于我无法控制其他主机,所以无法生成RSA密钥并与另一个主机共享。

那么有什么方法可以运行sftp命令(提供用户名/密码)从Bash脚本内部通过克隆工作?

我发现了一个类似的堆栈溢出问题,在Bash脚本中指定sftp密码但对我的问题没有令人满意的答案。


哈士奇WWW
浏览 1675回答 3
3回答

慕尼黑的夜晚无繁华

除了使用公钥身份验证之外,您还有几个选项:使用键链使用刀柄(安全性较低,但可能符合您的要求)使用期待(安全性最低,需要更多编码)如果您决定给sshpass一个机会,这里有一个工作脚本片段可以这样做:export&nbsp;SSHPASS=your-password-here sshpass&nbsp;-e&nbsp;sftp&nbsp;-oBatchMode=no&nbsp;-b&nbsp;-&nbsp;sftp-user@remote-host&nbsp;<<&nbsp;! &nbsp;&nbsp;&nbsp;cd&nbsp;incoming &nbsp;&nbsp;&nbsp;put&nbsp;your-log-file.log &nbsp;&nbsp;&nbsp;bye!

人到中年有点甜

Expect是一个很好的应用程序。在Ubuntu上安装它时:sudo&nbsp;apt-get&nbsp;install&nbsp;expect在CentOS机器上安装它时:yum&nbsp;install&nbsp;expect假设您希望连接到sftp服务器,然后将本地文件从本地计算机上载到远程sftp服务器。#!/usr/bin/expectspawn&nbsp;sftp&nbsp;username@hostname.com expect&nbsp;"password:"send&nbsp;"yourpasswordhere\n"expect&nbsp;"sftp>"send&nbsp;"cd&nbsp;logdirectory\n"expect&nbsp;"sftp>"send&nbsp;"put &nbsp;/var/log/file.log\n"expect&nbsp;"sftp>"send&nbsp;"exit\n"interact这将打开一个带有您的密码到服务器的sftp连接。然后,它将转到要上载文件的目录,在本例中为“logDirectory”。这会将日志文件从/var/log/的本地目录上传到远程服务器上的“log目录”,文件名为file.log。
随时随地看视频慕课网APP
我要回答