信息发布→ 登录 注册 退出

怎样在Linux中配置SSH免密登录?ssh-keygen和authorized_keys设置步骤

发布时间:2025-07-04

点击量:

配置ssh免密登录的关键在于生成密钥对并将公钥添加到远程服务器的authorized_keys中,具体步骤如下:1. 在本地使用ssh-keygen命令生成4096位rsa密钥对,私钥保留本地,公钥用于上传;2. 通过ssh-copy-id命令或手动复制粘贴方式将公钥写入远程服务器的~/.ssh/authorized_keys文件,并确保目录和文件权限分别为700和600;3. 测试登录时若无需密码则表示成功,否则需检查公钥内容、权限设置、ssh服务配置及使用的私钥是否正确。

配置SSH免密登录其实并不难,关键在于理解公钥和私钥的配对机制。整个过程主要就是生成密钥对、把公钥放到目标服务器上、然后测试能不能顺利登录。下面分步骤说清楚怎么操作。


1. 在本地生成SSH密钥对

第一步是在你的本地机器上生成一对密钥:一个私钥(保留在你本地)、一个公钥(要传到远程服务器上)。

执行命令:

ssh-keygen -t rsa -b 4096

这个命令会生成RSA类型的密钥,长度为4096位,安全性更高。过程中会让你选择保存路径,默认是 ~/.ssh/id_rsa,直接回车就行;接着会让你设置密码(passphrase),如果你希望完全免密登录,这里可以直接回车跳过。

执行完成后,会在 .ssh 目录下生成两个文件:

  • id_rsa:私钥,不要泄露
  • id_rsa.pub:公钥,可以上传到服务器

2. 把公钥添加到远程服务器的authorized_keys中

这一步的核心是把本地的公钥内容写入到远程服务器用户家目录下的 .ssh/authorized_keys 文件里。

有几种方法可以实现:

方法一:使用 ssh-copy-id(推荐)

ssh-copy-id user@remote_host

替换 userremote_host 为你实际的用户名和IP地址或域名。这个命令会自动将公钥追加到远程主机的 ~/.ssh/authorized_keys 文件中。

方法二:手动复制粘贴

  1. 查看本地公钥内容:

    cat ~/.ssh/id_rsa.pub
  2. 登录远程服务器:

    ssh user@remote_host
  3. 编辑或创建 ~/.ssh/authorized_keys 文件,把刚才的公钥内容粘贴进去:

    echo "粘贴的内容" >> ~/.ssh/authorized_keys

注意权限问题:确保 .ssh 目录权限是 700authorized_keys 文件权限是 600,否则SSH可能拒绝使用它。

可以用这些命令修复权限:

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

3. 测试是否成功免密登录

退出当前的SSH连接,再重新尝试登录:

ssh user@remote_host

如果不需要输入密码就进去了,说明配置成功。

如果还是需要密码,检查以下几点:

  • 公钥是否正确写入了远程服务器的 authorized_keys
  • 权限设置是否正确
  • SSH服务是否允许公钥认证(一般默认没问题)
  • 是否用了正确的私钥(比如有多个密钥时)

基本上就这些步骤。看起来有点多,但每一步都不复杂,关键是细节别出错,比如权限和路径这些地方容易忽略。

标签:# linux  # copy  # ssh  # 公钥  # 是否正确  # 关键在于  # 会让你  # 器上  # 如果你  # 是在  # 都不  # 目录下  # 多个  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!