配置 SSH 免密登录教程

0 阅读2分钟

要配置 SSH 免密登录(即使用 SSH 密钥认证),可以按照以下步骤操作:


假设环境

  • 本地主机(Client) :你当前使用的电脑
  • 远程服务器(Server) :你要免密登录的目标机器
  • 用户名user
  • 服务器 IP192.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 不可用,可以手动操作:

  1. 查看公钥

    cat ~/.ssh/id_rsa.pub
    

    输出类似:

    ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA7... your_email@example.com
    
  2. 登录远程服务器

    ssh user@192.168.1.100
    

    然后输入密码登录。

  3. 添加公钥到远程服务器的 ~/.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 免密登录就配置好了!如果遇到问题,可以评论区或者私信告诉我你的错误信息,我会一一帮你解答!