我需要使用sshpassJava 代码通过 SSH 启动远程命令。
如果我手动输入控制台:
ssh -p 22 user@ipaddress mplayer '/media/data/myFavouriteSong.mp3'
Run Code Online (Sandbox Code Playgroud)
完美运行,但要求输入密码。所以我尝试运行sshpass:
sshpass -p mypass ssh -p 22 user@ipaddress mplayer '/media/data/myFavouriteSong.mp3'
sshpass -p mypass ssh -l user@ipaddress mplayer '/media/data/myFavouriteSong.mp3'
sshpass -p mypass ssh -t user@ipaddress mplayer '/media/data/myFavouriteSong.mp3'
sshpass -p mypass ssh user@ipaddress echo 'OK'
Run Code Online (Sandbox Code Playgroud)
他们都没有工作。
exh*_*uma 38
这可能是由ssh. 它看起来像sshpass上无效的主机密钥保持沉默(不输出对双方都不利stderr,也不stdout),并与状态代码存在6。在撰写本文时,这是第 50 版,代码中的匹配常量是RETURN_HOST_KEY_UNKNOWN,这暗示了该错误。
您的错误代码可能会有所不同,查看上面链接的代码可能会让您有所了解。
如果您的问题是无效的主机密钥,您应该三思而后行,用 CLI 选项覆盖错误。您的机器可能会受到威胁,或者您可能会受到 MITM 攻击!如果您 100% 确定情况并非如此,并且您无法使已验证的主机密钥保持最新,则可以使用如下命令:
sshpass -pfoobar ssh -o StrictHostKeyChecking=no user@host command_to_run
Run Code Online (Sandbox Code Playgroud)
sshpass命令仅在密码提示以assword:.
如果您的密码提示不同,您可能需要调整 的源代码sshpass以识别您的提示。
我Password for user@host:在某些系统上看到过密码提示 ,也许这是您的问题。
小智 6
我想你想要这样的东西:
sshpass -p yourpassword ssh user@ipaddress somecommand
Run Code Online (Sandbox Code Playgroud)
例如,这对我有用:
sshpass -p mypassword ssh username@10.0.0.9 touch foo
Run Code Online (Sandbox Code Playgroud)