如何解决在 macOS 上自动进行 SFTP 密码身份验证以与 -b 批处理一起使用?
我想要一个脚本来使用 sftp 上传每日文件。不幸的是,远程服务器不支持 ssh 密钥(这是我客户的服务器,出于某种原因,尽管有无数的建议,但他们不能或不会更改它)。所以我需要以某种方式使用密码身份验证自动登录。
我发现了许多不同的解决方案(在 SO 和其他地方),但它们似乎都使用了 sshpass
、spawn
、expect
、send
等工具。不幸的是,我的脚本将在 macOS 上使用,而这些工具在那里不可用。
我完全意识到在脚本或命令行中使用纯文本密码是不安全的。但在现阶段使用 ssh 密钥根本不是一种选择。
那么,是否可以从 shell 运行 sftp
并在命令行上以明文形式指定密码,或者使用包含密码的文件名指定某个参数?
补充:在@MartinPrikryl 发表评论后,我使用 sshpass
使 brew install esolitos/ipa/sshpass
工作。
但是现在我发现当我使用 -b batch.txt
的 sftp
参数来处理一堆命令时,这不能正常工作。我正在处理的批次通常是一堆 get 和 put 命令。
所以这是有效的:
sshpass -f MyPassword.txt sftp rocketnuts@example.com
但这不会:
sshpass -f MyPassword.txt sftp -b list.txt rocketnuts@example.com
我收到此错误:
rocketnuts@example.com:权限被拒绝(密码)。
显然,sshpass
向 sftp
发送密码的方式以某种方式干扰了 -b
参数的批量输入。
有没有办法让 sshpass
(或另一种形式的可脚本化身份验证)与 -b
选项结合使用??
解决方法
首先,您甚至可以在 MacOS 上安装 sshpass
:
How to install sshpass on Mac?
尽管确实,对于 -b
switch,sftp
可能无法接受密码,因为 -b
禁用所有交互式输入(sshpass
模拟的内容)。
作为 -b
的替代方案,您可以使用输入重定向:
sshpass -f MyPassword.txt sftp rocketnuts@example.com < list.txt
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。