温馨提示×

ubuntu ssh如何免密

小樊
38
2026-09-16 05:09:46
栏目: 智能运维

在 Ubuntu 上实现 SSH 免密登录,核心思路是:把本地的公钥放到服务器的 ~/.ssh/authorized_keys

下面是最常用、最标准的做法。


一、在本地机器生成密钥(如果还没有)

ssh-keygen -t rsa -b 4096

一路回车即可,默认会生成:

  • ~/.ssh/id_rsa(私钥)
  • ~/.ssh/id_rsa.pub(公钥)

二、把公钥复制到 Ubuntu 服务器(推荐方式)

方法 1:使用 ssh-copy-id(最简单)

ssh-copy-id user@server_ip

示例:

ssh-copy-id ubuntu@192.168.1.100

输入一次密码后,以后就可以免密登录了。


方法 2:手动复制(没有 ssh-copy-id 时)

  1. 查看本地公钥
cat ~/.ssh/id_rsa.pub
  1. 登录服务器
ssh user@server_ip
  1. 在服务器上执行
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys

把公钥内容粘贴进去,然后:

chmod 600 ~/.ssh/authorized_keys

三、测试免密登录

ssh user@server_ip

如果不再提示输入密码,说明成功 ✅


四、常见问题排查

1. 还是提示输入密码

检查服务器 SSH 配置:

sudo nano /etc/ssh/sshd_config

确保以下项正确:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

修改后重启:

sudo systemctl restart ssh

2. 家目录权限问题

服务器上:

chmod 700 ~
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

3. 使用非默认端口

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

如果你愿意,可以告诉我:

  • 本地 → 云服务器 还是 两台 Ubuntu
  • 是否使用了 root / 非 root 用户
  • 是否 Docker / WSL

我可以给你更精确的命令。

0