是否可以使用密钥通过 ssh 进入 ubuntu 服务器,然后从另一台计算机使用密码进入?

是否可以使用密钥通过 ssh 进入 ubuntu 服务器,然后从另一台计算机使用密码进入?

我家里有一台 ubuntu 服务器,我使用 SSH 密钥通过笔记本电脑上的终端登录。我很少需要访问此服务器,但大多数时候都是在工作中,但我不想将密钥复制到我的工作笔记本电脑上 - 我宁愿使用普通密码。

因此,如果我从 ssh 配置文件启用密码登录,即使密码包含密钥,它也会在我的笔记本电脑上询问我密码,对吗?

有没有什么办法可以阻止这种行为?

谢谢。

答案1

使用两个私钥

使用相同的流程设置您的工作站(但不是使用与设置笔记本电脑时相同的私钥:

  • 从其他机器复制私钥永远是没有充分理由的。如果您尚未在工作站上生成新的私钥,请立即生成。还要生成相应的公钥。在工作站的终端中,

类型:ssh-keygen -t rsa

  • 将工作站的公钥复制到服务器。在工作站的终端中,

类型:ssh-copy-id [email protected]

(但使用您的实际用户名和主机名,然后在要求输入密码时输入您的密码)。

这会将您的工作站的公钥安装到~/.ssh/authorized_keys服务器上该用户的文件中。

  • 没有第 3 步。从现在开始,您可以从工作站登录服务器,并且您从未从笔记本电脑复制过笔记本电脑的秘密私钥。

细节

我认为你真正想问的是

  • 我有一台 Ubuntu 服务器(“家”)
  • 我从我的个人笔记本电脑登录到我的 Ubuntu 服务器
  • 我还从我的工作计算机(“工作站”)登录到我的 Ubuntu 服务器。

正确的做法是什么?

  • 我想我可以用相同的密码在两个地方登录。但那可能不是正确的方法,因为每个人都说公钥认证比密码好得多。(A)
  • 我想我可以直接将私钥从笔记本电脑复制到工作站。但这不是正确的方法,因为每个人都说私钥永远不应该离开客户端计算机。

人们已经深知,服务器上的一个帐户只有一个用户名,当然还有一个授权密码。

ssh 之类的公钥系统比密码系统更好:服务器上的一个帐户只有一个用户名,任意数量的授权公钥,所有这些都列在~/.ssh/authorized_keys文件中。

更多细节)。

答案2

即使密码和基于密钥的方法都可用,也可以强制您的笔记本电脑使用密钥文件。如果您当前正在连接,请编辑并添加:ssh [email protected] -p 22~/.ssh/config

Host your.host.tld
    PreferredAuthentications publickey

此配置文件可用于让您输入更少的文字:

Host home
    Hostname your.host.tld
    User user
    PreferredAuthentications publickey
    Port 22

有了该配置,您只需要ssh home

可以将基于密码的登录限制到某个 IP 地址。在 中/etc/ssh/sshd_config,您将有一行禁用基于密码的身份验证:PasswordAuthentication no。要为来自特定 IP 的登录启用它,您可以使用:

Match Address 12.34.56.78
    PasswordAuthentication yes

我建议你使用基于密钥的身份验证,即使是在工作中。它比基于密码的身份验证更安全,因为它不容易被暴力破解。你可以为同一个帐户拥有多个密钥,这应该不是问题。

有关更多花哨的配置指令,请参阅ssh_配置(5). (对于服务器端,请参阅sshd_配置(5)

答案3

不,至少按照我的配置,如果您启用密码验证,则只有在您没有密钥的情况下才会提示输入密码。

话虽如此——我永远不会在暴露在互联网上的服务器上启用密码验证。

相关内容