要配置 Ubuntu 的 SSH 服务以允许远程连接,并支持使用密钥认证,您需要修改 SSH 的配置文件。以下是详细步骤:

1. 安装 OpenSSH Server(如果还未安装)

首先确保您已经安装了 OpenSSH Server:

sudo apt update
sudo apt install openssh-server

2. 编辑 SSH 配置文件

SSH 配置文件位于 /etc/ssh/sshd_config。使用文本编辑器vim、nano打开这个文件,例如 nano

sudo nano /etc/ssh/sshd_config
或
sudo vim /etc/ssh/sshd_config  #打开文件编辑后按i进入编辑,ESC退出编辑

3. 修改配置文件

在文件中,您可以进行以下修改:

  1. 允许使用密钥认证: 确保以下行是启用的(没有被注释掉,即没有 # 符号):

    PubkeyAuthentication yes
  2. 禁用密码认证(可选): 如果您希望只通过密钥连接(增加安全性),可以禁用密码认证,找到并修改以下行:

    PasswordAuthentication no

    如果您仍希望保留密码认证,可以跳过此步骤。

  3. 允许根用户通过 SSH 登录(如果需要): 如果您希望根用户能够通过 SSH 登录,请确保以下行设置为 yes,但是出于安全原因,不建议这样做:

    PermitRootLogin yes

    更安全的方法是使用普通用户和 sudo 来执行需要的命令。

  4. 设置 SSH 服务的端口(可选): 如果您希望更改默认端口(22),可以修改以下行:

    Port 22

    请记得在防火墙中相应地允许新端口。

4. 保存并关闭文件

nano 中,按 CTRL + O 保存文件,然后按 CTRL + X 退出。

vim中按ESC退出编辑,然后按shift+: 然后输入wq保存退出

5. SSH 服务相关命令

修改完配置文件后,您需要重新启动 SSH 服务以使更改生效:

sudo systemctl restart ssh #重启ssh服务
sudo systemctl enable ssh  #设置ssh服务开机自启动
sudo systemctl status ssh  #查看ssh服务状态

6. 生成 SSH 密钥对

在客户端计算机上(即您将用来连接的计算机),生成 SSH 密钥对(如果您还没有密钥对):

ssh-keygen

默认情况下,它会在 ~/.ssh/id_rsa~/.ssh/id_rsa.pub 中生成密钥。您可以按 Enter 继续,接受默认设置。

7. 将公钥复制到服务器

使用 ssh-copy-id 将公钥复制到远程服务器。替换 usernamehostname

ssh-copy-id username@hostname

系统将提示您输入密码,以便将公钥添加到远程服务器的 ~/.ssh/authorized_keys 文件中。

也可以手动替换,将生成的公钥添加到要连接的服务器的~/.ssh/authorized_keys 文件中。

8. 测试 SSH 连接

在客户端计算机上,您现在可以测试 SSH 连接,使用密钥进行身份验证:

ssh username@hostname

如果您禁用了密码认证,您应该能够通过密钥连接而不需要输入密码。