474 字
2 分钟
设置SSH使用密钥登录
什么是SSH密钥登录
SSH密钥登录是一种更安全的服务器登录方式,使用密钥文件代替密码登录,避免密码被破解的风险。
为什么要使用密钥登录
- 更安全:不用担心密码被暴力破解
- 更方便:配置后无需输入密码即可登录
- 适合脚本:自动化部署时不需要交互输入密码
第一步:生成密钥对
在客户端(你的电脑)上生成密钥:
# 生成密钥对(推荐使用ED25519)ssh-keygen -t ed25519 -C "your_email@example.com"
执行后按提示操作:
- 密钥保存位置:直接回车使用默认位置
- 密钥密码:可以设置密码,也可以直接回车跳过
第二步:复制公钥到服务器
方法一:自动复制(推荐)
# 将公钥复制到服务器ssh-copy-id username@server_ip
方法二:手动复制
- 查看并复制公钥内容:
cat ~/.ssh/id_ed25519.pub
- 登录服务器:
ssh username@server_ip
- 在服务器上创建目录和文件:
mkdir -p ~/.sshchmod 700 ~/.sshtouch ~/.ssh/authorized_keyschmod 600 ~/.ssh/authorized_keys
- 将公钥内容添加到文件中:
# 将公钥内容追加到authorized_keys文件(替换YOUR_PUBLIC_KEY为实际的公钥内容)echo "YOUR_PUBLIC_KEY" >> ~/.ssh/authorized_keys
第三步:测试密钥登录
# 测试登录ssh username@server_ip
如果能够免密码登录,说明配置成功!
第四步:禁用密码登录(可选)
为了提高安全性,可以禁用密码登录:
# 禁用密码登录sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_configsudo sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
# 启用密钥登录sudo sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/' /etc/ssh/sshd_configsudo sed -i 's/PubkeyAuthentication no/PubkeyAuthentication yes/' /etc/ssh/sshd_config
重启SSH服务:
sudo systemctl restart sshd
简单的客户端配置
创建SSH配置文件方便管理:
# 一键创建SSH配置文件cat << EOF >> ~/.ssh/configHost myserver HostName 192.168.1.100 User username IdentityFile ~/.ssh/id_ed25519EOF
# 设置配置文件权限chmod 600 ~/.ssh/config
配置后可以直接使用:
ssh myserver