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 登录方式就变得更加安全可靠了。如果在配置过程中遇到任何问题,例如权限设置或配置文件修改,可以随时提问。

相关推荐
三十岁老牛再出发20 小时前
07.26每日总结
linux·c语言·mysql
爱写代码的阿森21 小时前
鸿蒙三方库 | harmony-utils之RegexUtil正则匹配验证详解
服务器·华为·harmonyos·鸿蒙·huawei
fengyehongWorld21 小时前
Linux update-alternatives命令
linux
雨的旋律209921 小时前
ubuntu2604
linux·运维·服务器
三言老师21 小时前
mkdir创建多级目录,目录创建基础实操
linux·运维·服务器
imc.111 天前
linux EXT文件系统
linux·运维·服务器
三言老师1 天前
mv移动文件、重命名文件实战案例
linux·服务器·网络·centos
向夏威夷 梦断明暄1 天前
C# 弃元模式:从语法糖到性能利器的深度解析
服务器·数据库·c#
AOwhisky1 天前
云原生 DevOps 工具链从入门到实战(第二期)——Jenkins安装与基础配置——CICD核心引擎
linux·运维·ci/cd·云原生·jenkins·devops
一叶之秋14121 天前
Linux网络初识
linux·服务器·网络