如何在Linux上配置SSH密钥以实现免密登录

在Linux环境中,SSH(Secure Shell)是一种常用的远程登录协议,它提供了安全加密的通信通道。传统的SSH登录方式需要输入密码,这在频繁操作或自动化脚本执行时显得繁琐且不安全。为了解决这个问题,SSH密钥认证成为了一种更便捷且安全的选择。本文将详细介绍如何在Linux上配置SSH密钥,以实现免密登录。

一、生成SSH密钥对
  1. 打开终端 :

    首先,在你的Linux系统上打开终端。

  2. 生成密钥对 :

    使用ssh-keygen命令生成SSH密钥对。默认情况下,它会在用户的~/.ssh目录下生成一个id_rsa(私钥)和一个id_rsa.pub(公钥)文件。

    复制代码

    bash

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

    这里,-t rsa指定了密钥类型为RSA,-b 4096指定了密钥长度为4096位,-C选项后面跟的是你的注释信息,通常是你的邮箱地址。

  3. 保存密钥文件 :

    系统会提示你输入保存密钥文件的位置和密码短语(可选)。如果你不想设置密码短语,可以直接按回车跳过。但请注意,设置密码短语可以增加私钥的安全性。

二、将公钥复制到远程服务器
  1. 查看公钥内容 :

    使用cat命令查看生成的公钥内容。

    复制代码

    bash

    |---|-------------------------|
    | | cat ~/.ssh/id_rsa.pub |

  2. 复制公钥到远程服务器 :

    使用ssh-copy-id命令将公钥复制到远程服务器的~/.ssh/authorized_keys文件中。如果该文件不存在,ssh-copy-id会自动创建它。

    复制代码

    bash

    |---|--------------------------------|
    | | ssh-copy-id user@remote_host |

    这里,user是远程服务器上的用户名,remote_host是远程服务器的地址。

  3. 验证配置 :

    现在,你可以尝试使用SSH登录远程服务器,而不需要输入密码。

    复制代码

    bash

    |---|------------------------|
    | | ssh user@remote_host |

三、配置SSH客户端和服务器(可选)
  1. 编辑SSH客户端配置文件 :

    在本地Linux系统上,你可以编辑~/.ssh/config文件来配置SSH客户端的行为。例如,你可以为特定的远程主机设置别名、端口号、使用的密钥文件等。

    复制代码

    bash

    |---|----------------------------------|
    | | Host alias_name |
    | | HostName remote_host |
    | | User user |
    | | IdentityFile ~/.ssh/custom_key |

  2. 编辑SSH服务器配置文件 :

    在远程服务器上,你可以编辑/etc/ssh/sshd_config文件来配置SSH服务器的行为。例如,你可以禁用密码认证、设置允许的最大连接数、限制允许的密钥类型等。

    复制代码

    bash

    |---|-----------------------------------|
    | | # 禁用密码认证 |
    | | PasswordAuthentication no |
    | | |
    | | # 设置允许的密钥类型 |
    | | PubkeyAcceptedKeyTypes +ssh-rsa |

    修改配置文件后,需要重启SSH服务以使更改生效。

    复制代码

    bash

    |---|-------------------------------|
    | | sudo systemctl restart sshd |

四、注意事项
  1. 保护私钥 :

    私钥文件(id_rsa)应妥善保管,不要将其泄露给未经授权的人员。如果私钥丢失或泄露,应立即重新生成密钥对并更新远程服务器上的公钥。

  2. 权限设置 :

    确保~/.ssh目录和其中的文件具有正确的权限设置。通常,~/.ssh目录的权限应为700,私钥文件的权限应为600。

    复制代码

    bash

    |---|---------------------------|
    | | chmod 700 ~/.ssh |
    | | chmod 600 ~/.ssh/id_rsa |

  3. 备份密钥 :

    定期备份你的密钥文件,以防丢失或损坏。你可以将私钥文件复制到安全的存储位置或使用密码管理器进行保存。

五、总结

通过在Linux上配置SSH密钥认证,你可以实现免密登录,从而简化远程操作并提高安全性。本文详细介绍了生成SSH密钥对、将公钥复制到远程服务器以及配置SSH客户端和服务器的步骤。希望这些内容能够帮助你更好地理解和使用SSH密钥认证。

相关推荐
星创易联6 小时前
PLC数据采集与远程运维平台:从边缘计算到集中监控
大数据·运维·边缘计算
默|笙6 小时前
【Linux网络】_udp_socket(认识)
linux·网络·udp
寻道模式7 小时前
【运维心得】完整教程:绕过Win11限制让老机焕发新生
运维·操作系统·win11
程序员梅雨7 小时前
ZooKeeper面经总结
java·大数据·linux·分布式·后端·zookeeper·中间件
zzu123zsw7 小时前
从 proxy_pass 末尾斜杠到 WebAssembly 预压缩:深挖 Nginx 生产环境四大高频踩坑点
运维·nginx·wasm·webassembly·devops·运维排错
lingran__7 小时前
Linux进程万字详解(二)|进程状态深度剖析:调度队列、内核链表、D状态设计哲学、僵尸孤儿进程与Slab机制
linux·进程管理·内核链表·pcb·僵尸进程·孤儿进程·进程状态
张洛闻Eren7 小时前
Ansible【第一课】:Ansible介绍
运维·数据库·云原生·kubernetes·github·ansible
GeW8 小时前
以Linux为基、数据库为核:新质生产力路线图下的企业架构升级
linux
郝亚军8 小时前
RK3562 中有 mosquitto、nginx 了,还需要 http,ftp,tftp 等协议吗?
运维·nginx·http
忆挽篱笙歌8 小时前
进程的状态
linux·ubuntu