请仔细按照每个步骤在 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 密钥身份验证的常见问题。