如何实现外网安全登录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_config中PasswordAuthentication和PubkeyAuthentication是否均为yes(若使用密钥认证,PasswordAuthentication可设为no);
  • 确认客户端公钥是否已上传至服务器~/.ssh/authorized_keys文件,且文件权限为600(chmod 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如何用命令行操作光驱?

    检查光驱识别状态查看设备节点终端执行:ls /dev/sr*输出类似 /dev/sr0 表示光驱已被识别(sr0 是常见设备名),检查内核识别状态dmesg | grep -i cdrom若输出包含 CD-ROM 和型号信息,说明驱动正常,挂载与访问光盘图形界面(推荐新手)插入光盘后,文件管理器(如Nautil……

    2025年7月25日
    32600
  • Linux大硬盘分区有哪些实用方法与操作步骤?

    在Linux系统中,为大硬盘(通常指超过2TB容量)分区需要综合考虑分区表类型、分区策略、文件系统选择及实际使用场景,以确保系统稳定性、数据安全性和性能优化,大硬盘的分区与传统小硬盘存在显著差异,尤其在分区表选择、分区对齐及文件系统支持方面需格外注意,分区表选择:GPT vs MBR大硬盘分区的首要问题是选择分……

    2025年9月22日
    24000
  • 如何通过telnet实现与Linux主机的远程连接?

    要通过Telnet连接到Linux系统,需要完成客户端配置、Linux服务器端设置、网络连通性验证等步骤,以下是详细操作流程及注意事项,涵盖环境准备、服务配置、连接方法及常见问题排查,Telnet基础概念与环境准备Telnet是一种基于TCP/IP的协议,用于远程登录和管理服务器,默认使用23端口,由于Teln……

    2025年9月29日
    20500
  • Linux系统如何调整字体大小?具体方法有哪些?

    在Linux系统中,调整字体大小是提升使用体验的常见需求,但由于Linux发行版多样、桌面环境不同,调整方法也略有差异,本文将从桌面环境、终端、应用程序等多个场景出发,详细介绍如何改变Linux字体大小,帮助用户根据实际需求灵活操作,通过桌面环境调整字体大小(图形界面)不同桌面环境(如GNOME、KDE Pla……

    2025年10月6日
    26200
  • Windows 7如何轻松安装Linux?

    在Windows 7电脑上安装Linux需先备份数据,然后创建Linux启动U盘,启动时选择U盘引导,进入安装程序后分区硬盘(可双系统共存或替换Windows),完成安装并设置启动项即可。

    2025年7月9日
    35900

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信