如何实现外网安全登录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内核占用2GB内存?

    Linux内核内存占用是系统资源管理的重要部分,通常内核会根据系统负载和硬件配置动态调整内存使用,包括内核代码段、数据段、动态分配的内存(如slab缓存、page cache、buffer cache等)以及内核栈等,若需要将内核内存占用调整至2GB,需结合系统硬件配置(建议总内存至少8GB以上,避免用户空间内……

    2025年10月3日
    2700
  • 谁在构建数字世界的核心?Linux开发

    Linux开发作为现代数字世界的基石,驱动着从服务器操作系统、云计算平台到嵌入式设备和智能终端的广泛应用,其开放、稳定、灵活的特性,使其成为构建和支撑全球数字基础设施的核心驱动力与不可或缺的力量。

    2025年6月16日
    9700
  • Linux系统中如何获取指定进程的准确名称?

    在Linux系统中,获取进程名是系统管理、调试和监控中的基础操作,进程名(Process Name)通常指进程的可执行文件名或用户定义的标识符,用于区分不同类型的进程,本文将详细介绍多种获取进程名的方法,涵盖基础命令、系统文件、专用工具等场景,并对比不同方法的适用场景与优缺点,基础命令法:ps与top/htop……

    2025年9月30日
    3700
  • 如何让Linux系统支持NTFS分区读写?

    Linux系统默认对NTFS文件系统的支持有限,通常只能以只读模式挂载NTFS分区,若需实现读写支持,需安装额外的驱动或工具,以下是详细操作步骤及注意事项,安装NTFS读写支持工具不同Linux发行版使用的包管理器不同,需根据系统类型选择对应的安装方法,主流发行版可通过以下方式安装:Ubuntu/Debian系……

    2025年9月27日
    5000
  • Linux中查找文件安装目录及下载位置的常用具体方法有哪些?

    在Linux系统中,查找文件的安装目录或下载位置是日常管理和维护的常见需求,由于Linux的文件系统结构遵循FHS(Filesystem Hierarchy Standard)标准,不同类型的文件会存放在固定目录,同时软件安装方式(如包管理器、源码编译、压缩包解压等)也会影响文件的实际位置,以下从基础查找命令……

    2025年8月21日
    4900

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信