当前位置: 首页 > java >正文

【Linux】SSH:简单端口转发的跳板机

本教程介绍如何配置一个SSH跳板机(堡垒机),允许特定用户(jumpuser)通过跳板机转发连接到内网机器,同时禁止直接登录或在跳板机上执行命令。配置设计简洁、安全且易于维护。此外,还包括如何将特定内网主机名(如 xxx.intranet)绑定到特定IP地址的步骤。


前提条件

  • 一台安装了SSH服务器(sshd)的Linux跳板机。
  • 跳板机的管理员权限。
  • 客户端机器上安装了SSH客户端。

在跳板机上创建并配置 jumpuser

在跳板机上创建专用用户 jumpuser,并限制其直接登录权限。

sudo useradd -m jumpuser -s /usr/sbin/nologin
  • -m:为 jumpuser 创建家目录。
  • -s /usr/sbin/nologin:将用户shell设置为 nologin,阻止shell登录。

这确保 jumpuser 无法直接登录或在跳板机上执行命令。


配置SSH服务器(sshd_config

修改跳板机的SSH服务器配置文件(/etc/ssh/sshd_config),为 jumpuser 设置限制并启用端口转发。

/etc/ssh/sshd_config 文件末尾添加以下 Match User 配置块:

Match User jumpuserForceCommand echo '此账户仅用于跳板机,无法直接登录。'; exit 1PermitTTY noAllowTcpForwarding yesPermitOpen anyX11Forwarding no

配置说明

指令作用
ForceCommand执行固定命令(显示提示并退出),阻止其他命令执行。
PermitTTY no禁用TTY分配,防止交互式会话。
AllowTcpForwarding yes启用SSH端口转发,允许 jumpuser 使用跳板机作为代理。
PermitOpen any允许转发到任意内网主机和端口(默认受限)。
X11Forwarding no禁用X11图形转发,增强安全性。

更新配置后,重启SSH服务:

sudo systemctl restart sshd

绑定内网主机名到特定IP

为了将特定内网主机名(例如 xxx.intranet)绑定到特定IP地址(如 10.0.0.10),在跳板机上修改 /etc/hosts 文件。

  1. 编辑 /etc/hosts 文件:

    sudo vi /etc/hosts
    
  2. 添加以下行,将主机名绑定到IP地址:

    10.0.0.10 xxx.intranet
    
  3. 保存文件并退出。

  4. 验证绑定是否生效:

    ping xxx.intranet
    

    确保返回的IP地址为 10.0.0.10

注意:此配置仅在跳板机上生效。如果内网其他机器需要解析 xxx.intranet,需要在每台机器的 /etc/hosts 文件中添加类似条目,或使用内网DNS服务器统一管理。


配置客户端SSH

在客户端机器上,配置 ~/.ssh/config 以简化通过跳板机访问内网主机。

~/.ssh/config 中添加以下内容:

Host *.intranetProxyJump jumpuser@jump.example.com
  • Host *.intranet:适用于任何以 .intranet 结尾的主机名(如 xxx.intranet)。
  • ProxyJump:指定跳板机(jumpuser@jump.example.com)用于转发。

或者直接使用命令行:

ssh -J jumpuser@jump.example.com xxx.intranet
  • -J:指定跳板机用于SSH转发。

预期效果

操作结果
ssh jumpuser@jump.example.com❌ 拒绝(显示提示并退出)
ssh -J jumpuser@jump.example.com xxx.intranet✅ 允许(连接到 10.0.0.10
ssh -J jumpuser@jump.example.com 10.0.0.10✅ 允许(连接到内网主机)

安全性增强建议

为进一步提高跳板机安全性,建议以下措施:

  1. 禁用密码认证
    /etc/ssh/sshd_config 中添加以下内容,强制使用密钥认证:

    PasswordAuthentication no
    

    这将禁用密码登录,增强安全性。

  2. 使用Fail2Ban或防火墙
    使用 fail2ban 或防火墙(如 iptablesufw)阻止暴力破解攻击。

  3. 限制跳板机访问
    通过防火墙规则或 sshd_config 中的 AllowUsersListenAddress 限制特定IP范围的SSH访问。

  4. 监控日志
    定期检查SSH日志(/var/log/auth.log/var/log/secure),以发现可疑活动。


总结

本配置提供了一个安全、简洁且易于维护的SSH跳板机解决方案。jumpuser 账户被限制无法直接登录,同时允许无缝转发到内网主机,包括通过主机名(如 xxx.intranet)访问特定IP地址。通过实施安全性增强措施,可进一步保护跳板机免受未经授权的访问。

http://www.xdnf.cn/news/13163.html

相关文章:

  • 小白进阶shell学习-----脚本实战案例
  • 论文解析:一文弄懂ResNet(图像识别分类、目标检测)
  • 华为云Flexus+DeepSeek征文 | 大模型+高性能云服务的化学反应:医疗场景Agent开发
  • 【数组和二分查找】
  • YOLOv5白皮书 common.py 文件解读
  • C++:模板
  • 无服务器架构的企业级应用深度解析:Serverless技术选型与成本模型
  • DMA:在不同内存空间建立目的地址的情况分析及后果
  • 解锁 Nginx Stream 代理—全面掌握 ngx_stream_proxy_module
  • echarts使用笔记
  • java容易被忽略的事情
  • docker 安装运行mysql8.4.4
  • ceph 查看 pg 迁移进度的脚本
  • Oracle SQL*Plus 配置上下翻页功能
  • 大数据零基础学习day1之环境准备和大数据初步理解
  • APP开发好后如何分发内测
  • uniapp+vue2+h5图片下载保存,微信浏览器、非微信浏览器
  • java8 通过方法引用 vo::setLevel将对象的 setter 方法作为参数传递
  • Linux日志管理和时间管理
  • Java多线程实现之Callable接口深度解析
  • PyTorch终极实战:从自定义层到模型部署全流程拆解​
  • 接口测试中缓存处理策略
  • Code Composer Studio快捷键
  • OkHttp 中实现断点续传 demo
  • 【数据结构】图论经典:Dijkstra最短路径算法精解与工程优化
  • 计算机毕业设计微信小程序题库系统 在线答题 题目分类 错题本管理 学习记录查询系统源码+论文+PPT+讲解 基于微信小程序的题库系统设计与实现
  • JavaScript 核心对象深度解析:Math、Date 与 String
  • qt3d自定义生成mesh图形
  • 深度学习小项目合集-视频介绍下自取
  • 计算机系统概述(4)