非交互式ssh sudo…提示输入纯文本密码


9

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

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

会提示我输入纯文本密码。有谁知道我如何使用它来使用普通的安全提示,或者我可以通过交换机传递密码?(这样,我可以在发送命令之前在此侧设置安全提示)

任何帮助深表感谢。

Answers:


13

用途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使用command 进行修改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文件)。

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.