sshpass无法在Windows上识别

Rid*_*ris 3 linux windows ssh sshpass

我想从Windows运行sshpass命令到远程linux服务器。我用这个命令:

sshpass -p ‘password’ ssh ldap.nextstep4it.com -l root -o StrictHostKeyChecking=no
Run Code Online (Sandbox Code Playgroud)

但是我的cmd返回以下错误声明:

无法将“ sshpass”识别为内部或外部命令,可操作程序或批处理文件。

我认为这是因为Windows没有linux那样的sshpass软件包。从Linux起,我必须安装sshpass软件包才能运行此命令。

有没有人知道如何通过Windows命令行运行sshpass命令

Mar*_*ryl 14

ssh您可以使用PuTTYplink来代替 OpenSSH 。它的命令行相当于 PuTTY,并且具有与 OpenSSH 非常相似的命令行语法ssh。但最重要的是,它有一个用于提供密码的-pw开关(还有一个-pwfile开关)。

plink您的通话相当于ssh

plink ldap.nextstep4it.com -l root -pw password
Run Code Online (Sandbox Code Playgroud)

您绝对不应该-o StrictHostKeyChecking=no盲目接受所有主机密钥。这是一个安全缺陷。您将失去针对MITM 攻击的保护。相反,通过plink,您可以使用-hostkeyswitch 设置预期主机密钥的指纹。


相似地:

两者都有-pw-pwfile开关。

或者,对于 SCP 和 SFTP,您都可以使用我的 WinSCP SFTP/SCP 客户端。WinSCP 还支持在命令行/脚本中提供密码。还有一个将 OpenSSHsftp脚本转换为 WinSCP 脚本的指南。


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


小智 6

您不能在Windows中运行sshpass。但是,您可以通过Windows命令行使用腻子来实现同一目的。

putty -load "host" -l username -pw password
Run Code Online (Sandbox Code Playgroud)

您也可以使用WinSCP通过命令行(使用密码)上传文件

winscp /command "option batch abort" "option confirm off" "open sftp://user:password@example.com/" "put examplefile.txt /home/user/" "exit"
Run Code Online (Sandbox Code Playgroud)

  • `plink -ssh 主机名 -l 用户名 -pw 密码` 这是最好的。在我的 git bash 终端中打开并自动登录。正是我所需要的。 (2认同)

ast*_*ght 5

使用适用于 Linux 的 Windows 子系统( WSL);第一次去Settings- > Turn Windows Features On or Off- > Enable Windows Subsystem for Linux,然后下载并安装Ubuntu的距离或其他Linux Microsoft Store

要从cmd.exetypebash或访问 WSL wsl,我建议终端使用hyper,因为它有选项卡。

sudo apt-get install sshpass

sshpass -p passxxxx ssh user@ip.address 'touch newfileonserver.txt'
Run Code Online (Sandbox Code Playgroud)

从 Windows 环境调用,例如。cmd.exe或者Process.Start()

bash -c "sshpass -p passxxxx ssh user@ip.address 'touch newfileonserver.txt' "
Run Code Online (Sandbox Code Playgroud)

  • 是的,命令将是:“wsl -- sshpass ...” (2认同)