Servers in stock
 Checking availability...
50% off 1st month on Instant Servers - code 50OFF +1-646-490-9655
Build your server
Ubuntu 16.04 • SSH 密钥认证教程

如何在 Ubuntu 16.04 上设置 SSH 密钥

按照以下步骤在 Ubuntu 服务器上配置基于 SSH 密钥的身份验证。无需密码即可安全登录,还可以选择完全禁用密码身份验证。

Ubuntu 16.04四步指南7x24 小时在线支持

分步指南

请仔细按照每个步骤在 Ubuntu 16.04 服务器上设置基于 SSH 密钥的身份验证。

1

创建 RSA 密钥对

在本地计算机上运行以下命令以生成 2048 位 RSA 密钥对(使用-b 4096可生成更强的 4096 位密钥):

 $ ssh-keygen

当系统提示输入文件路径时,按Enter 键接受默认值( ~/.ssh/id_rsa )。您也可以选择设置密码短语以增加一层安全保障。

创建两个文件: ~/.ssh/id_rsa (私钥 - 务必保密)和~/.ssh/id_rsa.pub (公钥 - 放在服务器上)。

2

将公钥复制到您的 Ubuntu 服务器

方法 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

3

使用 SSH 密钥进行身份验证

通过连接到您的服务器来测试基于密钥的身份验证是否有效:

 $ ssh username@remote_host

如果您在步骤 1 中设置了密码,系统会提示您输入密码。如果您没有设置密码,则会立即登录,无需输入密码。

4

禁用密码验证(可选)

确认密钥登录有效后,即可禁用密码验证,以增强服务器抵御暴力破解攻击的能力。打开 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 16.04以外的其他版本吗?

是的。Ubuntu 18.04、20.04、22.04 及更高版本的步骤和命令都相同。唯一的区别可能是 SSH 服务名称——如果ssh无法工作,请使用sudo systemctl restart sshd

需要一台服务器来部署吗?

我们的专用服务器和 VPS 服务器方案均提供完整的 root 访问权限、SSD 存储和 24/7 全天候专家支持,助您快速启动并运行。