跳转至

2 ubuntu 配置ssh密钥登录

为了配置 Ubuntu 使用 SSH 密钥进行登录,请按照以下详细步骤进行操作。这种方法比使用密码登录更加安全。

步骤 1: 安装 SSH 服务器(如果尚未安装)

首先,确保你的 Ubuntu 系统上已经安装了 OpenSSH 服务器:

sudo apt update
sudo apt install openssh-server

然后启动 SSH 服务并设置为开机自动启动:

sudo systemctl enable ssh
sudo systemctl start ssh

步骤 2: 生成 SSH 密钥对

在客户端机器(即你用来登录的机器)上,生成 SSH 密钥对。打开终端并运行以下命令:

ssh-keygen -t rsa -b 4096

此命令将生成一个 4096 位的 RSA 密钥对。按提示操作:

  1. 输入保存密钥的位置,默认是 ~/.ssh/id_rsa。如果你想使用默认位置,直接按 Enter 键即可。
  2. 然后系统会提示你输入密码短语(可选)。如果你不想使用密码短语,可以直接按 Enter 键跳过。如果设置了密码短语,每次使用密钥时都需要输入它。

步骤 3: 将公钥复制到服务器

生成密钥对后,你需要将 公钥 复制到目标 Ubuntu 服务器的 ~/.ssh/authorized_keys 文件中。你可以手动复制,也可以使用 ssh-copy-id 命令自动复制。

使用 ssh-copy-id 自动复制公钥

运行以下命令,将公钥复制到服务器(假设你的服务器 IP 地址是 server_ip,用户名是 username):

ssh-copy-id username@server_ip

系统会提示你输入远程用户的密码。输入密码后,公钥会被复制到远程服务器的 ~/.ssh/authorized_keys 文件中。

手动复制公钥

如果 ssh-copy-id 不可用,或者你想手动复制公钥,你可以按以下步骤操作:

  1. 打开客户端机器上的公钥文件,默认路径是 ~/.ssh/id_rsa.pub,使用以下命令查看公钥内容:
cat ~/.ssh/id_rsa.pub

复制输出的公钥内容。

  1. 登录到远程服务器:
ssh username@server_ip
  1. 在服务器上创建 .ssh 目录(如果它不存在):
mkdir -p ~/.ssh
  1. 将公钥粘贴到 ~/.ssh/authorized_keys 文件中:
nano ~/.ssh/authorized_keys

将从客户端复制的公钥粘贴到文件中,保存并退出。

  1. 确保 ~/.ssh 目录和 ~/.ssh/authorized_keys 文件的权限设置正确。执行以下命令来设置适当的权限:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

步骤 4: 禁用密码登录(可选,但建议)

为了提高安全性,建议禁用密码登录,只允许使用 SSH 密钥登录。你可以在服务器上配置 /etc/ssh/sshd_config 文件来禁用密码认证。

  1. 编辑 SSH 配置文件:
sudo nano /etc/ssh/sshd_config
  1. 查找以下选项并修改它们:
PasswordAuthentication no
ChallengeResponseAuthentication no

如果这些行前面有 #,请去掉 # 注释符号,确保它们被启用。

  1. 保存文件并退出编辑器。

  2. 重启 SSH 服务以应用更改:

sudo systemctl restart ssh

步骤 5: 测试 SSH 密钥登录

现在你应该能够使用 SSH 密钥登录到远程服务器。打开客户端机器的终端,运行以下命令:

ssh username@server_ip

如果一切配置正确,系统会通过你的密钥进行认证,而不再要求输入密码。

步骤 6: 备份私钥

非常重要! 由于 SSH 私钥对安全性至关重要,请确保将私钥(id_rsa 文件)备份并妥善保管。不要与任何人共享你的私钥文件。

总结

通过以上步骤,你已经成功配置了 Ubuntu 使用 SSH 密钥进行登录。此方法提高了安全性,因为它避免了使用易于猜测的密码,而依赖于加密的密钥对来验证身份。如果你禁用了密码登录,只有拥有正确私钥的用户才能登录到服务器。