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 密钥对。按提示操作:
- 输入保存密钥的位置,默认是
~/.ssh/id_rsa。如果你想使用默认位置,直接按 Enter 键即可。 - 然后系统会提示你输入密码短语(可选)。如果你不想使用密码短语,可以直接按 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 不可用,或者你想手动复制公钥,你可以按以下步骤操作:
- 打开客户端机器上的公钥文件,默认路径是
~/.ssh/id_rsa.pub,使用以下命令查看公钥内容:
cat ~/.ssh/id_rsa.pub
复制输出的公钥内容。
- 登录到远程服务器:
ssh username@server_ip
- 在服务器上创建
.ssh目录(如果它不存在):
mkdir -p ~/.ssh
- 将公钥粘贴到
~/.ssh/authorized_keys文件中:
nano ~/.ssh/authorized_keys
将从客户端复制的公钥粘贴到文件中,保存并退出。
- 确保
~/.ssh目录和~/.ssh/authorized_keys文件的权限设置正确。执行以下命令来设置适当的权限:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
步骤 4: 禁用密码登录(可选,但建议)
为了提高安全性,建议禁用密码登录,只允许使用 SSH 密钥登录。你可以在服务器上配置 /etc/ssh/sshd_config 文件来禁用密码认证。
- 编辑 SSH 配置文件:
sudo nano /etc/ssh/sshd_config
- 查找以下选项并修改它们:
PasswordAuthentication no
ChallengeResponseAuthentication no
如果这些行前面有 #,请去掉 # 注释符号,确保它们被启用。
-
保存文件并退出编辑器。
-
重启 SSH 服务以应用更改:
sudo systemctl restart ssh
步骤 5: 测试 SSH 密钥登录
现在你应该能够使用 SSH 密钥登录到远程服务器。打开客户端机器的终端,运行以下命令:
ssh username@server_ip
如果一切配置正确,系统会通过你的密钥进行认证,而不再要求输入密码。
步骤 6: 备份私钥
非常重要! 由于 SSH 私钥对安全性至关重要,请确保将私钥(id_rsa 文件)备份并妥善保管。不要与任何人共享你的私钥文件。
总结
通过以上步骤,你已经成功配置了 Ubuntu 使用 SSH 密钥进行登录。此方法提高了安全性,因为它避免了使用易于猜测的密码,而依赖于加密的密钥对来验证身份。如果你禁用了密码登录,只有拥有正确私钥的用户才能登录到服务器。