使用 echo y 作为对 pcp 主机密钥提示的自动响应
Using echo y as an automated response to a pcp hostkey prompt
我正在构建批处理文件,以便将固件推送到 600 多台设备。
如果我在命令提示符下,我可以 运行 在一行中执行以下命令,这将推送固件并对 SSH 密钥提示回答是。
echo y | pscp -v -scp -pw password C:\CNA1000\Firmware\CNA1504v1.1.7\CNA1504v1_1_7.run root@192.168.1.1:/tmp/.
回显y |对 SSH 密钥提示回答是。但是,当我尝试将它添加到批处理文件时,我在命令提示符中收到一条错误消息,提示它不喜欢密码。
具体是这样的;
Using username "root".
root@192.168.1.1's password:
Sent password
Access denied
Access denied
然后它会自己重复,直到我按下 CTRL+C 来破坏批处理文件。
是否有更好的方法来执行此操作,以便我可以自动化该过程?
谢谢,
我最终使用 WinSCP.net 作为批处理文件来正确地完成我想做的事情。以下是如何使用 WinSCP.net.
执行上述操作的示例
@echo off
"C:\Program Files (x86)\WinSCP\WinSCP.com" ^
/log="C:\Program Files (x86)\WinSCP\WinSCP.log" /ini=nul ^
/command ^
"open scp://root:root@192.168.1.1/" ^
"Put C:\CNA1000\Firmware\CNA1504v1.1.7\CNA1504v1_1_7.run /tmp/." ^
"exit"
set WINSCP_RESULT=%ERRORLEVEL%
if %WINSCP_RESULT% equ 0 (
echo Success
) else (
echo Error
)
exit /b %WINSCP_RESULT%
并为每个 IP 地址重复。
不要盲目回答"y",你会失去对man-in-the-middle attacks的保护。
您应该使用 -hostkey
switch 和您的主机密钥指纹。
其实和你最后用的WinSCP是一样的。 WinSCP open
command 也有 -hostkey
开关。
如果它在没有 -hostkey
开关的情况下也能正常工作,那是因为主机密钥缓存在 Windows 以前的一些 WinSCP 交互使用的注册表中。
同理,pscp也是如此。如果您之前以交互方式使用过 PuTTY 或 pscp(或 PuTTY 套件中的任何其他工具)并确认了主机密钥,它就会被缓存。以后自动使用会在没有确认的情况下通过。
我正在构建批处理文件,以便将固件推送到 600 多台设备。
如果我在命令提示符下,我可以 运行 在一行中执行以下命令,这将推送固件并对 SSH 密钥提示回答是。
echo y | pscp -v -scp -pw password C:\CNA1000\Firmware\CNA1504v1.1.7\CNA1504v1_1_7.run root@192.168.1.1:/tmp/.
回显y |对 SSH 密钥提示回答是。但是,当我尝试将它添加到批处理文件时,我在命令提示符中收到一条错误消息,提示它不喜欢密码。
具体是这样的;
Using username "root".
root@192.168.1.1's password:
Sent password
Access denied
Access denied
然后它会自己重复,直到我按下 CTRL+C 来破坏批处理文件。
是否有更好的方法来执行此操作,以便我可以自动化该过程?
谢谢,
我最终使用 WinSCP.net 作为批处理文件来正确地完成我想做的事情。以下是如何使用 WinSCP.net.
执行上述操作的示例@echo off
"C:\Program Files (x86)\WinSCP\WinSCP.com" ^
/log="C:\Program Files (x86)\WinSCP\WinSCP.log" /ini=nul ^
/command ^
"open scp://root:root@192.168.1.1/" ^
"Put C:\CNA1000\Firmware\CNA1504v1.1.7\CNA1504v1_1_7.run /tmp/." ^
"exit"
set WINSCP_RESULT=%ERRORLEVEL%
if %WINSCP_RESULT% equ 0 (
echo Success
) else (
echo Error
)
exit /b %WINSCP_RESULT%
并为每个 IP 地址重复。
不要盲目回答"y",你会失去对man-in-the-middle attacks的保护。
您应该使用 -hostkey
switch 和您的主机密钥指纹。
其实和你最后用的WinSCP是一样的。 WinSCP open
command 也有 -hostkey
开关。
如果它在没有 -hostkey
开关的情况下也能正常工作,那是因为主机密钥缓存在 Windows 以前的一些 WinSCP 交互使用的注册表中。
同理,pscp也是如此。如果您之前以交互方式使用过 PuTTY 或 pscp(或 PuTTY 套件中的任何其他工具)并确认了主机密钥,它就会被缓存。以后自动使用会在没有确认的情况下通过。