下面以 Ubuntu 服务器端 + 客户端(Linux / macOS / WSL) 为例,说明如何配置 SSH 密钥登录。Windows 用户可用 PowerShell / Git Bash 操作,步骤基本一致。
在**你自己的电脑(客户端)**执行:
ssh-keygen -t ed25519 -C "your_email@example.com"
如果系统较老不支持
ed25519,可用:ssh-keygen -t rsa -b 4096
按提示操作:
~/.ssh/id_ed25519生成后会有两个文件:
id_ed25519(私钥,不要泄露)id_ed25519.pub(公钥)ssh-copy-id username@server_ip
示例:
ssh-copy-id ubuntu@192.168.1.100
输入一次服务器密码后,公钥会自动写入:
~/.ssh/authorized_keys
在客户端查看公钥:
cat ~/.ssh/id_ed25519.pub
在服务器上执行:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
粘贴公钥内容,然后:
chmod 600 ~/.ssh/authorized_keys
在客户端执行:
ssh username@server_ip
如果配置正确,将不再需要输入服务器密码(除非设置了 passphrase)。
编辑服务器 SSH 配置:
sudo nano /etc/ssh/sshd_config
修改或确认以下配置:
PubkeyAuthentication yes
PasswordAuthentication no
重启 SSH 服务:
sudo systemctl restart ssh
⚠️ 确保密钥登录成功后再禁用密码,否则可能锁死服务器。
服务器上权限必须正确:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
检查:
sudo tail -f /var/log/auth.log
ssh -p 2222 username@server_ip
客户端编辑:
nano ~/.ssh/config
示例:
Host myserver
HostName 192.168.1.100
User ubuntu
Port 22
IdentityFile ~/.ssh/id_ed25519
以后直接:
ssh myserver
如果你需要:
可以告诉我你的具体使用场景。