我家里有一台 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
不,至少按照我的配置,如果您启用密码验证,则只有在您没有密钥的情况下才会提示输入密码。
话虽如此——我永远不会在暴露在互联网上的服务器上启用密码验证。