100

我需要通过以非交互方式提供密码来从Windows 命令行执行ssh 。我可以实现基于密钥的身份验证并能够像执行 ssh 命令一样

ssh <user>@<host> <command>

有没有类似的命令

ssh <user>@<host> -P <password> <command>

在此处输入图像描述

我不知道这是否可行。但是,可以有一些解决方法。给我一些想法来完成同样的事情。

4

6 回答 6

162

sshpass实用程序正是为此而设计的。首先,通过键入以下命令安装 sshpass:

sudo apt-get install sshpass

然后在你的 ssh/scp 命令前面加上

sshpass -p '<password>' <ssh/scp command>

使用 Linux 时,该程序最容易安装。

用户应考虑改用 SSH 更安全的公钥认证(使用ssh命令)。

于 2013-01-23T21:53:16.727 回答
25

这个期望脚本呢?

#!/usr/bin/expect -f
spawn ssh root@myhost
expect -exact "root@myhost's password: "
send -- "mypassword\r"
interact
于 2014-09-08T13:01:48.007 回答
19

PuTTY 的 plink 有一个 password 的命令行参数在这个问题的答案中还提出了一些其他建议:使用 Expect(可用于 Windows),或使用 Paramiko 在 Python 中编写启动器。

于 2012-08-25T02:50:40.737 回答
10

视窗解决方案

  1. 安装腻子
  2. Windows-Key + R
  3. 进入putty.exe -ssh [username]@[hostname] -pw [password]
于 2018-07-09T11:37:12.610 回答
5

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
于 2019-03-08T04:06:09.347 回答
0

这篇文章是您问题的有效解决方案。

  1. 在你的 Windows 机器上安装 PuTTY
  2. 执行'plink your_username@yourhost -pw your_password'

如果您使用 Windows 终端并且希望您的 shell 在打开新选项卡时登录到远程计算机,您可以配置命令行参数(设置 -> 外壳 -> 命令行):

C:\Users\USERNAME\AppData\Local\Microsoft\WindowsApps\Microsoft.PowerShell.ID\pwsh.exe
-Command "plink USERNAME@192.168.0.1 -pw PASSWORD"
于 2021-11-07T20:34:21.653 回答