首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

【踩坑日记】【教程】如何在ubuntu服务器上配置公钥登录以及bug解决

  • 25-04-24 12:01
  • 2229
  • 10298
blog.csdn.net

前言

在日常开发和运维中,为了提高服务器登录的安全性,我们通常会选择使用 SSH 密钥认证 来替代传统的密码登录。然而,在配置 SSH 公钥登录的过程中,可能会遇到各种坑和 Bug。本文将从零开始,手把手教你如何在 Ubuntu 服务器上配置 SSH 公钥登录,并分享实际操作中遇到的问题及其解决方法。


环境说明

  • 本地设备:Windows 10
  • 远程服务器:Ubuntu
  • 操作目标:通过 SSH 公钥认证登录 Ubuntu 服务器

一、SSH 公钥登录的配置步骤

1. 在本地生成 SSH 密钥对

首先,我们需要在本地生成一对 SSH 密钥(公钥和私钥)。在 Windows 上可以使用终端工具(如 PowerShell、Git Bash 或 WSL)运行以下命令:

ssh-keygen -t rsa -b 2048
  • 1
  • 系统会提示保存密钥文件的位置,默认路径为 C:\Users\<你的用户名>\.ssh\id_rsa。
  • 按照提示操作,回车即可完成。如果需要为密钥设置密码,可以自行输入(可选)。

最终会生成以下两个文件:

  • id_rsa:私钥,保存在本地,用于身份认证。请妥善保管,切勿泄露。
  • id_rsa.pub:公钥,上传到服务器,用于验证身份。

2. 将公钥上传到服务器

在 Windows 上没有 ssh-copy-id 工具,因此我们需要手动上传公钥到服务器。

方法 1:手动复制公钥
  1. 查看本地公钥内容:

    type C:\Users\<你的用户名>\.ssh\id_rsa.pub
    
    • 1

    复制输出内容。

  2. 登录到服务器:

    ssh username@server_ip
    
    • 1

    替换 username 和 server_ip 为你的服务器用户名和 IP 地址。

  3. 在服务器上创建 .ssh 文件夹并设置权限:

    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    
    • 1
    • 2
  4. 编辑或创建 authorized_keys 文件,将公钥内容粘贴进去:

    nano ~/.ssh/authorized_keys
    
    • 1

    粘贴后保存并退出。

  5. 设置文件权限:

    chmod 600 ~/.ssh/authorized_keys
    
    • 1

3. 测试 SSH 公钥登录

完成上述步骤后,退出服务器并尝试使用 SSH 密钥登录:

ssh -i C:\Users\<你的用户名>\.ssh\id_rsa username@server_ip
  • 1

如果配置正确,你应该可以直接登录而无需输入密码。


二、遇到的 Bug 和解决过程

问题描述

在本地配置好公钥后,仍然无法通过 SSH 密钥登录服务器,客户端一直提示需要输入密码。查看服务器日志后发现以下错误:

Failed password for hw from 192.168.0.100 port 54545 ssh2
  • 1

排查与解决过程

  1. 检查 SSH 服务配置
    编辑服务器上的 /etc/ssh/sshd_config 文件,确保以下配置项正确:

    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys
    PasswordAuthentication yes    # 用于调试时保留
    
    • 1
    • 2
    • 3

    修改完成后,重启 SSH 服务:

    sudo systemctl restart ssh
    
    • 1
  2. 检查 authorized_keys 文件权限
    确保 ~/.ssh 文件夹和 authorized_keys 文件的权限正确:

    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    
    • 1
    • 2
  3. 检查文件所有者
    问题的根本原因是:authorized_keys 文件的所有者不正确。通过以下命令发现文件归属不是登录的用户:

    ls -l ~/.ssh/authorized_keys
    
    • 1

    修复所有权问题:

    chown username:username ~/.ssh/authorized_keys
    
    • 1

    再次尝试登录,问题解决。


三、从其他设备登录服务器

1. 如何避免安全警告

当你从另一台设备首次连接到服务器时,客户端会提示以下信息:

The authenticity of host '192.168.0.22' can't be established.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
  • 1
  • 2

这属于正常现象,因为这是 SSH 的安全机制,用于防止中间人攻击。如果确定服务器可信,可以输入 yes 接受。

客户端会将服务器的主机密钥保存到本地 ~/.ssh/known_hosts 文件中,之后不再提示。


2. 多设备登录是否会互相影响?

SSH 支持多个设备同时连接到同一个服务器账户,不会因为从一台设备登录而「顶掉」另一台设备的会话。你可以通过以下命令查看所有当前活动的 SSH 会话:

who
  • 1

或者:

w
  • 1

例如,输出如下:

username pts/0 192.168.0.100 17:40 (bash)
username pts/1 192.168.0.101 17:50 (bash)
  • 1
  • 2

这里表示同一个用户通过两台设备分别从 IP 192.168.0.100 和 192.168.0.101 登录。


注:本文转载自blog.csdn.net的__Witheart__的文章"https://blog.csdn.net/Beihai_Van/article/details/144012993"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

121
服务器
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top