我需要通过以非交互方式提供密码,从 Windows命令行执行 ssh 。我可以实现基于密钥的身份验证,并且能够执行ssh命令,就像
一样ssh <user>@<host> <command>
是否有像
这样的命令ssh <user>@<host> -P <password> <command>
我不知道这是否可行。但是,可以有一些相同的工作。给我一些想法来实现同样的目标。
答案 0 :(得分:160)
sshpass实用程序就是为了这个目的。首先,输入以下命令安装sshpass:
sudo apt-get install sshpass
然后使用
添加ssh / scp命令sshpass -p '<password>' <ssh/scp command>
使用Linux时,此程序最容易安装。
用户应考虑使用SSH更安全的公钥认证(使用ssh
命令)。
答案 1 :(得分:24)
这个期望脚本怎么样?
#!/usr/bin/expect -f
spawn ssh root@myhost
expect -exact "root@myhost's password: "
send -- "mypassword\r"
interact
答案 2 :(得分:11)
PuTTY的plink有一个command-line argument for a password。在the answers to this question中已经提出了一些其他建议:使用Expect(适用于Windows),或者使用Paramiko在Python中编写启动器。
答案 3 :(得分:1)
Windows 解决方案
Windows-Key + R
putty.exe -ssh [username]@[hostname] -pw [password]
答案 4 :(得分:0)
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