如何在linux命令中使用环境变量中的密码?

use*_*766 0 linux ssh

我想在脚本中运行以下命令(意味着我无法在终端中交互运行,因此可以在提示时输入密码):

ssh -o StrictHostKeyChecking=no user@example.com 'echo mypassword | sudo -kS ufw 状态

'

这将 ssh 进入远程主机并在远程主机上运行命令 ufw status。

该命令工作正常,但我需要能够从名为的环境变量引用“密码”

SSHPASS = 我的密码

它存储密码,以免在命令中暴露密码。怎么做?

Mr *_*unz 5

ssh您可以通过以下命令将包含密码的变量传递给sshpass

sshpass -p "$SSHPASS" ssh -o StrictHostKeyChecking=no user@example.com
Run Code Online (Sandbox Code Playgroud)

也就是说,这并不比在脚本中包含密码更安全!

当您需要通过脚本访问服务器时,更好的解决方案ssh是转向基于密钥的身份验证