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