在macOS上自动化SFTP密码身份验证以用于-b批处理?

在macOS上自动化SFTP密码身份验证以用于-b批处理?,macos,command-line,passwords,sftp,Macos,Command Line,Passwords,Sftp,我想要一个脚本上传日常文件使用sftp。不幸的是,远程服务器不支持ssh密钥(这是我客户的服务器,尽管有无数建议,但出于某种原因,他们不能或不会更改它)。因此,我需要以某种方式使用密码身份验证自动登录 我发现了许多不同的解决方案(在这里和其他地方),但它们似乎都使用诸如sshpass、spawn、expect、send等工具。不幸的是,我的脚本将在macOS上使用,而这些工具在那里不可用 我完全意识到在脚本或命令行中使用明文密码是不安全的。但在这个阶段,使用ssh密钥根本不是一个选项 那么,是否

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

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

我完全意识到在脚本或命令行中使用明文密码是不安全的。但在这个阶段,使用ssh密钥根本不是一个选项

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

添加:在@MartinPrikryl的评论之后,我通过使用
brew安装esolitos/ipa/sshpass
,使
sshpass
正常工作
但是现在,当我使用
sftp
-b batch.txt
参数来处理一系列命令时,我发现这不能正常工作。我正在处理的批处理通常是一组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:权限被拒绝(密码)

因此,
sshpass
sftp
发送密码的方式显然会干扰
-b
参数的批量输入


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

首先,即使在MacOS上,您也可以安装
sshpass


尽管如此,
sftp
可能无法接受密码,因为
-b
禁用了所有交互式输入(什么是
sshpass
模拟的)

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

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