标签: tty

在 ssh 中不分配终端有什么好处?

每隔一段时间我就会做一些类似的事情

ssh user@host sudo thing
Run Code Online (Sandbox Code Playgroud)

我还记得 ssh 默认不分配伪 tty。为什么不呢?如果我别名ssh为 ,我会失去什么好处ssh -t

ssh tty

78
推荐指数
3
解决办法
8万
查看次数

如何从我的桌面通过远程服务器上的 ssh 命令启动屏幕会话?

我希望能够通过桌面上的单个 ssh 命令在远程服务器上启动屏幕会话。但是, screen 似乎需要一个终端,通过 ssh 运行命令时该终端不可用。

所以显而易见

ssh root@my.machine screen "tail -f /var/log/messages"
Run Code Online (Sandbox Code Playgroud)

(作为示例)不起作用,并给出

Must be connected to a terminal.
Run Code Online (Sandbox Code Playgroud)

我希望 ssh 在屏幕下启动命令,以便我稍后登录并附加到我将手动启动的屏幕会话。

ssh terminal gnu-screen tty

63
推荐指数
3
解决办法
8万
查看次数

做了一只猫 /dev/urandom - 终端坏了

出于好奇,当您的 shell 字符集无法执行类似cat /dev/urandom操作时,有没有办法将其修复到位?

linux shell bash tty dev

31
推荐指数
3
解决办法
5010
查看次数

“输入设备不是 TTY”在“docker run”输出中究竟是什么意思?

这是一个有效的命令:

$ echo 'hi there' | docker run -i ubuntu cat
hi there
Run Code Online (Sandbox Code Playgroud)

这是一条响应错误消息的命令:

$ echo 'hi there' | docker run -it ubuntu cat
the input device is not a TTY
Run Code Online (Sandbox Code Playgroud)

我想弄清楚这里到底发生了什么。不仅仅是“删除 -t 它将被修复”。

我知道docker run's-t选项代表“分配伪 TTY”,我已经阅读了 TTY 代表什么的历史概述,但这并没有帮助我理解这里违反了什么样的合同。

linux tty docker

24
推荐指数
2
解决办法
5万
查看次数

尝试通过 SSH 连接时出现“debug1: read_passphrase: can't open /dev/tty: No such device or address”

我正在尝试使用连接到我的服务器

ssh user@server.com -vv
Run Code Online (Sandbox Code Playgroud)

我得到

debug1: read_passphrase: can't open /dev/tty: No such device or address
Run Code Online (Sandbox Code Playgroud)

错误或只是

Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
Run Code Online (Sandbox Code Playgroud)

当我不使用该-vv选项时。

/dev/tty文件确实存在。我以 root 身份登录,所以我可以访问它。tty命令返回

/dev/console
Run Code Online (Sandbox Code Playgroud)

我远程连接(使用 Putty)到服务器,我正在尝试从另一台服务器连接到该服务器。这不是一项 cron 工作。我该如何解决问题?

permissions ssh tty

10
推荐指数
1
解决办法
3万
查看次数

通过ssh连接时如何找出当前活动的linux虚拟终端?

情况如下。

我有一台装有 Debian Linux 6.0 的多用户台式机和一个连接了一台显示器的 ATI 显卡。我有 root 访问权限。可以启动多个 KDE 会话,如下所示:

$ w
 21:51:30 up ? days,  4:22,  ? users,  load average: 1.72, 1.68, 1.67
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
u1       pts/0    :0               Sat18    4days  0.00s 11.68s kdeinit4: kded4 [kdeinit]                      
u2       pts/5    :1               Mon17    2days  0.00s  6.65s kdeinit4: kded4 [kdeinit]                      
Run Code Online (Sandbox Code Playgroud)

因此,使用了两个虚拟终端,tty7 和 tty8:

$ ps aux|grep /usr/bin/[X]
root      2944  3.1 12.4 670040 1019904 tty7   Ss+  Aug27 187:52 /usr/bin/X :0 vt7 -br -nolisten tcp -auth /var/run/xauth/A:0-??????
root …
Run Code Online (Sandbox Code Playgroud)

linux desktop x11 tty

7
推荐指数
2
解决办法
1万
查看次数

无法通过 SSH 向瞻博网络防火墙发送命令

我有一些需要管理的瞻博网络 SSG 防火墙,我希望能够从一些监控脚本向它们发送命令。我使用公钥配置了 SSH 访问,并且我能够自动登录到防火墙。

当我以交互方式运行 SSH 时,一切正常:

$ssh <firewall IP>
FIREWALL-> <command>
<command output>
FIREWALL-> exit
Connection to <firewall IP> closed.
$
Run Code Online (Sandbox Code Playgroud)

但是当我尝试从命令行运行命令时,它不起作用:

$ssh <firewall IP> <command>
$
Run Code Online (Sandbox Code Playgroud)

当然,这在向远程 Linux 机器发送命令时工作正常:

$ssh <linux box IP> <command>
<command output>
$
Run Code Online (Sandbox Code Playgroud)

为什么会这样?以交互方式运行 SSH 与指定要在 SSH 命令行上运行的命令有什么区别?


更新:

它也适用于 Cisco 路由器。只有这些瞻博网络防火墙似乎以这种方式运行。

从 SSH 的调试输出来看,连接似乎已正确建立,但 Juniper box 在发送命令时回复 EOF,而 Linux box 回复实际命令输出:

Linux:

debug1: Authentication succeeded (publickey).
debug1: channel 0: new [client-session]
debug2: channel 0: send open
debug1: Entering interactive session.
debug2: callback …
Run Code Online (Sandbox Code Playgroud)

ssh juniper tty

6
推荐指数
1
解决办法
4388
查看次数

pam_tty_audit 和非特权用户

我正在研究一个 6.3 美分的盒子,并试图记录从 bash shell 执行的所有命令并遇到 pam_tty_audit。我已将适当的行添加到我的/etc/pam.d/system-auth file

session     required      pam_tty_audit.so enable=*
Run Code Online (Sandbox Code Playgroud)

问题是它似乎不会捕获命令,除非用户是 root。例如,如果我以 root 身份登录,它会将所有内容都记录到审计日志中,但是如果我以普通用户身份登录,它不会开始记录任何内容,直到我将 su 登录到 root 之后。

有任何想法吗?

centos pam auditd tty

5
推荐指数
1
解决办法
1271
查看次数

如何通过“墙”无声地广播来自cronjob的警告?

所以我在 Ubuntu 16.04 机器上有这个 cronjob,它以

if ...
  echo "warning" | wall 2>&1 > /dev/null
fi
Run Code Online (Sandbox Code Playgroud)

我用来警告所有用户有关正在发生的某些操作。尽管我将其输出重定向到/dev/null,但脚本以某种方式设法输出

wall: cannot get tty name: Inappropriate ioctl for device
Run Code Online (Sandbox Code Playgroud)

它通过电子邮件发送到根帐户。怎么wall静音?广播有效,但我不想在我的根邮箱中有这些电子邮件。

# wall -V
wall from util-linux 2.27.1
Run Code Online (Sandbox Code Playgroud)

cron tty

5
推荐指数
1
解决办法
1703
查看次数

需要替换“史努比”

目前,我们使用 Snoopy 来监控用户在一些外部可访问的服务器上发出的所有命令。我们正在将所有内容更新到 RHEL8 以确保可支持性和合规性,并发现我心爱的史努比不再维护。所以它不会通过合规性审核,需要更换。

我通过在 system-auth 和 password-auth 中启用“pam_tty_audit.so”来研究使用 auditd 来做到这一点。这确实奏效了,但输出是,好吧,让我们说它不太理想。更不用说基本上不可读了。

我尝试通过添加这个来设置 /etc/profile 来记录...

function log2syslog
{
   declare COMMAND
   COMMAND=$(fc -ln -0)
   logger -p local1.notice -t bash -i -- "${USER}:${COMMAND}"
}
trap log2syslog DEBUG
Run Code Online (Sandbox Code Playgroud)

并将其添加到 /etc/rsyslog.conf

local1.* -/var/log/cmdline
Run Code Online (Sandbox Code Playgroud)

它很好用!但该解决方案被拒绝,因为它可以被用户覆盖。

我什至尝试使用 rootsh 作为用户的 shell 并记录下来。记录良好,但上面没有时间/日期戳。所以不能接受。

所以回到手头的问题。我需要替换 Snoopy,它以带有时间戳的可读格式记录执行的每个命令,用户无法覆盖。

有什么想法吗?

console logging tty

5
推荐指数
1
解决办法
573
查看次数

标签 统计

tty ×10

ssh ×4

linux ×3

auditd ×1

bash ×1

centos ×1

console ×1

cron ×1

desktop ×1

dev ×1

docker ×1

gnu-screen ×1

juniper ×1

logging ×1

pam ×1

permissions ×1

shell ×1

terminal ×1

x11 ×1