在 Linux 系统中使用 SSH 密钥进行登录,可以让你免密登录到远程服务器,增加安全性。下面是配置 SSH 密钥登录的基本步骤:
1. 生成 SSH 密钥对
在ssh客户端,如果你还没有 SSH 密钥,可以使用 ssh-keygen 命令来生成一对公私钥。打开终端,执行以下命令:
ssh-keygen -t rsa -b 4096
-t rsa:指定密钥类型为 RSA。
-b 4096:指定密钥长度为 4096 位,可以提高安全性。
命令执行后,你将被提示输入保存路径(默认为 ~/.ssh/id_rsa)和设置一个密码(可以选择为空)。如果你选择不设置密码,可以直接按回车。
2. 将公钥复制到目标服务器
生成密钥对后,你需要将公钥(通常是 ~/.ssh/id_rsa.pub)复制到你希望 SSH 登录的远程服务器上。你可以使用 ssh-copy-id 命令来自动化这一过程:
ssh-copy-id user@remote_host
user:远程服务器的用户名。
remote_host:远程服务器的 IP 地址或域名。
执行后,你会被要求输入远程服务器的密码。该命令会将你的公钥添加到远程服务器上的 ~/.ssh/authorized_keys 文件中。
如果你无法使用 ssh-copy-id,也可以手动将公钥内容添加到远程服务器的 ~/.ssh/authorized_keys 文件中:
查看公钥内容:
cat ~/.ssh/id_rsa.pub
在远程服务器上,手动将公钥添加到 ~/.ssh/authorized_keys 文件:
ssh user@remote_host
mkdir -p ~/.ssh
echo "your_public_key" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
将 “your_public_key” 替换为你本地 id_rsa.pub 文件中的内容。
3. 修改 SSH 配置(可选)
确保远程服务器允许使用密钥认证。编辑远程服务器上的 SSH 配置文件 /etc/ssh/sshd_config,确保以下配置项被设置:
PubkeyAuthentication yes
PasswordAuthentication no
PubkeyAuthentication yes:允许公钥认证。
PasswordAuthentication no:禁止使用密码认证(提高安全性)。
4 授权
在在ssh服务器与客户端分别执行
服务端执行
chmod 700 -R .ssh
chmod 700 .ssh/authorized_keys
客户端执行
chmod 700 -R .ssh
chmod 700 .ssh/authorized_keys
chmod 700 .ssh/id_rsa
编辑完后,重启 SSH 服务:
sudo systemctl restart sshd
5. 使用 SSH 密钥登录
现在,你应该能够使用 SSH 密钥无密码登录到远程服务器了:
ssh user@remote_host
6. (可选)配置 SSH Agent
如果你设置了密钥密码,你可以使用 SSH Agent 来缓存密码,避免每次连接时都输入。
启动 SSH Agent:
eval $(ssh-agent -s)
添加密钥:
ssh-add ~/.ssh/id_rsa
这样,你就可以在每次连接时避免输入密码。
评论区