远程登录Linux服务器如何安全高效?

远程管理Linux服务器的第一步是确保登录安全高效,这不仅提升工作效率,更是守护服务器安全的关键防线,掌握正确的登录方法和最佳实践至关重要。

核心登录方式:SSH (Secure Shell)

SSH是登录Linux服务器的行业标准协议,它通过加密通道传输所有数据,有效防止窃听和中间人攻击。

使用密码登录 (基础但需谨慎)

  • 打开终端 (Linux/macOS) 或 SSH 客户端 (Windows):
    • Linux/macOS: 直接打开系统自带的终端 (Terminal)。
    • Windows: 使用 PuTTY, Windows Terminal, MobaXterm 或较新 Windows 10/11 内置的 OpenSSH 客户端 (在 PowerShell 或命令提示符中使用 ssh 命令)。
  • 执行登录命令:
    ssh username@server_ip_address
    • username 替换为你在服务器上的实际用户名 (如 ubuntu, ec2-user, root 或自定义名)。
    • server_ip_address 替换为服务器的公网 IP 地址或域名 (如 0.113.10yourdomain.com)。
  • 首次连接确认:
    首次连接某台服务器时,会提示你确认服务器的指纹 (类似于服务器的唯一身份证),仔细核对指纹 (如果服务器提供商如阿里云、酷盾、AWS等提供了指纹信息) 后,输入 yes 确认并继续。
  • 输入密码:
    系统提示 username@server_ip_address's password: 时,安全地输入该用户对应的密码,输入时屏幕上通常不会显示任何字符(星号也没有),这是正常的安全设计,输入完毕按回车。
  • 登录成功:
    密码验证通过后,你将看到服务器的命令行提示符 (如 username@hostname:~$),表示已成功登录。

密码登录的安全风险与建议:

  • 风险: 密码可能被暴力破解或猜测。
  • 最佳实践:
    • 使用强密码: 长度至少12位,包含大小写字母、数字、特殊符号,避免常见词汇。
    • 禁用 root 密码登录: 绝大多数情况下,应禁止直接使用 root 用户通过密码登录,使用普通用户登录后,再用 sudo 提权执行管理任务。
    • 考虑密钥登录: 更安全的方式是使用 SSH 密钥对登录(强烈推荐)。

使用 SSH 密钥对登录 (更安全,推荐)

  • 原理: 使用一对加密密钥(公钥和私钥),公钥放在服务器上,私钥安全地保存在你的本地计算机上,登录时,本地 SSH 客户端用私钥签名一个挑战信息发送给服务器,服务器用存储的公钥验证签名,验证通过则允许登录。
  • 优势: 比密码安全得多(几乎无法暴力破解),无需记忆复杂密码,支持自动化脚本。
  • 步骤:
    1. 在本地计算机生成密钥对 (如果还没有):
      ssh-keygen -t ed25519 -C "your_email@example.com"  # 推荐使用 Ed25519 算法
      # 或
      ssh-keygen -t rsa -b 4096 -C "your_email@example.com"  # 使用 RSA 算法,4096位更安全

      按提示操作(通常直接回车接受默认保存路径 ~/.ssh/id_ed25519~/.ssh/id_rsa,并设置一个强密码短语 passphrase 来加密保护私钥)。

    2. 将公钥上传到服务器:
      • 方法一 (推荐 – 使用 ssh-copy-id):
        ssh-copy-id -i ~/.ssh/id_ed25519.pub username@server_ip_address

        输入服务器用户的密码后,公钥会自动添加到服务器用户家目录下的 ~/.ssh/authorized_keys 文件中。

      • 方法二 (手动):
        • 在本地查看公钥内容:cat ~/.ssh/id_ed25519.pub (或 id_rsa.pub)。
        • 复制输出的全部内容。
        • 登录到服务器 (先用密码登录或其他方式)。
        • 确保 ~/.ssh 目录存在且权限正确:
          mkdir -p ~/.ssh
          chmod 700 ~/.ssh
        • 将复制的公钥内容追加~/.ssh/authorized_keys 文件:
          echo "粘贴你的公钥内容" >> ~/.ssh/authorized_keys
        • 设置 authorized_keys 文件权限:
          chmod 600 ~/.ssh/authorized_keys
    3. 使用密钥登录:
      执行和密码登录相同的命令:

      ssh username@server_ip_address
      • 如果私钥路径和文件名是默认的 (id_ed25519id_rsa),SSH 会自动尝试使用它。
      • 如果生成密钥时设置了 passphrase,系统会提示你输入它来解锁私钥(这是本地操作,密码不会发送到服务器)。
      • 如果密钥文件名不是默认的,需要用 -i 指定:
        ssh -i /path/to/your/private_key username@server_ip_address
  • 禁用密码登录 (增强安全 – 密钥配置好后进行):
    强烈建议在成功配置并测试密钥登录后,禁用服务器的密码登录功能:

    1. 登录服务器。
    2. 编辑 SSH 服务端配置文件 (/etc/ssh/sshd_config):
      sudo nano /etc/ssh/sshd_config  # 或使用 vi/vim
    3. 找到以下行并修改:
      PasswordAuthentication no  # 确保是 no
      #PubkeyAuthentication yes  # 通常默认是 yes,确保没有被注释掉
      #PermitRootLogin prohibit-password  # 或 no (更安全) 或 without-password (仅密钥)
    4. 保存文件并退出编辑器。
    5. 重启 SSH 服务使配置生效:
      sudo systemctl restart sshd  # 大多数现代系统
      # 或 sudo service ssh restart  # 一些旧系统

      重要: 在禁用密码登录前,务必确保你的密钥登录100% 工作正常,并且你有其他访问途径(如控制台)以防万一。

指定端口登录

SSH 默认监听 22 端口,为增加安全性,可以修改服务器上的 SSH 端口号。

  • 登录命令 (带端口):
    ssh -p port_number username@server_ip_address
    • port_number 替换为服务器 SSH 实际监听的端口号 (如 2222)。
  • 修改服务器端口:
    编辑 /etc/ssh/sshd_config,找到 #Port 22 行,去掉注释 并将 22 改为你想要的端口号 (如 Port 2222),保存后重启 sshd 服务。务必确保防火墙允许新端口通过!

其他登录方式 (特定场景)

  1. 控制台/串行控制台 (Console/Serial Console):

    • 场景: 当服务器网络完全不可用、SSH 服务崩溃或需要底层访问时(如云服务器提供商 VNC、阿里云/酷盾/AWS 的实例控制台)。
    • 方法: 通过云服务商的管理控制台访问,通常需要浏览器登录云平台,找到对应实例,点击“连接”、“VNC”、“串行控制台”等选项,可能需要输入服务器本地账户的用户名和密码。
    • 特点: 不依赖服务器网络配置和 SSH 服务状态,是最后的救命稻草。
  2. 基于 Web 的 SSH 客户端:

    • 场景: 某些服务器管理面板(如 cPanel, Plesk, 宝塔面板)或云平台(如 AWS CloudShell, Google Cloud Shell)提供内置的 Web Shell。
    • 方法: 登录到相应的管理界面,找到 Web Shell 或终端功能入口点击进入。
    • 特点: 无需安装本地客户端,方便临时访问,但功能、体验和安全性可能不如本地 SSH 客户端。

常用 SSH 客户端工具

  • Linux/macOS: 内置 OpenSSH 客户端 (ssh 命令)。
  • Windows:
    • PuTTY: 经典免费工具,轻量级。
    • Windows Terminal (推荐): 微软官方现代化终端,集成 PowerShell, CMD, WSL, SSH 等,体验优秀。
    • MobaXterm: 功能强大的全能终端,集成了 SSH, X11 服务器, SFTP 浏览器等。
    • OpenSSH for Windows (内置): Windows 10 (1809+) 和 Windows 11 已内置 OpenSSH 客户端,可在 PowerShell 或 CMD 中直接使用 ssh 命令。

登录后的重要安全操作

  1. 更新系统:
    sudo apt update && sudo apt upgrade  # Debian/Ubuntu
    sudo yum update                      # CentOS/RHEL (较旧)
    sudo dnf upgrade                     # CentOS Stream/RHEL 8+/Fedora
  2. 创建普通用户 (如果使用 root 登录):
    adduser newusername
    usermod -aG sudo newusername  # Debian/Ubuntu 赋予 sudo 权限
    usermod -aG wheel newusername # CentOS/RHEL 赋予 sudo 权限 (需 wheel 组在 sudoers 中配置)
  3. 配置防火墙 (如 ufwfirewalld): 只允许必要的端口 (SSH, HTTP/HTTPS 等)。

常见登录问题排查

  • “Connection refused” (连接被拒绝):
    • 服务器 IP/端口错误。
    • 服务器防火墙阻止了连接。
    • SSH 服务 (sshd) 未在服务器上运行 (sudo systemctl status sshd 检查)。
  • “Permission denied (publickey)” (权限被拒绝 – 公钥):
    • 服务器上 ~/.ssh/authorized_keys 文件权限不对 (应为 600) 或 .ssh 目录权限不对 (应为 700)。
    • 公钥未正确添加到 authorized_keys 文件。
    • 本地私钥路径错误或权限太开放 (私钥文件权限应为 600)。
    • 服务器 sshd_configPubkeyAuthentication 被设为 no
  • “Permission denied (password)” (权限被拒绝 – 密码):
    • 用户名或密码错误。
    • 服务器 sshd_configPasswordAuthentication 被设为 no
    • 该用户被禁止登录 (检查 /etc/ssh/sshd_config 中的 AllowUsers, DenyUsers 等指令)。
  • “Host key verification failed” (主机密钥验证失败):
    • 服务器重装系统或密钥变更,与本地 ~/.ssh/known_hosts 中记录不符。谨慎操作! 确认服务器身份后,可删除 known_hosts 文件中对应行再连接。

安全最佳实践总结

  1. 首选 SSH 密钥登录: 禁用密码登录是提升安全性的最有效措施。
  2. 禁用 root 登录: 使用普通用户 + sudo
  3. 修改默认 SSH 端口: 减少自动化攻击扫描。
  4. 使用强密码/强密钥口令: 即使使用密钥,私钥也应加密保护。
  5. 保持软件更新: 及时更新操作系统和 SSH 软件包。
  6. 配置防火墙: 严格限制入站连接。
  7. 使用 Fail2Ban: 自动封禁多次尝试失败的 IP 地址。
  8. 最小权限原则: 用户只拥有完成工作所需的最小权限。
  9. 谨慎操作: 对系统文件的修改(尤其是 /etc/ssh/sshd_config)要格外小心,修改前备份,修改后测试。

掌握这些登录方法和安全规范,是高效、安全地管理 Linux 服务器的基石,务必根据你的具体环境(云服务器、本地服务器、发行版)调整细节,并始终将安全放在首位。

引用说明:

  • 本文核心操作基于 OpenSSH 协议实现,参考了 OpenSSH 官方文档中关于 ssh, ssh-keygen, ssh-copy-id 等工具的使用说明以及 sshd_config 配置选项。
  • SSH 协议标准定义参考了 IETF RFC 文档 (如 RFC 4250 – RFC 4256)。
  • 系统命令 (adduser, usermod, apt, yum, dnf, systemctl, ufw, firewalld) 的使用参考了 Debian、Ubuntu、CentOS、RHEL 等主流 Linux 发行版的官方手册页 (man pages) 和文档。
  • 安全最佳实践综合了行业普遍认可的标准,如 CIS Benchmarks 中关于 SSH 配置的建议。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9148.html

(0)
酷番叔酷番叔
上一篇 2025年7月29日 06:57
下一篇 2025年7月29日 07:19

相关推荐

  • Web服务器负载过高会怎样?

    Web服务器负载指服务器处理用户请求的工作量,通常由同时访问的用户数量、请求频率和资源消耗决定,负载过高时会导致响应变慢甚至服务中断。

    2025年7月12日
    3800
  • 跑跑卡丁车服务器为何频繁掉线?匹配延迟何时能解决?

    跑跑卡丁车作为一款风靡全球的休闲赛车竞速游戏,自2006年由韩国Nexon公司推出以来,凭借其可爱的卡通画风、简单的操作方式和激烈的竞速乐趣,吸引了无数玩家,而支撑起整个游戏体验的核心,正是背后的服务器系统,服务器不仅是玩家进入游戏的“入口”,更是保障游戏公平、流畅互动、数据安全的关键基础设施,其发展历程、技术……

    2025年8月30日
    1600
  • 服务器启动慢卡在开机界面?3步秒解决!

    服务器开机缓慢通常由硬件老化、系统配置不当、启动项过多、驱动/固件问题或磁盘故障引起,专业解决方案包括优化启动项、更新驱动和固件、检查硬件状态(尤其是存储设备)、调整BIOS/UEFI设置,必要时进行系统精简或硬件升级,以显著提升启动效率及系统稳定性。

    2025年7月17日
    4100
  • 网络机顶盒服务器,谁在幕后掌控?

    网络机顶盒服务器是内容传输、用户管理和数据处理的核心中枢,虽不可见却支撑着整个服务运行,负责内容分发、用户认证及后台运营。

    2025年7月21日
    3100
  • DNS服务器查询域名时,具体是如何解析并返回IP的?

    在互联网的底层架构中,DNS(域名系统)如同互联网的“电话簿”,将人类易于记忆的域名(如www.example.com)转换为机器能够识别的IP地址(如93.184.216.34),这一转换过程依赖DNS服务器查询完成,没有DNS服务器的高效查询,用户需要记忆复杂的数字组合,互联网的易用性将大打折扣,DNS服务……

    2025年8月23日
    1800

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信