我需要通过以非交互方式提供密码来从Windows 命令行执行ssh 。我可以实现基于密钥的身份验证并能够像执行 ssh 命令一样
ssh <user>@<host> <command>
有没有类似的命令
ssh <user>@<host> -P <password> <command>
我不知道这是否可行。但是,可以有一些解决方法。给我一些想法来完成同样的事情。
我需要通过以非交互方式提供密码来从Windows 命令行执行ssh 。我可以实现基于密钥的身份验证并能够像执行 ssh 命令一样
ssh <user>@<host> <command>
有没有类似的命令
ssh <user>@<host> -P <password> <command>
我不知道这是否可行。但是,可以有一些解决方法。给我一些想法来完成同样的事情。
sshpass实用程序正是为此而设计的。首先,通过键入以下命令安装 sshpass:
sudo apt-get install sshpass
然后在你的 ssh/scp 命令前面加上
sshpass -p '<password>' <ssh/scp command>
使用 Linux 时,该程序最容易安装。
用户应考虑改用 SSH 更安全的公钥认证(使用ssh
命令)。
这个期望脚本呢?
#!/usr/bin/expect -f
spawn ssh root@myhost
expect -exact "root@myhost's password: "
send -- "mypassword\r"
interact
PuTTY 的 plink 有一个 password 的命令行参数。在这个问题的答案中还提出了一些其他建议:使用 Expect(可用于 Windows),或使用 Paramiko 在 Python 中编写启动器。
视窗解决方案
Windows-Key + R
putty.exe -ssh [username]@[hostname] -pw [password]
PowerShell 解决方案
使用 Posh-SSH:
New-SSHSession -ComputerName 0.0.0.0 -Credential $cred | Out-Null
Invoke-SSHCommand -SessionId 1 -Command "nohup sleep 5 >> abs.log &" | Out-Null
这篇文章是您问题的有效解决方案。
如果您使用 Windows 终端并且希望您的 shell 在打开新选项卡时登录到远程计算机,您可以配置命令行参数(设置 -> 外壳 -> 命令行):
C:\Users\USERNAME\AppData\Local\Microsoft\WindowsApps\Microsoft.PowerShell.ID\pwsh.exe
-Command "plink USERNAME@192.168.0.1 -pw PASSWORD"