如何查看AWS ELB后面运行的SSH服务器的SSH客户端的真实IP

2024-01-27

我们在 AWS classic ELB 后面运行两个 gitlab 实例。为了启用 git SSH 推送并通过 git 负载平衡 SSH 请求,我们在 AWS ELB 中添加了 SSH TCP 端口侦听器。在 SSH 日志中,我们看到 ELB 的 IP,而不是 git 用户的实际 IP。我尝试启用Proxy protocol用于 ELB 的 SSH 侦听器,但它破坏了 SSH 服务器。有什么办法可以看到客户端的真实IP吗?

Nov 16 08:38:41 gitlab-1-1b sshd[14760]: Bad protocol version identification 'PROXY TCP4 x.y.z.a 0.0.0.0 61533 22' from x.y.z.a port 9407
Nov 16 08:39:08 gitlab-1-1b sshd[14825]: Bad protocol version identification 'PROXY TCP4 x.y.z.a 0.0.0.0 61554 22' from x.y.z.a port 9417

它实际上is可能的。解决办法是mmproxy https://github.com/cloudflare/mmproxy它是由 CloudFlare 开发的。它本地部署在每台后端机器上,并在 SSH 服务器前面工作。当您启用Proxy protocol在云负载均衡器中并建立连接时,“mmproxy”在将连接转发到本地 SSH 服务器时会解析附加标头并欺骗源 IP。

我已经使用 Google Cloud 对此进行了测试TCP代理负载均衡器 https://cloud.google.com/load-balancing/docs/tcp服务,但使用AWS ELB https://aws.amazon.com/elasticloadbalancing/应该以同样的方式工作。传入连接由“mmproxy”转发到“localhost”,其中 OpenSSH 正在侦听备用端口。

这是我测试过的 Google Cloud 配置TCP proxy load balancer服务和 OpenSSH:

# cat /etc/mmproxy-allowed-networks.txt
130.211.0.0/22
35.191.0.0/16

# grep Port /etc/ssh/sshd_config 
Port 222

./mmproxy -v --allowed-networks /etc/mmproxy-allowed-networks.txt -l 0.0.0.0:22 -4 127.0.0.1:222 -6 [::1]:222

此外,您还必须部署自定义路由表,这会强制将返回流量路由到“环回”。对于“localhost”,这是四个“ip”命令,每次计算机启动时都必须执行这些命令。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何查看AWS ELB后面运行的SSH服务器的SSH客户端的真实IP 的相关文章

  • 由于参数中有空格,Bash 脚本因未知选项而失败

    我正在尝试运行 aws create lambda 函数 事情的经过如下 eval aws lambda create function function name FUNCTION NAME runtime RUNTIME role RO
  • 可扩展性和弹性有什么区别?

    我听说很多人交替使用这两个术语 但在我看来 它们之间还是有区别的 可扩展性 的能力软件系统在其当前硬件资源上处理更大的工作负载 scale up 或当前和额外的硬件资源 向外扩展 应用程序服务不中断 弹性 的能力硬件层下面 通常是云基础设施
  • 为不同分支部署GitLab页面

    我正在使用 GitLab Pages 部署我的 React 应用程序 并且运行良好 这是我的gitlab ci yml Using the node alpine image to build the React app image nod
  • Capistrano 和 GitHub Private Repo – 权限被拒绝(公钥)

    我继承了一个托管在 Linode 上的 Rails 项目 之前的开发人员使用 BitBucket 存储库以及 Capistrano 进行部署 我已经在 GitHub 上设置了一个私人存储库 并且正在尝试让 Capistrano 配方发挥作用
  • 原始 ssh 连接(低级)

    作为一个小型 大型 业余爱好项目 我开始用 C 制作一个 非常原始的 ssh 2 0 客户端 这是为了探索和更好地理解 DH 并帮助加深我对加密的熟悉程度 根据 RFC 4253 我已经开始这样的初始连接 省略不相关的变量预设等 Rando
  • 无法验证主机真实性

    我第一次做git pull 在git中提示无法确定主机的真实性 与我生成的私钥相比 RSA密钥指纹不正确 我只是想知道如何更新它以便它读取正确的文件以及为什么它首先读取错误的指纹 我遇到了类似的问题 这意味着远程主机未知 不受信任 修复方法
  • AWS S3 使用 boto3 预签名 url - 签名不匹配

    我想为我的存储桶中的对象创建一个预签名 URL 我使用以下 python 代码 client boto3 client s3 aws access key id os environ AWS ACCESS KEY aws secret ac
  • 迭代亚马逊S3上文件夹中的对象

    我们有一个应用程序 用户可以创建自己的网页并托管它们 我们使用 S3 来存储静态页面 在这里 由于我们每个用户有 100 个存储桶的限制 我们决定为每个用户使用文件夹桶内的用户 现在 如果用户想在他的域上托管他的网站 我们会向他询问域名 当
  • 全文搜索 DynamoDB

    以下情况 我正在为我的客户将元素存储在 DyanmoDb 中 HashKey 是元素 ID Range Key 是客户 ID 除了这些字段之外 我还存储一个字符串数组 gt 标签 例如 Pets House 和多行文本 我想在我的应用程序中
  • 安全地记住 bash 脚本中的 ssh 凭据[重复]

    这个问题在这里已经有答案了 假设我有一个 bash 脚本 它通过 ssh 在远程计算机上执行命令 Do something here ssh otheruser host command1 Do something else ssh oth
  • 使用 Cloudformation SAM 的 AWS::Serverless::Api 资源策略

    最近AWS宣布 是否可以将资源策略附加到通过 Cloudformation 使用 SAM 创建的 AWS Serverless Api 我还没有机会尝试这个 但我假设您可以像使用 S3 存储桶策略一样使用它 对你来说最棘手的部分是抓住api
  • 如何启动 EC2 实例并在每个实例上上传/运行启动脚本?

    我想自动启动一组 Linux EC2 实例 基本上 我想编写一个脚本 程序 实例化我的给定 AMI 的 N 次出现 对于每个启动的实例 它会上传自定义脚本并让脚本运行到实例中 使用 VMWare 我通常会使用vmrun或 Vix SDK 亚
  • 如何在 Python Paramiko 中配置 ssh StrictHostKeyChecking=no 的等效项

    我正在使用 Paramiko 通过 Python 脚本进行 sshing 我的ssh命令如下 ssh A o strictHostKeyChecking no
  • 无法将 Laravel 应用程序部署到 EC2

    我的 Laravel 项目全部在我的本地主机上运行 我将其部署到 EC2 但没有任何反应 我在开发控制台中看到的只是内部错误 500 我缺少什么 在部署到 AWS 之前我需要更改哪些内容 这是网址 http ec2 52 88 99 75
  • AWS Serverless Lambda + Angular - TypeError:express 不是函数

    该应用程序在 localhost 4200 中运行良好 但是 当我通过无服务器 Lambda 迁移到 AWS 时 我在 cloudwatch 日志中收到此错误 我想正因为如此我得到了500 message Internal server e
  • AWS Glue 3.0 容器不适用于 Jupyter 笔记本本地开发

    我正在 AWS 中开发 Glue 并尝试在本地开发中进行测试和调试 我按照这里的说明进行操作https aws amazon com blogs big data developing aws glue etl jobs locally u
  • 如何从 docker-compose 链接到 Amazon RDS

    我的 docker compose yml 看起来像这样 django build user django links LINK TO AMAZON RDS command gunicorn sh env file config setti
  • 如何在gitlab存储库中下载单个文件夹或文件

    我有一个存储库 在此存储库中 有多个文件夹可用 我只需要此存储库中的一个文件夹 我已经尝试遵循命令 但它不起作用 克隆 有没有办法只克隆 git 存储库子目录 https stackoverflow com questions 600079
  • 使用 AWS SSO 时 AWS Java SDK 未找到配置文件

    当我使用 AWS SSO 登录时 我无法访问 aws 我使用以下方式从计算机登录 aws sso login profile staging 配置文件的配置如下 profile staging sso start url https som
  • Cloudwatch 仪表板:具有独立时间范围的小部件?

    我希望仪表板中的每个小部件都有自己的时间范围 我找不到办法做到这一点 如果不可能的话 我会发现它令人难以置信 我希望我的仪表板包含以下内容堆积区域小部件 过去一小时内 30 秒周期的请求计数 即 120 个绘图点 过去一天以 1 小时为周期

随机推荐

  • ActiveRecord 中的析取

    是否可以使用ActiveRecordnamed scopes 使用 sql 创建一个查询OR条款 当我使用 Model scope1 scope2 生成的查询是这些范围的结合 我回复是因为这是 活动记录分离 的第一个谷歌结果 使用 Rail
  • Noscript 标签、JavaScript 禁用警告和 Google 处罚

    当用户禁用 JavaScript 或使用 Noscript 等脚本阻止插件时 我一直使用 noscript 标签来显示警告 如果 JavaScript 被禁用 网站将无法正常运行 并且用户可能无法在没有警告的情况下弄清楚网站无法运行的原因
  • JavaFx 2 - TableView,返回所选项目

    我想从 TableView 中获取所选项目作为字符串 但它返回整个路径 在上图中 当我单击选择单元格时 我想要得到 Indicator selected is Shannon Entropy 当我得到 Indicator selected
  • 如何在Python中绘制k距离图

    如何在 DBSCAN 中绘制 在 python 中 给定最小点值的距离图 我正在寻找拐点和相应的 epsilon 值 在 sklearn 中 我没有看到任何返回此类距离的方法 我错过了什么吗 您可能想使用 numpy 提供的矩阵运算来加速距
  • 在 Angular 中创建新项目时,npm 抛出错误

    当我尝试使用 Git Bash 控制台使用 ng new 命令创建新的 Angular 项目时发生错误 我之前创建的项目从来没有出现过这个问题 这是调试日志的链接https drive google com open id 10ddECha
  • Metro UI:我正在切换 xaml 但图像未加载

    我有一个多 xaml 地铁应用程序 我想通过单击按钮在 xaml 之间切换 private void Button Click 1 object sender RoutedEventArgs e Window Current Content
  • 计算以零为底的累积和 (cumsum)

    我想修改cumsum功能 我希望将负值更改为 0 并且当有新值时D值不等于 0 然后使用D S 下面的例子 TD lt data frame product rep A 7 data seq as Date 2020 01 01 as Da
  • 缩短 JBoss Seam 应用程序中 REST 服务的路径

    我对 JBoss 和 Seam 还很陌生 我的项目有一个 REST 风格的服务 Path media Name mediaService public class MediaService GET Path test public Resp
  • AngularJS 未检测到 Access-Control-Allow-Origin 标头?

    我正在本地虚拟主机上运行一个角度应用程序 http foo app 8000 http foo app 8000 它正在向另一个本地 VirtualHost 发出请求 http bar app 8000 http bar app 8000
  • iisreset 后应用程序池未启动

    在开始之前 我知道使用 iisreset 被认为是不好的做法 但无论如何都不应该发生这种情况 我们有什么 多台在 Windows Server 2003 R2 64 和 32 位 上安装 IIS6 的计算机 多个 WCF Web 服务 NE
  • iOS 10 中使用自动调整单元格大小的 collectionViewContentSize

    在 iOS 10 之前 我有一个自调整大小的表视图 它仅由 UICollectionView 和使用标准 UICollectionViewFlowLayout 的自调整大小单元格组成 集合视图单元格的大小使用自动布局来调整 为了使表格单元格
  • HTML 下拉菜单自动宽度调整

    我创建了一个下拉菜单 该下拉菜单存在根据所选内容调整大小的问题 我使用以下 stackoverflow 答案作为调整下拉列表大小的灵感 https stackoverflow com a 20091985 3166468 https sta
  • cordova 无法看到 Android 目标

    我尝试为 Android 平台设置 Ionic Cordova 我安装了 JDK Android SDK 等 但正在运行cordova requirements给我 Requirements check results for androi
  • 在拖动时选择编辑文本中的一些文本

    我想在编辑文本中选择一些文本 但我不知道该怎么做 我需要这样的方法 当用户触摸屏幕然后拖动并离开屏幕时 拖动的文本将被选择 我的英语很差 所以不要介意 谢谢 textView EditText findViewById R id textv
  • PHP,从日期获取明天的日期

    我有一个 PHP 日期 格式为2013 01 22我想以相同的格式获取明天的日期 例如2013 01 23 这怎么可能用 PHP 实现呢 Use DateTime http php net manual en book datetime p
  • .Net毛伊岛如何连接

    对不起 我的英语不好 如何将 SQL Server 与 Net Maui 连接 我在网上尝试了很多方法 但都失败了 我尝试导入 Ado net 但显示错误 错误显示 该项目的目标框架不包含实体框架运行时汇编 首先 您应该配置应用程序常量 配
  • 从 CDN 包中删除 Babel(StandAlone) 警告消息

    我们在项目的某些部分使用 React JS CDN 出于质量目的 我们希望向客户提供无警告的代码 我们正在使用以下库 问题是我们在控制台中收到以下警告消息 您
  • 现在还值得学习微软基础课程(MFC)吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我是微软技术的忠实粉丝 学习了很多 NET Framework 和 C 之类的编程语言 但我相信 NET 应用程序是在 NET Framewor
  • 调整 NSMutableAttributedString 的字体大小与 UILabel 的框架高度成比例

    在我的项目中 我使用迅捷3 0 现在我正在使用以下课程 UILabel 子类 根据 UILabel 框架高度调整字体大小 当 UILabel 框架发生更改时 layoutSubviews 会重新计算比例字体大小 class Label UI
  • 如何查看AWS ELB后面运行的SSH服务器的SSH客户端的真实IP

    我们在 AWS classic ELB 后面运行两个 gitlab 实例 为了启用 git SSH 推送并通过 git 负载平衡 SSH 请求 我们在 AWS ELB 中添加了 SSH TCP 端口侦听器 在 SSH 日志中 我们看到 EL