sudo - sorry you must have a tty to run sudo 解决方法
什么是tty
TTY(TeleTYpe、Teletypes or teletypewriters)原指电传打字机。Linux或UNIXtty 是一个抽象设备,指的是一个子系统,它通过TTY驱动程序在内核级别实现进程管理、行编辑和会话管理等- Linux 系统中,一般可以通过如下快捷键切换 TTY 窗口
Ctrl + Alt + F1锁屏Ctrl + Alt + F2桌面环境Ctrl + Alt + F3TTY3Ctrl + Alt + F4TTY4Ctrl + Alt + F5TTY5Ctrl + Alt + F6TTY6
- Linux 中通过 tty 命令行与系统进行交互,通过
who查看使用的 tty 号
F&Q
ssh: sorry you must have a tty to run sudo
刚刚配置了SUDOWS来执行SSH连接中没有密码的命令,报如上错
- 解决方式一:修改 sudoers 配置
替换 /etc/sudoers 中 Defaults requiretty by Defaults !requiretty。该修改影响全局配置。
你也可以为单独用户、用户组或指定命令设置权限限制:
Defaults!/path/to/my/bin !requiretty
Defaults:myuser !requiretty- 解决方式二:使用
ssh -t访问
ssh 链接时,使用 -t 参数:
ssh -t root@10.10.10.10From man ssh: text -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.
未测试:
export HASTTY=1- 解决方式三:在
~/.ssh/config中配置RequestTTY force
Host <alias name>
Hostname <ip or domain>
User <user>
IdentityFile <ssh key file>
RequestTTY force
# RemoteCommand screen -dR screen_name- 解决方式四:通过
script -q -c tty分配一个 tty
docker run -it 报错 the input device is not a TTY
$ docker run -it xxx
the input device is not a TTY
# 或出现在 ssh 时
$ ssh <user>@<ip> docker run -it xxx- 解决方法:
-it去掉-t参数,-t指分配一个伪终端tty