通过 windows 命令提示符使用密码验证执行 ssh

Posted

技术标签:

【中文标题】通过 windows 命令提示符使用密码验证执行 ssh【英文标题】:Execute ssh with password authentication via windows command prompt 【发布时间】:2012-08-20 13:02:59 【问题描述】:

我需要以非交互方式提供密码,从 windows 命令行 执行 ssh。我可以实现基于密钥的身份验证,并且能够像

一样执行 ssh 命令
ssh <user>@<host> <command>

有没有类似的命令

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

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

【问题讨论】:

使用基于密钥的身份验证是一个更好的主意。 是的,我也需要基于密码的身份验证。 @GregInozemtsev 在这种情况下,有时需要一个快速而肮脏的脚本来执行此类操作,尤其是在测试或其他不需要纯安全性的环境中。跨度> 我不明白为什么缺少那个基本选项。我正在寻找 -pw superputty (putty) 命令 :( 我想我会改为使用 ssh 键。 【参考方案1】:

sshpass 实用程序正是为此而生的。首先,输入以下命令安装 sshpass:

sudo apt-get install sshpass

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

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

这个程序在使用 Linux 时最容易安装。

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

【讨论】:

不完全确定一个 linux 实用程序(可以为 Cygwin 制作,但这是一个完全不同级别的系统管理)如何获得 64 个赞成票......而 Plink 正是这样做的OP 询问并且不需要任何额外的工作(并且可能首先已经安装在他们的系统上)得到 1。我倾向于在这些事情上信任 Stack,所以如果有充分的理由跳过通常令人讨厌和偶尔会有令人发狂的制造......呃......我真的很好奇为什么它会得到如此多的爱。 因为标题不包含“windows”,并且在搜索 Linux/Unix/Mac 时在列表中显示较高。所以,在这里回答这个问题可以节省时间。 在 Mac OS X 中运行良好。我通过 sudo port install sshpass 安装了 sshpass。但是,如果由于其他原因导致登录出现问题,sshpass 往往会静默失败(没有错误消息)。所以先调试不带sshpass的命令;然后添加sshpass -p blah(等)。 您应该知道执行的 shell 命令会被存储(例如在 '.bash_history' 中).. Anish - 作者要求 windows,你给了 linux 的选项。【参考方案2】:

这个期望脚本怎么样?

#!/usr/bin/expect -f
spawn ssh root@myhost
expect -exact "root@myhost's password: "
send -- "mypassword\r"
interact

【讨论】:

它说我没有期望脚本 expect 被低估了!【参考方案3】:

PuTTY 的 plink 有一个 command-line argument for a password。在the answers to this question 中提出了一些其他建议:使用 Expect(适用于 Windows),或者使用 Paramiko 在 Python 中编写启动器。

【讨论】:

【参考方案4】:

Windows解决方案

    安装PuTTY 按Windows-Key + R 输入putty.exe -ssh [username]@[hostname] -pw [password]

【讨论】:

【参考方案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

【讨论】:

仅适用于 PowerShell 6(非核心版本)【参考方案6】:

此post 是您的问题的有效解决方案。

    在您的 Windows 机器上安装 PuTTY 执行“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"

【讨论】:

以上是关于通过 windows 命令提示符使用密码验证执行 ssh的主要内容,如果未能解决你的问题,请参考以下文章

在Linux中,MySQL密码没过期,刚重置完,提示已过期

在 Windows 上通过 c 程序执行命令

git 生成公钥 使用命令行无需输入用户名密码(windows)

怎样将Linux下MySQL数据库导入到Windows的MySQL中

验证 Windows 用户名/密码是不是具有管理员权限

ansible命令参数介绍