微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 macOS 上自动进行 SFTP 密码身​​份验证以与 -b 批处理一起使用?

如何解决在 macOS 上自动进行 SFTP 密码身​​份验证以与 -b 批处理一起使用?

我想要一个脚本来使用 sftp 上传每日文件。不幸的是,远程服务器不支持 ssh 密钥(这是我客户的服务器,出于某种原因,尽管有无数的建议,但他们不能或不会更改它)。所以我需要以某种方式使用密码身份验证自动登录

我发现了许多不同的解决方案(在 SO 和其他地方),但它们似乎都使用了 sshpassspawnexpectsend 等工具。不幸的是,我的脚本将在 macOS 上使用,而这些工具在那里不可用。

我完全意识到在脚本或命令行中使用纯文本密码是不安全的。但在现阶段使用 ssh 密钥根本不是一种选择。

那么,是否可以从 shell 运行 sftp 并在命令行上以明文形式指定密码,或者使用包含密码的文件名指定某个参数?

补充:在@MartinPrikryl 发表评论后,我使用 sshpass 使 brew install esolitos/ipa/sshpass 工作。
但是现在我发现当我使用 -b batch.txtsftp 参数来处理一堆命令时,这不能正常工作。我正在处理的批次通常是一堆 get 和 put 命令。

所以这是有效的:

sshpass -f MyPassword.txt sftp rocketnuts@example.com

(我已登录并收到 sftp 提示

但这不会:

sshpass -f MyPassword.txt sftp -b list.txt rocketnuts@example.com

我收到此错误

rocketnuts@example.com:权限被拒绝(密码)。

显然,sshpasssftp 发送密码的方式以某种方式干扰了 -b 参数的批量输入。

有没有办法让 sshpass(或另一种形式的可脚本化身份验证)与 -b 选项结合使用??

解决方法

首先,您甚至可以在 MacOS 上安装 sshpass
How to install sshpass on Mac?


尽管确实,对于 -b switchsftp 可能无法接受密码,因为 -b 禁用所有交互式输入(sshpass 模拟的内容)。

作为 -b 的替代方案,您可以使用输入重定向:

sshpass -f MyPassword.txt sftp rocketnuts@example.com < list.txt

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。