Windows 上的“sshpass 无法识别”
Posted
技术标签:
【中文标题】Windows 上的“sshpass 无法识别”【英文标题】:"sshpass is not recognized" on Windows 【发布时间】:2014-06-18 15:17:49 【问题描述】:我想从我的 Windows 向远程 Linux 服务器运行 sshpass
命令。我使用这个命令:
sshpass -p 'password' ssh ldap.nextstep4it.com -l root -o StrictHostKeyChecking=no
但我的 cmd 返回以下错误语句:
'sshpass' 未被识别为内部或外部命令, 可运行的程序或批处理文件。
我认为这是因为 Windows 没有像 Linux 那样的 sshpass
包。在 Linux 中,我必须安装 sshpass
包才能运行此命令。
有人知道如何通过 Windows 命令行运行sshpass
命令吗?
【问题讨论】:
【参考方案1】:您不能在 Windows 中运行 sshpass。 但是,您可以通过 windows 命令行使用 putty 来实现相同的目的。
putty -load "host" -l username -pw password
您也可以使用 WinSCP 通过命令行(使用密码)上传文件
winscp /command "option batch abort" "option confirm off" "open sftp://user:password@example.com/" "put examplefile.txt /home/user/" "exit"
【讨论】:
我应该使用什么作为 winscp?例如 winscp.exe 的路径? 它正在为我打开一个“Putty 配置”窗口。我目前正在使用 git bash。我还通过 windows 命令提示符和 powershell 尝试了该命令。它总是打开一个“腻子配置”,就好像它是在没有参数的情况下调用的。这里有什么问题?putty -ssh hostname -l username -pw password
这样效果更好,因为它会打开另一个终端窗口并自动登录到服务器。有没有什么办法可以通过要求它不要打开另一个窗口而只在 git bash 中登录来使它变得更好?
plink -ssh hostname -l username -pw password
这是最好的。在我的 git bash 终端中打开并自动登录。正是我需要的。【参考方案2】:
使用 Linux 的 Windows 子系统 (WSL
);首先转到Settings
->Turn Windows Features On or Off
->Enable Windows Subsystem for Linux
,然后从Microsoft Store
下载并安装Ubuntu或另一个Linux。
要从 cmd.exe
访问 WSL,请键入 bash
或 wsl
,我建议将 hyper 用于终端,因为它有选项卡。
sudo apt-get install sshpass
sshpass -p passxxxx ssh user@ip.address 'touch newfileonserver.txt'
从 Windows 环境调用,例如。 cmd.exe
或 Process.Start()
bash -c "sshpass -p passxxxx ssh user@ip.address 'touch newfileonserver.txt' "
【讨论】:
是的,命令是:wsl -- sshpass ...
【参考方案3】:
您可以为 Windows 安装 QtdSync。
这将包含 sshpass.exe
【讨论】:
这对我不起作用,即使我使用-p
标志提供密码,仍然有密码提示。【参考方案4】:
您可以使用PuTTY plink
,而不是 OpenSSH ssh
。它是 PuTTY 的命令行等效项,并且具有与 OpenSSH ssh
非常相似的命令行语法。但最重要的是,它有-pw
switch 用于提供密码。
plink
等效于您的 ssh
调用是:
plink ldap.nextstep4it.com -l root -pw password
您绝对不应该使用-o StrictHostKeyChecking=no
来盲目接受所有主机密钥。那是一个安全漏洞。您将失去对MITM attacks 的保护。相反,使用plink
,您可以使用-hostkey
开关设置预期主机密钥的指纹。
同样:
不要使用 OpenSSHscp
,而是使用 PuTTY pscp
;
不要使用 OpenSSH sftp
,而是使用 PuTTY psftp
。
两者都有-pw
开关。
或者,对于 SCP 和 SFTP,您可以使用 my WinSCP SFTP/SCP client。 WinSCP 还支持在命令行/脚本中提供密码。还有converting OpenSSH sftp
script to WinSCP script 的指南。
不管你使用OpenSSH、PuTTY还是WinSCP,使用公钥认证总是比使用密码好。
【讨论】:
【参考方案5】:只需在你的 Windows 中安装 cygwin,然后下载 sshpass 并编译/安装它,整个过程快速简单,在我的环境中运行良好。
【讨论】:
30 分钟安装 make & gcc 并运行安装。谢谢:) 如果你没有 gcc 并且不容易安装会发生什么,不敢相信这个二进制文件很难找到【参考方案6】:你可以试试putty
。
从here下载
或者您可以安装 cygwin 并安装 sshpass,但这将是一项更大的任务。
因此,如果您需要无密码登录,那么您可以使用 putty 来使用 puttygen,您可以从上面提供的相同链接安装它。
【讨论】:
感谢 Jord 的回答,但它并没有解决我的问题。我想要做的是将 sshpass 包运行到 Windows 命令提示符中。顺便感谢您的回答以上是关于Windows 上的“sshpass 无法识别”的主要内容,如果未能解决你的问题,请参考以下文章
使用 typeof 检查时调用 window.external 上的无参数方法
Selenium Webdriver - Debian Lenny 上的 FirefoxDriver 问题(错误无显示)