每个想要访问的客户端是否都需要保存一个公钥?

每个想要访问的客户端是否都需要保存一个公钥?

如果我创建了 SSH 密钥对,我是否只能通过拥有公钥的客户端计算机登录?例如,如果我想使用图书馆的计算机或朋友的计算机,我可以这样做吗?

第 2 部分:是否可以启用密码验证和 SSH 密钥,但仅使用一个密钥登录?这会违背拥有密钥的目的吗?

答案1

您需要使用每个要用于 ssh 访问的客户端来访问私钥。

我个人在闪存驱动器上使用 PuTTY,因为 Putty 是跨平台的。您需要将 openssh 密钥导入 PuTTY keygen。

http://www.putty.org/

作为替代方案,您可以使用无需密钥(密码、kerberos、基于主机的身份验证)的 ssh 访问。

因此,如果您使用密钥,ssh 将首先尝试使用密钥。如果没有密钥,它将回退到密码身份验证,除非您在 sshd_config 中禁用了密码身份验证。

如果您制作了密钥,您仍然可以使用密码或任何其他方法登录。

通过 sshd_config 配置登录 - 参见 man sshd -https://help.ubuntu.com/community/SSH/OpenSSH/Configuring

答案2

这取决于您如何配置/etc/ssh/sshd_config文件。如果您仍然允许仅使用密码验证登录,则您不需要在要登录的每台计算机上都使用密钥。

该文件中的以下行将停止任何常规密码登录:

PasswordAuthentication  no

此行默认设置为是。

您可以创建一个没有关联密码的 ssh 密钥对(在生成过程中留空),然后提供正确公钥的用户名将能够无需密码登录,但您的密码登录仍然有效。

允许密码登录不会违背密钥的初衷,但会给攻击者留下更多选择,比如暴力破解您的密码。如果您使用强密码和非标准用户名(不是 root、admin 或 user),则可以降低这种风险。

我非常赞成不要打开 PC 后面的路由器上的端口 22,而是将非标准端口转发或 NAT 到 PC 的 ssh 端口。然后,当您登录时,您将使用:

ssh -p<port-number> user@ip_address

以下是如果您要向世界开放您的端口,这里有一个关于 ssh-hardening 的好链接!

相关内容