ubuntu服务器配置私钥登录

使用公钥和私钥登录 SSH 是一种比密码更安全、更便捷的身份验证方式。下面是为您整理的详细操作流程。

🔑 生成密钥对

首先,在您的本地计算机上生成一对密钥(公钥和私钥)。

  1. 打开终端,执行以下命令:

    bash 复制代码
    ssh-keygen -t rsa -b 4096
    • -t rsa 指定密钥类型为 RSA。
    • -b 4096 指定密钥长度为 4096 位,安全性更高。
  2. 系统会提示您:

    • Enter file in which to save the key:按回车键使用默认路径即可(通常是 ~/.ssh/id_rsa)。
    • Enter passphrase强烈建议为私钥设置一个"密码短语"。这能为私钥增加一层重要保护,即使私钥文件不慎泄露,对方也无法直接使用。

命令执行成功后,您会在 ~/.ssh/ 目录下得到两个文件:id_rsa(私钥)id_rsa.pub(公钥)。私钥是你的身份证明,必须妥善保管,绝不外传;公钥则可以放心地放到任何你需要登录的服务器上。

📤 将公钥上传至服务器

接下来,需要将公钥部署到您想登录的远程服务器上。

推荐使用 ssh-copy-id 命令,这是最简便的方法:

bash 复制代码
ssh-copy-id -i ~/.ssh/id_rsa.pub username@server_ip_address

系统会提示您输入一次服务器用户的密码,验证成功后公钥会自动追加到服务器对应用户家目录下的 ~/.ssh/authorized_keys 文件中。

如果无法使用 ssh-copy-id,可以手动复制:

  1. id_rsa.pub 文件内容拷贝到剪贴板。

  2. 登录服务器,编辑或创建 ~/.ssh/authorized_keys 文件。

  3. 将公钥内容粘贴到新的一行。

  4. 至关重要的一步 :设置正确的文件权限,否则 SSH 服务器会拒绝认可该密钥:

    bash 复制代码
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys

⚙️ 配置服务器 SSH

为使服务器接受密钥登录,需要确保其 SSH 服务配置正确。

  1. 编辑服务器上的 SSH 配置文件:

    bash 复制代码
    sudo nano /etc/ssh/sshd_config
  2. 确认或修改以下行,确保它们为 yes

    复制代码
    PubkeyAuthentication yes
    # RSAAuthentication yes  # 对于较新版本的 OpenSSH,通常不需要这一行
  3. (可选但强烈推荐)确认能通过密钥登录成功后 ,可以禁用密码登录以极大提升安全性:

    复制代码
    PasswordAuthentication no
  4. 保存文件后,重启 SSH 服务使配置生效:

    bash 复制代码
    sudo systemctl restart sshd

🖥️ 使用私钥登录

完成以上设置后,您就可以使用私钥登录了。

  • 在 Linux 或 macOS 上 :SSH 客户端通常会自动使用 ~/.ssh/id_rsa 这个默认私钥。只需直接连接即可,如果设置了密码短语,会提示您输入:

    bash 复制代码
    ssh username@server_ip_address
  • 如果需要指定其他私钥文件 ,使用 -i 参数:

    bash 复制代码
    ssh -i /path/to/your/private_key username@server_ip_address
  • 在 Windows 上 :使用 PuTTY 等工具时,需要用 PuTTYgen 工具将私钥转换为 .ppk 格式,然后在连接设置中指定该私钥文件。

🛡️ 增强安全性建议

为了进一步提升安全级别,可以考虑:

  • 禁用 root 用户直接通过 SSH 登录
    /etc/ssh/sshd_config 中设置:

    复制代码
    PermitRootLogin no
  • 考虑修改默认的 SSH 端口 :将 Port 22 改为一个非标准端口,可以减少自动化攻击脚本的骚扰。

  • 使用 Fail2ban 等工具:它可以自动屏蔽多次尝试登录失败的 IP 地址。

完成这些步骤后,您的 SSH 登录方式就变得更加安全可靠了。如果在配置过程中遇到任何问题,例如权限设置或配置文件修改,可以随时提问。

相关推荐
知识分享小能手9 小时前
Ubuntu入门学习教程,从入门到精通,Ubuntu 22.04 中的大数据 —— 知识点详解 (24)
大数据·学习·ubuntu
vortex59 小时前
Linux 用户组查询命令详解
linux·运维·服务器
小杜今天学AI了吗9 小时前
如何配置 linux 系统的conda 环境
linux·运维·conda
oMcLin9 小时前
如何在Ubuntu 22.04 LTS上通过配置ZFS存储池,提升高吞吐量数据库的读写性能与可靠性?
linux·数据库·ubuntu
这就是佬们吗9 小时前
告别 Node.js 版本冲突:NVM 安装与使用全攻略
java·linux·前端·windows·node.js·mac·web
christine-rr9 小时前
linux常用命令(9)——查看系统与硬件信息
linux·运维·服务器·网络·后端
阿豪学编程9 小时前
【Linux】线程同步和线程互斥
linux·开发语言
oMcLin9 小时前
如何在CentOS Stream 9上通过配置Hyper‑V虚拟化实现高效的资源隔离与虚拟机管理?
linux·运维·centos
liuyunshengsir9 小时前
Elasticsearch 高级查询must 多个条件同时满足
linux·服务器·elasticsearch