Dre*_*kes 89 ssh remote-access
尝试在远程机器sudo
上运行远程二进制文件时:
ssh remotehost "sudo ./binary"
Run Code Online (Sandbox Code Playgroud)
我看到这个错误:
sudo: no tty present and no askpass program specified
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
Dre*_*kes 97
一个简单的方法是指定-t
:
ssh -t remotehost "sudo ./binary"
Run Code Online (Sandbox Code Playgroud)
从手册页:
强制伪 tty 分配。这可用于在远程机器上执行任意基于屏幕的程序,这非常有用,例如在实现菜单服务时。多个 -t 选项强制 tty 分配,即使 ssh 没有本地 tty。
我无法确切解释为什么会这样,并且可能有更好的方法。如果是这样,我想听听:)
@psusi 在下面的评论中解释了为什么这样做。
eli*_*hen 36
我该如何解决这个问题?
sudo: no tty present and no askpass program specified
Run Code Online (Sandbox Code Playgroud)
作为替代方案,请尝试:
sudo -S ./[yourExecutable]
这会指示 sudo 从标准输入 stdin 读取密码。
在 chroot 环境中,这些其他答案可能无法正常工作......也许是因为:
例如:使用 chroot 环境(例如 Archlinux 和 arch-chroot)手动安装/修复 linux 或引导加载程序。
它失败了,因为sudo
正在尝试提示 root 密码并且没有分配伪 tty。
/etc/sudoers
您必须以 root 身份登录或在您的(或:)中设置以下规则sudo visudo
:
# Members of the admin group may gain root privileges
%admin ALL=(ALL) NOPASSWD:ALL
Run Code Online (Sandbox Code Playgroud)
然后确保您的用户属于admin
组(或wheel
)。
归档时间: |
|
查看次数: |
306466 次 |
最近记录: |