如果我创建了 SSH 密钥对,我是否只能通过拥有公钥的客户端计算机登录?例如,如果我想使用图书馆的计算机或朋友的计算机,我可以这样做吗?
第 2 部分:是否可以启用密码验证和 SSH 密钥,但仅使用一个密钥登录?这会违背拥有密钥的目的吗?
答案1
您需要使用每个要用于 ssh 访问的客户端来访问私钥。
我个人在闪存驱动器上使用 PuTTY,因为 Putty 是跨平台的。您需要将 openssh 密钥导入 PuTTY keygen。
作为替代方案,您可以使用无需密钥(密码、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 的好链接!