在旅途中通过 SSH 从酒店连接到服务器真的安全吗?

Ser*_*rov 13 security physical-security

在旅途中使用 SSH 从酒店连接到服务器真的安全吗?

服务器
- CentOS 7
- 仅通过 RSA 密钥授权 - 密码认证被拒绝
- 非标准端口

工作站
- Ubuntu 14
- 用户密码
- 使用 RSA 密钥的密码(标准方法)

也许将一半的私有 RSA 密钥保留在 USB 记忆棒上是个好主意,并在连接之前自动(通过脚本)将此一半添加到 ~/.ssh/private_key 中?

互联网将通过酒店的 WIFI 或租来的公寓中的电缆进行。

UPD
抱歉一开始不清楚。我在这里的意思是两个方面的安全性:

  1. 通过不受信任的网络仅保证 SSH 连接的安全性。
  2. 具有 SSH 连接所需密钥的计算机的安全性 - 如果被盗,如何保护服务器...

and*_*dol 26

因此,关于通过显式不受信任的连接建立 ssh 连接。

假设您已经有一个来自先前连接的 ~/.ssh/known_hosts 条目,是的,您应该能够连接而无需担心网络是否安全。如果您有其他方法来验证 ssh 主机密钥,情况也是如此。

如果您以前从未连接到服务器,也没有任何其他方法来验证 ssh 主机密钥,那么您可能需要更加小心用于连接的网络。

  • 实际上,这个答案适用于您想要 ssh 到远程服务器并且路径的*任何*部分不受您完全控制的*任何*情况(因此实际上除了ssh-ing到新安装的本地主机或通过交联电缆) (7认同)
  • 值得注意的是,如果客户端不知道主机密钥,那么如果使用密码身份验证,则可能发生完整的 MITM 攻击。但是如果使用基于密钥的身份验证,攻击者将只能冒充服务器。攻击者也无法对真实服务器进行身份验证。在这种情况下,攻击者很难提供令人信服的服务器模拟,因此您可能会在为时已晚之前注意到某些地方出了问题。简而言之:**公钥认证比密码认证安全得多**。 (6认同)
  • @kasperd:好吧,如果连接客户端启用了代理转发,那么即使公钥身份验证也可以提供完整的 MITM 体验。但是,是的,任何时候公钥身份验证都绝对优于常规密码。 (2认同)

Dam*_*lli 11

在您问题的第二部分中,您似乎担心您的笔记本被盗,并担心您的无密码 SSH 登录到您的服务器的私钥会被盗。

请注意,这可以通过存储使用“密码”“加密”的私钥轻松解决(私钥问题):它们可以在最初加密,同时使用ssh-keygen实用程序生成,通过在末尾提供密码生成过程,或者,如果您已经将它们解密,则使用带有选项的ssh-keygen实用程序-p。一旦密钥被加密,在每次登录时,您都会被要求输入相关的密码,如果正确,一切都会正常进行。

此外,如果您不想每次启动 ssh 客户端时都输入密码,则可以使用ssh-agent:它可以在内存中跟踪未加密的私钥。您可以简单地运行ssh-add指向保存加密密钥的文件,并在询问密码后,将密钥添加到由 ssh-agent 管理的集合中。此后,每次 SSH 客户端需要密码保护的密钥时,ssh-agent 都会向 ssh 客户端透明地提供相关的未加密私钥。因此,对您来说,不需要以交互方式输入它。

请注意,ssh-agent 可以管理大量密钥,显然您可以“调整”您的笔记本/台式机以ssh-add在登录/启动时启动该实用程序(以填充 ssh-agent 密钥集)。

此外,如果有人偷了你的笔记本电脑,你的私钥可能不是你要泄露的唯一“敏感”内容:请注意,使用今天的 Linux 桌面发行版,设置依赖于“加密”的笔记本非常容易。 " 文件系统(/home作为启动器,但/如果需要则是整个)。所以,请也考虑一下。

显然,如果您依赖自己的笔记本,则上述所有内容均不适用。


PS:至于您将未加密私钥的两半存储在不同介质上的可能性:我强烈建议您要这样做,因为以未加密的形式维护两部分敏感内容比保留两个要糟糕得多整个内容的完整副本,加密!


小智 5

您的问题的第一部分已由先前的回复回答。根据您的第二部分,我建议使用 pam_google_authenticator 为您的 ssh 登录添加第二个因素。在任何发行版上设置和配置都相当容易。如果您随身携带的私钥被盗,他们将无法使用来自 google-authenticator 的 TOTP 一次性密码登录您的服务器。

https://www.howtoforge.com/tutorial/secure-ssh-with-google-authenticator-on-centos-7