要配置 SSH 免密登录(即使用 SSH 密钥认证),可以按照以下步骤操作:
假设环境
- 本地主机(Client) :你当前使用的电脑
- 远程服务器(Server) :你要免密登录的目标机器
- 用户名:
user
- 服务器 IP:
192.168.1.100
步骤 1:在本地生成 SSH 密钥
在本地终端(Linux / Mac / WSL / Git Bash / PowerShell)执行:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
参数说明:
-t rsa
:生成 RSA 类型密钥(推荐)-b 4096
:密钥长度 4096 位(更安全)-C "your_email@example.com"
:添加注释,方便识别
生成后会有如下提示:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
直接回车,默认保存在 ~/.ssh/id_rsa
(私钥) 和 ~/.ssh/id_rsa.pub
(公钥)。
然后会让你输入 密码短语(passphrase) :
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
如果不想输入密码短语(免密),直接回车两次。
步骤 2:复制公钥到远程服务器
你可以用以下方法把 id_rsa.pub
复制到远程服务器:
方法 1:使用 ssh-copy-id
(推荐)
如果本地有 ssh-copy-id
,执行:
ssh-copy-id user@192.168.1.100
然后输入 远程服务器的密码,成功后会自动配置。
方法 2:手动复制公钥
如果 ssh-copy-id
不可用,可以手动操作:
-
查看公钥
cat ~/.ssh/id_rsa.pub
输出类似:
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA7... your_email@example.com
-
登录远程服务器
ssh user@192.168.1.100
然后输入密码登录。
-
添加公钥到远程服务器的
~/.ssh/authorized_keys
在远程服务器终端执行:mkdir -p ~/.ssh chmod 700 ~/.ssh echo "你的公钥内容" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
步骤 3:测试免密登录
在本地运行:
ssh user@192.168.1.100
如果不再要求输入密码,说明配置成功 🎉。
其他配置(可选)
1. 禁用密码登录(提高安全性)
如果免密登录成功,可以在 远程服务器 上编辑 SSH 配置文件:
sudo vim /etc/ssh/sshd_config
找到:
PasswordAuthentication yes
改为:
PasswordAuthentication no
然后重启 SSH 服务:
sudo systemctl restart sshd
(某些系统可能是 service ssh restart
)
⚠️ 注意:确保公钥登录正常工作后再禁用密码登录,否则可能会锁死自己!
2. 使用 config
文件简化 SSH 连接
如果你经常连接这台服务器,可以在 本地 配置 ~/.ssh/config
:
vim ~/.ssh/config
添加:
Host myserver
HostName 192.168.1.100
User user
IdentityFile ~/.ssh/id_rsa
以后只需要输入:
ssh myserver
即可连接 🎉。
这样,你的 SSH 免密登录就配置好了!如果遇到问题,可以评论区或者私信告诉我你的错误信息,我会一一帮你解答!