在 Ubuntu 上实现 SSH 免密登录,核心思路是:把本地的公钥放到服务器的 ~/.ssh/authorized_keys 里。
下面是最常用、最标准的做法。
ssh-keygen -t rsa -b 4096
一路回车即可,默认会生成:
~/.ssh/id_rsa(私钥)~/.ssh/id_rsa.pub(公钥)ssh-copy-id(最简单)ssh-copy-id user@server_ip
示例:
ssh-copy-id ubuntu@192.168.1.100
输入一次密码后,以后就可以免密登录了。
cat ~/.ssh/id_rsa.pub
ssh user@server_ip
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
把公钥内容粘贴进去,然后:
chmod 600 ~/.ssh/authorized_keys
ssh user@server_ip
如果不再提示输入密码,说明成功 ✅
检查服务器 SSH 配置:
sudo nano /etc/ssh/sshd_config
确保以下项正确:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
修改后重启:
sudo systemctl restart ssh
服务器上:
chmod 700 ~
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
ssh-copy-id -p 2222 user@server_ip
ssh -p 2222 user@server_ip
确认免密可用后:
sudo nano /etc/ssh/sshd_config
PasswordAuthentication no
sudo systemctl restart ssh
如果你愿意,可以告诉我:
我可以给你更精确的命令。