在 SSH 连接上,您可以执行在控制台连接上可以执行的所有操作吗?
换句话说,在启动系统并在其上安装和配置 SSH 服务器后,您是否可以通过 SSH 与该系统进行所有进一步的交互,而不使用控制台(除非 SSH 服务器由于某种原因不可用) )?
答案1
是的。
以下只是其中的一些内容。
超级用户登录
在 FreeBSD 和 OpenBSD 等系统上,init
程序仅允许在单用户模式下以用户 #0 身份登录文件secure
中标记为 的终端/etc/ttys
。并且该login
程序(直接在 OpenBSD 上,通过 FreeBSD 中的 PAM 模块)secure
在多用户模式下强制执行该标志。
Debian 和 Ubuntu 也有类似的/etc/securetty
机制。在所有这些中,控制台和内核虚拟终端(注意,不一定是控制台)默认允许超级用户登录。
在 OpenBSD 上,SSH 的开箱即用默认设置是在使用密码或键盘交互式身份验证时不允许以超级用户身份登录(但在使用公钥身份验证时允许)。 FreeBSD 上 SSH 的开箱即用默认设置是根本不允许以超级用户身份登录。
帧缓冲区输出事件/USB 输入程序
人们可以通过 SSH 连接建立 X 隧道,并且可以与使用终端设备的程序进行交互。但是,希望通过 Linux 的“事件”设备系统、USB HID 设备和帧缓冲设备执行 I/O 的程序无法通过 SSH 进行操作。
进一步阅读
声音
通常也不会通过 SSH 传输声音。人们可以手动将发出声音的程序通过 LAN 定向到 PulseAudio 服务器,或者手动从远程声音客户端建立隧道到本地 PulseAudio 服务器。但对于初学者来说,并非所有声音都是 PulseAudio。
进一步阅读
盲文
BRLTTY 等程序需要直接访问虚拟终端设备的字符+属性元胞数组。如果服务器设置了 BRLTTY,则它无法访问 SSH 登录会话并以盲文显示它们,但它可以显示内核虚拟终端登录会话。
进一步阅读
- 乔纳森·德博因·波拉德 (2014)。将 nosh 用户空间虚拟终端与 BRLTTY 相结合。软件。
- 可达性。 Debian 维基。
紧急模式和救援模式工作
引导进入紧急模式或救援模式不启动 SSH 服务器。这两种模式都不会启动支撑网络的所有麻烦,更不用说像 SSH 服务器这样的网络服务了。
不可预测的 PolicyKit 内容
PolicyKit 的概念是活动和非活动登录会话。这试图将/etc/ttys
系统中的一组属性(on
、secure
、network
、dialup
)归结为“活动”和“非活动”之间的单个真/假切换。这不太适合 SSH 及其同类产品存在的世界。
仅当登录到控制台或内核虚拟终端时,才能拥有“活动”登录会话。通过 SSH 登录始终被视为“非活动”登录会话。可能会导致令人惊讶的行为差异,因为软件作者和系统管理员可以授予不同的权限来对活动登录会话和非活动登录会话执行操作。
进一步阅读
- 为非本地用户启用系统管理权限 - “polkit”到底是如何工作的?
- https://askubuntu.com/questions/21586/
- 杰夫·莱恩 (2014-03-28)。 plainbox-secure-policy 不适用于 ssh。错误#1299201。发射台。乌班图。
答案2
不,只要您不断开网络连接(或者如果这样做,您会自动重新建立它,这很棘手)。命令本质上并不关心它们是通过什么接口发出的。
但是,SSH 会话的权限可能比控制台会话少。在这种情况下,可能会有一些事情可能的原则上通过 SSH 会话进行,但不是授权的特定的 SSH 会话,甚至可以在特定配置中打开的所有 SSH 会话。
登录控制台显然会赋予一些与控制台交互相关的权限。传统上,这意味着拥有与终端设备(键盘和显示器)交互的权利。现代系统通常将其他权限与控制台登录绑定在一起,例如安装可移动设备、访问其他外围设备(例如音频设备)、启动挂起或重新启动等的权限。现代 Linux 系统使用波尔基特为此,无论是控制台工具包或 systemd 的登录来跟踪哪个用户拥有活动的控制台会话。
传统上,超级用户(root)拥有所有权限。所有权限确实意味着全部,并且 root 是通过 SSH 还是在控制台登录并不重要。禁用通过 SSH 的直接 root 登录是很常见的,但这取决于系统配置。大多数 Unix 系统的默认配置允许通过 SSHsu
会话访问 root 帐户sudo
,但可以禁用此功能,例如通过
pam_securetty。
现代 Unix 系统可以限制 root 帐户,例如SELinux。强化的系统可能允许通过 SSH 进行根会话,但会以不适用于控制台登录的方式限制它们。同样,这将是一个配置问题,例如 SELinux 策略。