我的 SSH RSA 密钥需要密码吗?

eck*_*kza 81 security ssh rsync rsa passphrase

在我开始目前的工​​作(在一家小企业)之前,我的办公室在网络上没有防火墙,几乎没有任何备份。现在,我已经以专门的系统管理员/单人 IT 部门的身份登录,我一直在尽我所能来改变这一点。在向我的老板解释了我们有多脆弱之后,他允许我设置一些备份服务器,其中一台在他家。

现在,我正在尝试设置所有内容,以便我可以自动执行每日备份。我打算通过 ssh 使用 rsync 来做到这一点。出于安全和自动化的考虑,我计划禁用 ssh 密码登录并仅使用 rsa 密钥验证。好吧,如果我设置了 rsa 密码,那么我仍然需要输入密码,这是一个问题。

没有 rsa 密码是否会显着降低安全性?我是公司中唯一对这种事情有任何线索的人,所以我不太担心有人在我的机器上调用终端(无论如何,当我 AFK 时它总是被锁定的) ) 并通过 ssh 连接到其中一台备份服务器并造成任何损坏。我对系统管理领域仍然非常非常陌生,这是我第一次做这样的事情,我不想在安全设置中留下任何漏洞。

这里有问题的计算机正在运行 Ubuntu 10.10、SME Server 和 OSX 10.6,如​​果这有什么不同的话。

Pri*_*cey 100

如您所知,密码短语给您带来的好处是,如果有人能够读取您的私钥,他们就“无法”使用它。

如果有人能够访问该私钥,您应该理所当然地认为他们可以访问(ed)/破坏任何使用公钥设置的机器。.bash_history 或 .ssh/config 之类的东西只会让这更容易,即使你的 .ssh/known_hosts 被混淆了。

在您的密钥上没有密码并不是世界末日,这里有 3 个想法可以尝试帮助您更好地保护自己,尽管如此。(大人物是第二个,如果没有别的,请阅读


  1. 不要只对所有机器和用户使用相同的密钥。在每台机器上(需要做这种事情的)每个用户生成自己的密钥对。这将使您能够对可以 ssh 的位置保持细粒度的控制。

  2. 将密钥添加到您的 authorized_keys 文件时,您可以将其锁定为只能运行特定命令,或仅从特定主机使用它。

    查看man ssh并搜索command=from=

    语法类似于:

    from="1.2.3.4",command="/path/to/executable argument" ssh-rsa key name

    即在那里弹出 'rsync' 并且只有'rsync' 可以被您的密钥调用,并且只能从 IP 地址 1.2.3.4调用。多个 IP 可以用,. 还支持主机名。

  3. 想到的另一件事是 sshd_config 中的“AllowUser”指令

    允许用户

    此关键字后面可以跟一个用户名模式列表,以空格分隔。如果指定,则仅允许与其中一种模式匹配的用户名登录。'*' 和 '?' 可以用作模式中的通配符。只有用户名有效;无法识别数字用户 ID。默认情况下,允许所有用户登录。如果模式采用 USER@HOST 的形式,则分别检查 USER 和 HOST,将登录限制为来自特定主机的特定用户。

    这基本上确保了用户只能从某个位置登录。(虽然它也接受通配符)不会解决你所有的问题,但至少会让其他人更难。

  • 没问题,只是不要把它当作一个详尽的清单!:-) 诸如定期查看 auth.log/secure 之类的事情会浮现在脑海中。 (3认同)
  • 所以审计而不是担心你的密码被盗? (3认同)
  • @shurane 两者都做! (3认同)

Fah*_*tha 5

您可以使用钥匙串之类的东西来减轻密码短语的痛苦。这比使用无密码登录稍微安全一些,并且可以与此处的其他答案结合使用。PriceChild的回答非常好。