如果您禁用 X11 转发和 SSH 代理转发(至少在 Ubuntu 18.04 上这是默认配置),远程 root 无法执行任何他们在该主机上已经无法执行的操作,除非您使用 ssh 连接到它。(当然,如果远程 root 知道您的 ssh 软件中的某些安全漏洞,则可以接管您的客户端并在您的计算机上以您的帐户执行代码。这与您用于连接任何远程计算机的任何软件相同。)
远程机器进程以 root 身份运行的示例(例如远程机器管理员或代表他或她运行的任何进程):
- 读取和修改您访问、读取或写入的任何文件。
- 任何进程的任何系统调用的虚假结果,包括更改任何参数、不运行任何东西或其他东西或伪造返回值。
- 读取和修改任何进程的内存。
- 控制在所述机器上运行的任何打开的 TCP/IP 连接。
- 监视和修改任何事件(例如,您击中的每个键击都是远程机器上可见的纯文本,即使是一个进程)。
远程机器进程不能做的事情的例子:
- 读取在远程机器外部进行加密的机器上运行的加密管道的纯文本内容(例如 P2P 加密流量)。
- 如果您没有将加密密钥作为文件或作为 RAM 的一部分存储在远程计算机上,请读取加密文件的内容。例如,如果您在自己的计算机上加密文件并使用 ssh/scp 将这些文件复制到远程计算机。
- 阅读本地环境的内容(包括提示设置),除非您已配置
ssh
将此类设置转发到远程主机。(例如,在所有机器上获得熟悉的提示样式。)
强制注销/断开连接的唯一方法是在ssh
设置中使用转义字符。默认情况下应该是这样~
,如果您按顺序按enter
, ~
,.
ssh 将检测到此转义序列并关闭连接。远程主机无法阻止转义字符序列。可以伪造任何其他键序列的行为。请注意,如果~
已将芬兰键盘配置为“死键”,则必须输入转义序列为enter
, altgr+~
, space
,.
或enter
, altgr+~
, altgr+~
, .
。我认为美国国际键盘配置将表现相同。请注意,如果您使用ssh
连接host-a
并从那里连接到host-b
, 使用上述转义序列将终止与 to 的连接,host-a
因为转义序列将由ssh
首先读取输入的进程解释(在这种情况下,ssh
在 localhost 中运行并连接到 的进程host-a
)。如果您需要转义序列来断开与每个主机的连接,则每个主机连接都必须使用单独的转义序列。显然,如果host-a
受到攻击者的控制,他或她可以修改任何使用任何字符序列的尝试。有关更多信息,请参阅man ssh
“ESCAPE CHARACTERS”的副标题或尝试使用活动连接。enter
~
?
ssh