如何实现外网安全登录Linux服务器?

要通过外网登录Linux服务器,需完成服务器端配置、网络环境设置及客户端连接操作,同时需注重安全性,以下是详细步骤和注意事项:

如何外网登录linux服务器

登录前的必要准备

  1. 服务器具备公网IP或内网穿透能力
    若服务器直接连接互联网,需有固定公网IP(可通过curl ifconfig.me查看);若服务器在内网(如家庭、企业局域网),需通过路由器端口转发或内网穿透工具(如frp、ngrok)将公网端口映射到服务器内网IP。

  2. 开放服务器及网络防火墙端口
    Linux服务器默认使用SSH协议(端口22),需确保防火墙允许该端口入站。

    • firewalld(CentOS 7+)
      sudo firewall-cmd --permanent --add-service=ssh  # 开放SSH服务
      sudo firewall-cmd --reload                      # 重启防火墙
    • iptables(传统Linux)
      sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT  # 允许22端口入站
      sudo service iptables save                          # 保存规则
    • 云服务器安全组:若使用阿里云、腾讯云等,需在控制台安全组中添加入站规则,协议选择“TCP”,端口“22”,源IP设置为“0.0.0.0/0”(或限制为特定IP)。
  3. 确认SSH服务运行状态
    执行sudo systemctl status sshd(CentOS/Ubuntu)或sudo service ssh status(Debian旧版),确保服务为“active running”状态,若未启动,可通过sudo systemctl start sshd启动,并设置开机自启:sudo systemctl enable sshd

通过SSH直接连接(服务器有公网IP)

服务器端SSH配置优化(可选)

编辑SSH配置文件sudo vim /etc/ssh/sshd_config,调整以下参数提升安全性:

  • Port 22:可修改为非默认端口(如2222),减少扫描攻击;
  • PermitRootLogin no:禁用root直接登录,改用普通用户;
  • PasswordAuthentication no:后续可启用密钥认证替代密码;
  • AllowUsers user1 user2:限制允许登录的用户(需替换为实际用户名)。
    修改后保存并重启SSH服务:sudo systemctl restart sshd

客户端连接操作

根据客户端操作系统选择工具:

如何外网登录linux服务器

客户端类型 工具 操作步骤
Windows PuTTY(图形界面) 下载PuTTY,输入服务器公网IP、端口(默认22),选择SSH协议,点击“Open”;输入用户名和密码登录。
Windows Xshell/Xftp 新建会话,输入主机IP、端口、用户名,选择“密码”或“密钥认证”连接;支持多标签和文件传输。
Linux/macOS 终端(命令行) 执行ssh username@公网IP -p 端口(如ssh ubuntu@123.45.67.89 -p 22),输入密码后登录。

无公网IP时的内网穿透(以frp为例)

若服务器在内网(无公网IP),可通过frp实现内网穿透,将内网SSH服务映射到公网端口。

服务端(公网服务器)配置

  • 下载frp服务端程序(对应操作系统版本):frp官方下载
  • 创建配置文件frps.ini
    [common]
    bind_port = 7000          # frp服务监听端口
    vhost_http_port = 8080    # 可选,用于HTTP穿透(非必需)
    dashboard_addr = 0.0.0.0  # 开启管理面板地址
    dashboard_port = 7500     # 管理面板端口
    dashboard_user = admin    # 管理面板用户名
    dashboard_pwd = admin123  # 管理面板密码
  • 启动服务端:./frps -c frps.ini(后台运行可添加-d参数)。

客户端(内网Linux服务器)配置

  • 下载frp客户端程序,创建配置文件frpc.ini

    [common]
    server_addr = 公网服务器IP   # frp服务端IP
    server_port = 7000          # 与服务端bind_port一致
    [ssh]
    type = tcp                  # 协议类型
    local_ip = 127.0.0.1        # 内网服务器SSH本地IP
    local_port = 22             # 内网SSH端口
    remote_port = 6000          # 公网映射端口(自定义,如6000)
  • 启动客户端:./frpc -c frpc.ini

连接内网服务器

通过公网服务器的IP和映射端口连接:ssh username@公网服务器IP -p 6000(如ssh ubuntu@123.45.67.89 -p 6000)。

安全加固措施

  1. 使用SSH密钥认证替代密码

    如何外网登录linux服务器

    • 客户端生成密钥对:ssh-keygen -t rsa -b 4096(一路回车即可生成,私钥~/.ssh/id_rsa,公钥~/.ssh/id_rsa.pub)。
    • 将公钥上传至服务器:ssh-copy-id username@服务器IP(或手动将公钥内容追加到服务器~/.ssh/authorized_keys文件)。
    • 服务器端修改/etc/ssh/sshd_config,设置PasswordAuthentication no,重启SSH服务。
  2. 限制登录IP和失败次数

    • 使用fail2ban工具防止暴力破解:安装sudo apt install fail2ban(Ubuntu)或sudo yum install fail2ban(CentOS),配置/etc/fail2ban/jail.local,添加SSH监狱规则:
      [sshd]
      enabled = true
      port = 22
      maxretry = 3          # 最大失败次数
      bantime = 3600        # 封禁时间(秒)
    • 通过iptables限制特定IP访问:sudo iptables -A INPUT -s 恶意IP -j DROP
  3. 定期更新系统和SSH服务
    执行sudo apt update && sudo apt upgrade(Ubuntu)或sudo yum update(CentOS),及时修复安全漏洞。

相关问答FAQs

问题1:连接时提示“Permission denied (publickey,password)”怎么办?
解答:通常是由于认证方式配置错误或密钥未正确设置。

  • 检查服务器/etc/ssh/sshd_configPasswordAuthenticationPubkeyAuthentication是否均为yes(若使用密钥认证,PasswordAuthentication可设为no);
  • 确认客户端公钥是否已上传至服务器~/.ssh/authorized_keys文件,且文件权限为600chmod 600 ~/.ssh/authorized_keys);
  • 检查客户端私钥路径是否正确(如PuTTY需加载.ppk格式私钥,SSH命令可通过-i指定私钥路径:ssh -i ~/.ssh/id_rsa username@IP)。

问题2:如何避免SSH服务被频繁扫描攻击?
解答:可通过以下方式降低被扫描风险:

  • 修改默认端口:将SSH端口从22改为非标准端口(如2222),减少自动化扫描工具的识别;
  • 使用防火墙规则限制IP:通过iptables或firewalcd只允许特定IP访问SSH端口(如sudo iptables -A INPUT -p tcp -s 信任IP --dport 22 -j ACCEPT,其他IP拒绝);
  • 隐藏SSH服务版本:编辑/etc/ssh/sshd_config,设置DebianBanner no(CentOS需修改/etc/ssh/sshd_config中的#Banner none取消注释),禁止SSH服务返回版本信息;
  • 启用SSH使用白名单:通过PAM模块配置/etc/security/access.conf,仅允许指定用户或IP登录SSH。

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

(0)
酷番叔酷番叔
上一篇 2025年10月9日 02:22
下一篇 2025年10月9日 02:32

相关推荐

  • Linux系统下如何查看网卡的相关信息与具体操作方法?

    在Linux系统中,查看网卡信息是网络管理、故障排查和系统维护的基础操作,无论是临时查看网络接口状态,还是获取网卡的硬件参数、流量统计,Linux都提供了丰富的命令工具,本文将详细介绍多种查看网卡信息的方法,涵盖基础状态查询、硬件信息获取、流量监控等场景,并辅以实例说明,帮助用户全面掌握Linux网卡查看技巧……

    2025年9月29日
    1200
  • linux 下如何安装php

    Linux 下安装 PHP 可以使用包管理器,如 apt-get install php(Debian/Ubuntu)

    2025年8月16日
    3000
  • Linux系统如何删除用户文件夹的权限?

    在Linux系统中,删除用户时正确处理文件夹权限管理至关重要,否则可能导致文件属主混乱、权限错误甚至数据访问异常,本文将从基础权限概念、删除用户前的准备工作、具体操作步骤及后续权限处理等方面详细说明,确保安全、高效地完成用户删除及权限清理,Linux文件夹权限管理基础Linux文件权限通过“属主(owner……

    2025年9月13日
    2500
  • Linux Ubuntu如何给用户分配管理员权限?

    在Linux Ubuntu系统中,管理员权限通常指的是能够执行系统级操作(如安装软件、修改系统配置、管理用户等)的权限,Ubuntu默认禁用root账户登录,推荐使用sudo命令来临时提升权限,这种设计既保证了系统安全,又方便日常管理,本文将详细介绍如何在Ubuntu中为用户配置管理员权限,包括通过sudo组授……

    2025年8月28日
    3400
  • Linux命令行下如何翻页查看长文本内容?

    在Linux命令行操作中,处理长文本文件(如日志文件、配置文件、代码文件等)时,由于终端屏幕高度有限,无法一次性显示全部内容,因此需要翻页功能来逐页查看,常见的翻页方式主要通过more、less、cat结合管道等命令实现,不同工具的功能和操作方式有所差异,下面详细介绍具体使用方法,基础分页工具:more命令mo……

    2025年9月18日
    2500

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信