+7 (7232) 91-95-12

帮助

使用 SSH 密钥进行连接

使用 SSH 密钥访问服务器可以提高安全性(降低账户被破解的风险)并增加便利性(连接时无需每次输入密码)。

配置密钥认证的过程包括在本地计算机上创建密钥,然后将其复制到服务器。

在创建新的 VDS 或重装系统时,也可以通过管理面板完成密钥向服务器的传输。此外,密钥可以存储在管理面板中,以便后续创建服务器时使用。

Linux, MacOS, Windows 10

创建 SSH 密钥

此过程适用于 LinuxMacOS 以及 1809 版本及以上的 Windows 10,因为它们内置了 SSH 客户端。对于较早版本的 Windows,请参考“旧版 Windows(不含 OpenSSH)”指令。

在您的计算机上启动终端或 Windows PowerShell 并执行命令:

ssh-keygen

您将看到以下消息:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):

只需按下 Enter 键 —— 密钥将保存到显示的默认目录中。

接着系统会提示您为密钥设置密码(密码短语)。您可以设置密码,也可以直接按 Enter 键留空。请注意,如果设置了密码短语,则每次使用密钥登录时都需要输入该密码。

密钥创建程序已完成,密钥保存在 ~/.ssh/ 目录中,文件名为 id_rsaid_rsa.pub。现在需要将公钥复制到服务器。

将密钥复制到服务器

在终端执行以下命令,将 user 替换为服务器上的用户名,将 server 替换为服务器的 IP 地址:

ssh-copy-id user@server
# 示例:ssh-copy-id admin@2.59.43.145

公钥文件 id_rsa.pub 的内容将被复制到服务器上的 ~/.ssh/authorized_keys 文件中。之后,您可以使用以下命令连接服务器:

ssh user@server
# 示例:ssh admin@2.59.43.145

旧版 Windows(不含 OpenSSH)

如果您使用的是不含 OpenSSH 的旧版本 Windows,则需要 PuTTYgen 程序。您可以从 PuTTY 官方网站 下载它。

使用 PuTTYgen 创建 SSH 密钥

  1. 启动程序,在“Type of key to generate”部分选择 RSA 类型,然后点击“Generate”。
  2. 在窗口内随机移动鼠标以生成随机数据。
  3. 密钥生成后,您可以设置“Key passphrase”(密钥密码)。这是可选的,您可以留空。如果您设置了密码,每次使用密钥登录时都会被要求输入。
  4. 点击“Save public key”和“Save private key”保存生成的密钥,建议命名为 id_rsa.pubmykey.ppk
  5. 同时复制“Public key for pasting…”窗口中的内容并将其保存在文本文件中。在将密钥复制到服务器时会用到它。

至此,密钥创建程序完成。

使用 Pageant 将密钥复制到服务器

复制密钥需要用到 Pageant。您可以从 PuTTY 官方网站 下载它。

  1. 通过 SSH 连接到服务器,执行以下命令在服务器上创建存储密钥的目录和文件:
mkdir ~/.ssh
chmod 0700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 0644 ~/.ssh/authorized_keys
  1. 使用文本编辑器打开 ~/.ssh/authorized_keys 文件:
nano ~/.ssh/authorized_keys
  1. 将您之前从 PuTTYgen 复制的公钥内容粘贴到文件中并保存。
  2. 启动 Pageant —— 其图标将出现在系统托盘中。右键点击并选择“Add Key”。
  3. 在打开的窗口中,指定您之前保存的私钥 mykey.ppk 的路径,然后点击“Open”。如果您在创建密钥时设置了密码,Pageant 会在此步骤要求输入。
  4. 要检查密钥认证是否正常工作,请再次运行 PuTTY,连接到服务器并输入您的用户名。如果一切配置正确,您将在控制台窗口看到类似的消息:
Authenticating with public key "rsa-key-20151220" from agent

禁用密码访问

为了允许仅通过密钥访问服务器,您必须禁用密码认证。为此,请修改 /etc/ssh/sshd_config 文件。

  1. 使用以下命令打开文件:
sudo nano /etc/ssh/sshd_config
  1. 找到 PasswordAuthentication 行并将其更改为:PasswordAuthentication no
  2. 保存更改并重启 SSH 服务:
sudo service ssh restart

如果执行这些操作后仍提示输入密码,请检查 /etc/ssh/sshd_config.d/ 目录中是否存在包含 PasswordAuthentication yes 指令的 50-cloud-init.conf 文件。如果该文件存在,请将其删除并重启 SSH 服务。

如有任何疑问,请联系我们