请仔细按照每个步骤在 Ubuntu 16.04 服务器上设置基于 SSH 密钥的身份验证。
在本地计算机上运行以下命令以生成 2048 位 RSA 密钥对(使用-b 4096可生成更强的 4096 位密钥):
$ ssh-keygen当系统提示输入文件路径时,按Enter 键接受默认值( ~/.ssh/id_rsa )。您也可以选择设置密码短语以增加一层安全保障。
创建两个文件: ~/.ssh/id_rsa (私钥 - 务必保密)和~/.ssh/id_rsa.pub (公钥 - 放在服务器上)。
方法 1 — ssh-copy-id(推荐):
$ ssh-copy-id username@remote_host出现提示时请输入密码。公钥将添加到服务器上的~/.ssh/authorized_keys文件中。
方法二——通过 SSH 管道:
cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"方法 3 — 手动:使用cat ~/.ssh/id_rsa.pub显示您的公钥,然后将其输出附加到远程服务器上的~/.ssh/authorized_keys 。
通过连接到您的服务器来测试基于密钥的身份验证是否有效:
$ ssh username@remote_host如果您在步骤 1 中设置了密码,系统会提示您输入密码。如果您没有设置密码,则会立即登录,无需输入密码。
确认密钥登录有效后,即可禁用密码验证,以增强服务器抵御暴力破解攻击的能力。打开 SSH 守护进程配置:
sudo nano /etc/ssh/sshd_config找到PasswordAuthentication ,如果需要,取消注释该行,并将其值设置为no :
PasswordAuthentication no保存文件(按Ctrl+X ,然后按Y ,再按Enter ),然后重启SSH:
$ sudo systemctl restart ssh打开一个新的终端,并在关闭当前会话之前确认是否可以连接。
关于在 Ubuntu 上设置 SSH 密钥身份验证的常见问题。
公钥( id_rsa.pub ) 存放在您想要访问的服务器上——可以安全地共享。私钥( id_rsa ) 保存在您的本地计算机上,绝对不能共享。这两个密钥协同工作,无需密码即可验证您的身份。
是的,强烈建议设置密码短语。这可以增加一层额外的保护,即使您的私钥文件被盗,也没有密码短语就无法使用。使用ssh-agent缓存密码短语,这样您就无需每次都输入。
如果在确认密钥有效之前禁用密码验证,您可能会失去访问权限。请务必打开一个新的终端并测试您的 SSH 密钥登录,然后再关闭当前会话。如果您被锁定,则需要通过控制台(例如通过服务器提供商的 Web 控制面板)重新启用密码验证。
是的。Ubuntu 18.04、20.04、22.04 及更高版本的步骤和命令都相同。唯一的区别可能是 SSH 服务名称——如果ssh无法工作,请使用sudo systemctl restart sshd 。