我可以ssh
从我的 Google Pixel Slate 连接到任何其他计算机。没问题。
我无法ssh
从任何其他计算机进入 Chrome OS。我认为这是因为 shell 作为 VM 运行,它甚至有自己的一组 IP 地址,这与 Chrome OS 使用的不同。
所以这个问题。有没有办法通过 SSH 进入 Chrome 操作系统?可能是某种NAT?
我可以ssh
从我的 Google Pixel Slate 连接到任何其他计算机。没问题。
我无法ssh
从任何其他计算机进入 Chrome OS。我认为这是因为 shell 作为 VM 运行,它甚至有自己的一组 IP 地址,这与 Chrome OS 使用的不同。
所以这个问题。有没有办法通过 SSH 进入 Chrome 操作系统?可能是某种NAT?
对于大多数人来说,最好的选择是通过 SSH 连接到 Linux Beta 终端 (Crostini)。有了这个,您可以访问在 Chromebook 上运行的完整 Linux VM,并且可以通过 APT 安装在 Chromebook 桌面上运行的 Linux 应用程序。
通过 Linux Beta 进行 SSH 是迄今为止最简单的方法,并且仍然允许您将文件 SCP 到您的 Chromebook、打开图像、播放音频文件和更多功能。
可以在此处找到带有照片和代码的详细说明...
https://www.hackershark.com/2021/05/13/how-to-ssh-into-your-chromebook-through-linux-beta/
概述
正如您所提到的,根据您的目标,有多种访问 ChromeOS 设备的选项。最简单的方法是在 Crostini 中启用 SSH,并使用最新 ChromeOS 版本中的新选项设置端口转发。第二个最简单的是Crouton,它需要开发者模式,但仍然可以维护很多系统安全特性。最后,最难,也是最不“安全”的方法是配置“主机”ChromeOS 运行 SSH 服务器,但这需要移除许多使 Chromebook 成为真正可靠的开发平台的安全保护。
可能有很多关于 SSH 到 Crostini 或 Crouton 的帖子,所以我将只讨论“硬”选项,并尝试返回并更新一些与其他人的链接,因为我遇到了一贯的工作和最佳实践那些帖子。
硬模式又名 YOLO:
如果您想通过 SSH 连接到实际的主机操作系统,您需要通过切换到开发人员模式来启用 SSH 服务(在转换过程中擦除所有数据)。您可以在重置后设置期间选择启用“调试选项”的选项,但我发现这实际上会导致稍后出现一些问题,因此我建议您像往常一样连接到互联网并登录。
如果您想通过 SSH 连接到您的 ChromeOS 主机操作系统,您需要禁用 rootfs 只读保护,请注意这会显着降低系统的安全性,并且会做出不正确的更改或删除错误的文件(或损坏的脚本或恶意软件)滥用您的访问权限)可能会导致 ChromeOS 停止启动,从而迫使您使用 USB 恢复或执行 Powerwash,从而删除您的所有用户数据。
禁用 rootfs 保护后,您可以按照 ChromeOS 源中的说明启用 SSH 服务。
有 3 个选项,第一个是我建议跳过的调试,第二个是最好的 IMO,因为您可以禁用密码 SSH 并删除不安全的“测试密钥”,因为它们是众所周知的,第三个需要每次重新启动后手动运行 sshd,如果您需要远程/无人值守访问您的 Chromebook/Chromebox,这可能不是您想要的。尽管对于第 3 个选项,您可以避免使用“测试密钥”,只要您可以正确设置文件的文件权限
authorized_keys
并将其存储在/usr/local/
ChromeOS 在更新期间不会触及的位置。https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/master/chromeos-base/chromeos-sshd-init/files/openssh-server.conf.README#25
Linux 容器发生了一些变化。它现在可以转发端口,但只能转发到非特权端口号(1024 及以上)。
已经有一个 SSH 守护进程在端口 2222 上运行。这有助于 ChromeOS 启动容器,并且是一个仅 SFTP 的服务器。
您可以做的是安装您自己的 SSH 守护程序并在不同的端口(我使用 2223)上运行它,并使用上面给出的主机操作系统中的端口转发功能。
这是一个不便,但是当您停止然后启动容器时,端口转发不会恢复。停止容器后,您必须在 Linux 设置选项卡中手动开始转发。
如果你确实让它工作了,记得备份你的 Linux 容器。Linux 容器可能会中断并且无法从终端应用程序启动。
如果容器不是从终端应用程序启动的,则无法启动端口转发。(有一种方法可以使用 CROSH 手动启动容器,然后使用 termina 和 lxc。如果终端不再启动容器并且您想进入它,则可以使用此方法。)