每隔一段时间我就会做一些类似的事情
ssh user@host sudo thing
Run Code Online (Sandbox Code Playgroud)
我还记得 ssh 默认不分配伪 tty。为什么不呢?如果我别名ssh为 ,我会失去什么好处ssh -t?
我希望能够通过桌面上的单个 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 在屏幕下启动命令,以便我稍后登录并附加到我将手动启动的屏幕会话。
出于好奇,当您的 shell 字符集无法执行类似cat /dev/urandom操作时,有没有办法将其修复到位?
这是一个有效的命令:
$ 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 代表什么的历史概述,但这并没有帮助我理解这里违反了什么样的合同。
我正在尝试使用连接到我的服务器
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 工作。我该如何解决问题?
情况如下。
我有一台装有 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) 我有一些需要管理的瞻博网络 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) 我正在研究一个 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 之后。
有任何想法吗?
所以我在 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) 目前,我们使用 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,它以带有时间戳的可读格式记录执行的每个命令,用户无法覆盖。
有什么想法吗?