如何配置ssh密钥 免密码登录设置流程

配置 ssh 密钥实现免密码登录的答案是:1. 在本地使用 ssh-keygen 生成 rsa 密钥对,私钥保存在本地,公钥用于上传;2. 通过 ssh-copy-id、手动复制或 scp 方法将公钥添加到服务器的 ~/.ssh/authorized_keys 文件中;3. 确保服务器上 ~/.ssh 目录权限为 700,authorized_keys 文件权限为 600;4. 测试 ssh 登录是否无需密码;5. 可选配置 ~/.ssh/config 设置别名简化登录。整个过程完成后即可实现安全高效的免密登录,且必须确保每一步权限设置正确才能成功。

如何配置ssh密钥 免密码登录设置流程

配置 SSH 密钥实现免密码登录,是管理 linux 服务器时非常实用的基础技能。它不仅提升了登录效率,还增强了安全性(相比密码登录更难被暴力破解)。下面是完整的设置流程,适用于大多数 Linux、macos 系统,windows 用户可使用 WSL 或 git bash 操作。


一、生成 SSH 密钥对

本地机器(你的电脑)上生成公钥和私钥。

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  • -t rsa -b 4096

    :使用 RSA 算法,密钥长度为 4096 位,更安全。

  • -C

    后面是注释,通常是邮箱,用于标识密钥(可选但推荐)。

执行后会提示:

Enter file in which to save the key (/home/yourname/.ssh/id_rsa):  Enter passphrase (empty for no passphrase): 
  • 直接回车使用默认路径。
  • passphrase 可设置也可留空(留空则完全免密码,方便但安全性略低)。

生成后会在

~/.ssh/

目录下创建两个文件:

  • id_rsa

    :私钥(不要泄露

  • id_rsa.pub

    :公钥(要上传到服务器)


二、将公钥上传到目标服务器

有三种常用方法,任选其一。

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

ssh-copy-id username@server_ip
  • username

    是你在服务器上的用户名

  • server_ip

    是服务器 IP 地址

例如:

ssh-copy-id root@192.168.1.100

系统会提示输入密码,验证后自动将公钥追加到服务器的

~/.ssh/authorized_keys

文件中。

⚠️ 如果提示 ssh-copy-id: command not found,macos 用户可通过 brew install ssh-copy-id 安装,Linux 用户用包管理器安装(如 sudo apt install ssh-copy-id)。

方法2:手动复制公钥内容

  1. 查看本地公钥内容:
cat ~/.ssh/id_rsa.pub
  1. 复制输出的整段内容(以

    ssh-rsa AAAAB3Nza...

    开头,以邮箱结尾)。

  2. 登录服务器:

ssh username@server_ip
  1. 在服务器上创建
    .ssh

    目录(如不存在):

mkdir -p ~/.ssh
  1. 将公钥内容写入
    authorized_keys

echo "你复制的公钥内容" >> ~/.ssh/authorized_keys
  1. 设置正确权限(非常重要,否则 SSH 会拒绝密钥登录):
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys

方法3:通过 scp 传输再处理

scp ~/.ssh/id_rsa.pub username@server_ip:/tmp/id_rsa.pub

然后登录服务器,执行:

mkdir -p ~/.ssh cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys rm /tmp/id_rsa.pub

三、测试免密登录

退出服务器后,在本地尝试重新登录:

ssh username@server_ip

如果无需输入密码直接登录成功,说明配置成功。

如果仍需密码,请检查:

  • 服务器上
    ~/.ssh/authorized_keys

    文件权限是否为 600

  • .ssh

    目录权限是否为 700

  • SELinux 或防火墙是否阻止(较少见)
  • SSH 服务是否允许公钥认证(查看
    /etc/ssh/sshd_config

    PubkeyAuthentication yes


四、(可选)配置 SSH 别名简化登录

编辑本地的

~/.ssh/config

文件(不存在则创建):

Host myserver     HostName 192.168.1.100     User root     IdentityFile ~/.ssh/id_rsa

之后只需输入:

ssh myserver

即可快速登录。


基本上就这些。整个过程不复杂,关键点是公钥正确写入服务器的 authorized_keys 并设置好权限。一旦配置完成,你就可以告别重复输入密码的烦恼了。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享