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


93

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

ssh <user>@<host> <command>

有没有类似的命令

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

在此处输入图片说明

我不知道这是否可行。但是,可能有一些解决方法。向我抛出一些想法以实现相同目标。


2
使用基于密钥的身份验证是一个更好的主意。
Greg Inozemtsev 2012年

1
是的,我也有基于密码的身份验证的要求。
Balachandar 2012年

12
在这种情况下,@ GregInozemtsev有时会需要使用快捷脚本来执行类似操作,特别是在不需要纯安全性的测试或其他环境中。
TheJosh

我不知道为什么缺少该基本选项。我一直在寻找-pw superputty(腻子)命令:(我想我会移动到SSH密钥来代替。
m3nda

Answers:



160

sshpass工具是为正是这一点。首先,通过键入以下命令来安装sshpass:

sudo apt-get install sshpass

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

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

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

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


8
也适用于rsync。
TheJosh

15
因为标题不包括“ windows”,所以在Linux / Unix / Mac上搜索时,它在列表中显示较高。因此,在这里回答这个问题可以节省时间。
Frobbit 2014年

1
在Mac OS X上运行良好。我通过安装了sshpass sudo port install sshpass。但是,如果由于其他原因导致登录问题,则sshpass倾向于静默失败(无错误消息)。因此,无需sshpass先调试命令即可;然后添加sshpass -p blah(等)。
RedRedSuit 2014年

5
您应该知道,已执行的Shell命令会被存储(例如,在'.bash_history'中)..
Benjamin

4
阿尼什(Anish)-作者要求安装Windows,您选择了Linux。
arka.b,2015年


4

Windows解决方案

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

2

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.