非交互式 ssh sudo... 提示以纯文本形式输入密码

非交互式 ssh sudo... 提示以纯文本形式输入密码

我正在运行一些非交互式 ssh 命令。ssh 身份验证可以通过 ssh 代理顺利完成,但如果我运行需要 sudo 的命令,则终端中的密码提示是纯文本。例如:

ssh remotemachine "sudo -u www mkdir -p /path/to/new/folder"

将提示我以纯文本形式输入密码。有人知道我如何让它使用正常的安全提示,或者我可以通过开关传递密码吗?(这样我就可以在发送命令之前在此侧设置安全提示)

任何帮助深表感谢。

答案1

使用ssh -t

人SSH

-t   Force pseudo-tty allocation. This can be used to execute arbitrary 
     screen-based programs on a remote machine, which can be very useful, 
     e.g. when implementing menu services. Multiple -t options force tty 
     allocation, even if ssh has no local tty.

所以你的命令将是

ssh remotemachine -t "sudo -u www mkdir -p /path/to/new/folder"

如果您不想输入密码,您可以(如果允许的话)sudoers使用命令进行修改visudo

添加参数NOPASSWD:,例如

username ALL=(ALL) NOPASSWD: /bin/mkdir

如果您无法编辑 /etc/sudoers,您可以使用sudo -S

男人须藤

-S      The -S (stdin) option causes sudo to read the password from
        the standard input instead of the terminal device.  The
        password must be followed by a newline character.

这样,命令就是

echo "your_password" | ssh remotemachine -t \
     "sudo -S -u www mkdir -p /path/to/new/folder"

请记住,这会将您的密码添加到您的 shell 的命令历史记录中(对于 bash,这将是~/.bash_history文件)。

相关内容