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 设置预期主机密钥的指纹。
相似地:
scp使用PuTTYpscp代替 OpenSSH ;sftp使用PuTTYpsftp代替 OpenSSH 。两者都有-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)
使用适用于 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)