![使用批处理文件的 SFTP 双重身份验证](https://linux22.com/image/197882/%E4%BD%BF%E7%94%A8%E6%89%B9%E5%A4%84%E7%90%86%E6%96%87%E4%BB%B6%E7%9A%84%20SFTP%20%E5%8F%8C%E9%87%8D%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81.png)
(publickey,password)
我正在尝试连接到启用了双重身份验证的服务器。我使用sshpass
提供密码来自动执行脚本,但是当我使用 SFTP 提供批处理文件时,连接会失败,而批处理文件连接不会成功
export SSHPASS=helloworld (sshpass -e sftp -b batfile.txt -o 'PasswordAuthentication=yes' \ -o 'PreferredAuthentications=publickey,password' -o 'StrictHostKeyChecking=no' user@hostname)
错误:
Permission denied (password). Couldn't read packet: Connection reset by peer
连接成功,无需批处理文件
(sshpass -e sftp -o 'PasswordAuthentication=yes' \ -o 'PreferredAuthentications=publickey,password' -o 'StrictHostKeyChecking=no' user@hostname)
我尝试在批处理文件中提供密码,但没有成功。
我是否有可能想要实现的目标,如果是的sshpass
话batchfile
,有人可以帮助我吗
批处理文件:
echo "Hey, I'm from Inside"
!echo "Hey, I'm from Outside"
答案1
这-b
会阻止交互式身份验证(您尝试通过 模拟sshpass
)。
相反,您需要将命令传递到sshpass
标准输入。
sshpass -e sftp -o 'PasswordAuthentication=yes' \
-o 'PreferredAuthentications=publickey,password' user@hostname < batfile.txt
像这儿:
如何将 sshpass 命令放入 bash 脚本中?
永远不要使用StrictHostKeyChecking=no
,除非您不关心安全性。