x11vnc 通过 SSH 隧道 - sudo:没有 tty 存在并且没有指定 askpass 程序

x11vnc 通过 SSH 隧道 - sudo:没有 tty 存在并且没有指定 askpass 程序

我正在尝试设置一次性 SSH 隧道,它在登录的显示屏上实例化 x11vnc。

ssh -f -t -L 5900:localhost:5900 [email protected] 'sudo /usr/bin/x11vnc -safer -once -nopw -display :0 -auth /home/user/.Xauthority'

在 /etc/sudoers 中:

user@myhost:~$ sudo cat /etc/sudoers
[sudo] password for user: 
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/
# instead of directly modifying this file.
#
Defaults:user   !requiretty
Defaults        env_reset
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

root    ALL=(ALL:ALL) ALL
user  ALL=(ALL:ALL) NOPASSWD: /usr/bin/x11vnc

%admin ALL=(ALL) ALL

%sudo   ALL=(ALL:ALL) ALL

最终结果是这样的:

Pseudo-terminal will not be allocated because stdin is not a terminal.
bind: Address already in use
channel_setup_fwd_listener: cannot listen to port: 5900
Could not request local forwarding.
ebz@icarus:~ $ sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: 3 incorrect password attempts

它确实说了bind: Address already in use,但我认为这是不正确的和不相关的:

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 10.1.10.1:domain        *:*                     LISTEN      -               
tcp        0      0 *:ssh                   *:*                     LISTEN      -                   
tcp6       0      0 xxxx::xxxx:xxxx::domain [::]:*                  LISTEN      -               
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN      -               

可以肯定地说,我们可以忽略该消息。此外,删除用户的 sudo 条目也没有任何效果。

谢谢大家。干杯。

PS 解决方案在这里 -通过 SSH 运行命令时没有 TTY。- 没用 :(

另外,附注:这与服务器有关(有关 OPENNEBULA 的自定义 LXC VMM 实现的背景)。请不要将此标记为离题,因为这是一个有效的应用程序用例。

更新

-tt、减-f -t开关:

$ ssh -tt -L 5900:localhost:5900 [email protected] 'sudo /usr/bin/x11vnc -safer -once -nopw -display :0 -auth /home/user/.Xauthority'
bind: Address already in use
channel_setup_fwd_listener: cannot listen to port: 5900
Could not request local forwarding.
[sudo] password for user: 

但它要求输入密码?输入密码后它就可以正常工作了。

答案1

确保不在user任何一个组中admin,或者sudo将 sudoers 行放在user组行之后。

来自 sudoers 手册页

当多个条目与用户匹配时,将按顺序应用它们。如果有多个匹配项,则使用最后一个匹配项(不一定是最具体的匹配项)。

相关内容