在Windows上出现“sshpass未被识别”的错误

24

我想从我的Windows电脑运行sshpass命令以连接到远程Linux服务器。我使用以下命令:

sshpass -p 'password' ssh ldap.nextstep4it.com -l root -o StrictHostKeyChecking=no

但是我的命令提示符返回以下错误信息:

'sshpass' 不是内部或外部命令,也不是可运行的程序或批处理文件。

我认为这是因为 Windows 没有像 Linux 一样拥有 sshpass 包。从 Linux 到 Windows,我需要安装 sshpass 包才能运行该命令。

是否有人知道如何通过 Windows 命令行运行 sshpass 命令?

6个回答

17

你不能在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的路径是什么? - Francesco Pegoraro
1
它为我打开了一个“Putty配置”窗口。我目前在git bash上。我还尝试了通过Windows命令提示符和PowerShell运行该命令。它总是打开一个“Putty配置”,就好像没有参数调用它一样。问题出在哪里? - Adze
putty -ssh 主机名 -l 用户名 -pw 密码这种方式更好,因为它会打开另一个终端窗口并自动登录到服务器。有没有办法让它更好,让它不打开另一个窗口,而是在git bash中直接登录? - Adze
2
这是最好的。在我的git bash终端中打开并自动登录。正是我所需要的。命令为:plink -ssh 主机名 -l 用户名 -pw 密码。 - Adze

13

不必使用OpenSSH的ssh,你可以使用PuTTY的plink。它是PuTTY的命令行等效工具,具有与OpenSSH的ssh非常相似的命令行语法。但是除此之外,它还有-pw开关用于提供密码(还有-pwfile开关)。

你的ssh调用的plink等效命令是:

plink ldap.nextstep4it.com -l root -pw password

你绝对不应该使用-o StrictHostKeyChecking=no来盲目接受所有主机密钥。这是一个安全漏洞。你将失去对中间人攻击的保护。相反,使用plink,你可以使用-hostkey开关来设置预期主机密钥的指纹。
同样地:

两者都有-pw-pwfile开关。

或者,无论是SCP还是SFTP,你都可以使用我的 WinSCP SFTP/SCP客户端。WinSCP还支持在命令行/脚本中提供密码。还有一个指南可以将OpenSSH的sftp脚本转换为WinSCP脚本


无论您使用OpenSSH、PuTTY还是WinSCP,使用公钥身份验证总是比使用密码更好。

最简单的解决方案,谢谢。 - IulianT

7
使用Windows子系统Linux(WSL);首先进入“设置”->“打开或关闭Windows功能”->“启用Windows子系统Linux”,然后从Microsoft Store下载并安装Ubuntu或其他Linux。
要从cmd.exe访问WSL,请键入bash或wsl。
sudo apt-get install sshpass

sshpass -p passxxxx ssh user@ip.address 'touch newfileonserver.txt'

在Windows环境中调用,例如cmd.exeProcess.Start()
bash -c "sshpass -p passxxxx ssh user@ip.address 'touch newfileonserver.txt' "

2
是的,命令将是:wsl -- sshpass ... - jaques-sam

4
您可以在Windows上安装QtdSync。
这将包含sshpass.exe。

1
这对我没有用,即使我使用了“-p”标志提供了密码,仍然会出现密码提示。 - hb20007

1

只需在Windows中安装cygwin,然后下载sshpass并进行编译/安装,整个过程快速简单,在我的环境中运行良好。


30分钟安装make和gcc并运行安装。谢谢 :) - Jan Groth
1
如果您没有gcc并且安装不方便,会发生什么情况?无法相信这个二进制文件如此难以找到。 - niken

-3

你可以尝试使用putty

这里下载它。

或者你可以安装cygwin并安装sshpass,但那将是一个更大的任务。

因此,如果你需要无密码登录,那么使用putty,你可以使用puttygen,你可以从上面提供的相同链接安装。


非常感谢你的回答,Jord。但是,它并没有解决我的问题。我想做的是在Windows命令提示符下运行sshpass包。顺便说一下,我很感激你的回答。 - Ridzuan Adris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接