鉴于您有一台稳定的计算机,我会继续使用 ssh 密钥而不是密码来进行 ssh 访问(即使您每次使用不同的实验室计算机,便携式 USB 中的 ssh 密钥可能仍然更可取) .
ssh 密钥可能被盗,但在其上使用密码应该提供与 ssh 密码类似的安全性,只是您也需要密钥文件。是的,ssh 客户端可以被攻破以窃取密钥密码,但难度相当于攻破客户端以窃取 ssh 密码。请记住,您可以将 ssh 身份加载到代理中,以使它们在使用前需要确认(以及卸载/根本不使用 ssh-agent,尽管我建议这样做)。
硬件令牌(由 Luis 推荐)最适合保护 ssh 密钥,但它可能不是一个选项。
至于不显示您连接的 IP 地址,如果您使用的是 openssh 客户端,您需要HashKnownHosts yes
ssh_config 选项(对于某些发行版,这甚至是默认设置)。不过,可能并不值得隐藏,它不应该是“秘密的东西”,而且很容易从网络日志中提取出来。
在服务器上,作为进一步保护登录免受未经授权的随机主机的一种方式,您可以:
- 禁用密码验证(你想做的)
- 限制能够登录的用户(仅限于允许的用户)
- 使用非标准端口
- 限制允许连接的 IP 地址。作为一所大学,“你的”计算机将有一个静态的出站 IP 地址,甚至可能是一个专为你准备的公共 IP 地址。最坏的情况,仅限于大学范围。
这些主要是“附加措施”,因为它们无法阻止坚定的攻击者滥用他在您的计算机上的超级用户权限,¹但我觉得至少为未来的读者列出它们是件好事。
但是,解决您的问题的重要方法是您不授予对家用计算机的一般访问权限。由于您想通过 ssh 进行连接,我假设您的家用机器是 Linux/BSD/MacOS 机器。
您可能会在那里拥有一个用户帐户,您可以通过该帐户执行日常任务,例如浏览互联网、编写(个人)电子邮件或观看 youtube 视频。但是,您不需要访问其中的任何内容,因为您只关心计算。因此,您为运行计算设置了一个单独的、有限的访问权限。您可以连接到虚拟机或容器,但只需一个单独的帐户即可满足您的需求。您只需要硬件速度快(呃),一个空间很小的帐户和机器上安装的所需程序就可以了。一些不允许其他用户访问您的“主文件”的基本 Unix 权限就足够了。² 显然,保持您的家用计算机针对本地升级漏洞进行修补。
第二个潜在问题是访问该低权限帐户的攻击者会破坏您本地网络中的其他设备。除了充分保护其他设备外,您还可以取消对该低权限用户的所有网络访问,或者将其限制为仅外部地址。
¹ 例如,ssh 密钥在其他机器上不起作用,但它们可以通过您的代理访问
² 有各种各样的处理器侧通道,但大多不相关,您可以在本地访问时禁用 sshd,并且不应该让敏感的东西继续运行(不,你不应该让 CA 在那里运行😉)。