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

ssh隧道代理访问内网应用

目录

场景

ssh配置

.ssh目录结构

常见文件及用途

config

id_rsa 和 id_rsa.pub

authorized_keys

known_hosts:

known_hosts.old:

environment:

ssh_config:

配置隧道访问内网应用流程

1.生成密钥对

2.将公钥添加到远程主机

3.编辑config文件

4.验证

5.启动ssh隧道

6.配置代理

场景

服务器A:部署公司内部服务,可以在该服务器访问内部web应用

服务器B:跳板机,可以ssh登录到服务器A

客户机C:可以登录到跳板机服务器B,无法直接登录服务区A以及服务器A上部署的Web服务

ssh配置

.ssh目录结构

.ssh 目录是用于存储与 SSH(Secure Shell)相关的配置文件和密钥文件的目录。这个目录通常位于用户的主目录下(即 ~/.ssh),在 Linux、macOS 和 Windows 10 及更高版本中都存在。

~/.ssh/
├── authorized_keys
├── config
├── id_rsa
├── id_rsa.pub
├── known_hosts
└── known_hosts.old

常见文件及用途

config

配置

配置 SSH 客户端的行为,包括主机别名、用户名、端口号、私钥文件等,简化ssh连接。

示例

 Host dev  #用于定义别名 简化连接
     Hostname 192.198.46.220 # 指定实际连接的主机 IP 地址。
     Port 22 #指定连接的端口号
     User spark_cdh #指定连接的用户名
     IdentityFile ~/.ssh/id_rsa #指定用于身份验证的私钥文件。

使用方法

ssh dev

id_rsa 和 id_rsa.pub

用途

存储用户的私钥和公钥对

说明

  • id_rsa:私钥文件,用于身份验证。
  • id_rsa.pub:公钥文件,通常添加到远程服务器的 ~/.ssh/authorized_keys 文件中

authorized_keys

用途:存储允许连接到当前用户的公钥。

说明:每行包含一个公钥,当客户端尝试连接时,服务器会验证客户端提供的公钥是否在 authorized_keys 文件中。

known_hosts

用途:存储已知的远程主机的公钥,用于主机验证。

说明:每次连接到一个新的远程主机时,SSH 客户端会将远程主机的公钥添加到 known_hosts 文件中,以防止中间人攻击。

known_hosts.old

用途:备份的 known_hosts 文件,通常在 known_hosts 文件被修改或更新时自动生成。

environment

用途:存储环境变量,可以在 SSH 会话中使用。

说明:较少使用,主要用于特定的环境配置。

ssh_config

用途:全局 SSH 客户端配置文件,通常位于 /etc/ssh/ssh_config。

说明:用户可以在此文件中设置全局的 SSH 客户端配置,但通常不建议修改此文件,而是使用 ~/.ssh/config 文件。

配置隧道访问内网应用流程

1.生成密钥对

本地客户端生成密钥对

ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f ~/.ssh/id_rsa

参数解释

  • -t rsa:指定生成RSA类型的密钥
  • -b:指定秘钥的长度4096位
  • -c:添加注释,通常为邮箱名称
  • -f: 指定生成的秘钥文件名

2.将公钥添加到远程主机

配置服务器B免密:通过ssh-copy-id将公钥拷贝至远程服务器上

ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_host_B

配置服务器A免密:手动将本机的公钥文件的公钥文件内容copy,登录到目标服务器,在authorized_keys文件的最后追加一行公钥的内容

**注释:如果登录目标服务器需要经过跳板机,使用手动copy的方式

配置完这一步就可以ssh免密登录

3.编辑config文件

Host serverB
    Hostname remote_host_B
    Port 22
    User user
    IdentityFile ~/.ssh/id_rsa

Host serverA
    Hostname remote_host_A
    Port 22
    User user
    ProxyCommand ssh -W %h:%p remote_host_B
    IdentityFile ~/.ssh/id_rsa

4.验证

ssh serverA

能正常登录就配置成功

5.启动ssh隧道

ssh -ND 18080 serverA -v

6.配置代理

代理工具比较多,我使用的是chrome浏览器的一个代理插件SwitchyOmega,打开proxy的配置

因为是在本机的18080端口开启的隧道,所以在代理服务器配置代理协议为SOCKS5,代理服务器为localhost,端口为18080,然后开启proxy,这样就可以在本机访问内网的web应用了


http://www.kler.cn/a/401135.html

相关文章:

  • Springboot3.3.5 启动流程之 tomcat启动流程介绍
  • 记录java Collections.sort踩的坑
  • 如何在C#中处理必盈接口返回的股票数据?
  • React Native 全栈开发实战班 - 打包发布之热更新
  • css uniapp背景图宽度固定高度自适应可以重复
  • JWT 过期后 自动刷新方案
  • K8S containerd拉取harbor镜像
  • 【WPF】Prism学习(七)
  • 《Camera-free Image to PanoramaGeneration with Diffusion Model》论文解析——CamFreeDiff
  • 图像编辑一些概念:Image Reconstruction与Image Re-generation
  • chatgpt训练需要什么样的gpu硬件
  • 得物彩虹桥架构演进之路-负载均衡篇
  • 6 设计模式原则之单一职责原则
  • 深入浅出 Spring Cloud 微服务:架构、核心组件与应用实践
  • NLP论文速读(EMNLP 2024)|动态奖励与提示优化来帮助语言模型的进行自我对齐
  • Java 设计模式 详解
  • AI工具百宝箱|任意选择与Chatgpt、gemini、Claude等主流模型聊天的Anychat,等你来体验!
  • RabbitMQ实战启程:从配置到故障排查的实战处理(下)
  • 高级java每日一道面试题-2024年11月14日-基本篇-static都有哪些用法?
  • Linux之vim全选,全部复制,全部删除
  • 【H2O2|全栈】JS进阶知识(五)ES6(1)
  • 记录下,用油猴Tampermonkey监听所有请求,绕过seesion
  • Jmeter进阶篇(26)杀掉Tomcat的几种方法
  • 国产三维CAD 2025新动向:推进MBD模式,联通企业设计-制造数据
  • 【数据结构】七种常用排序总结
  • 阿里云ElasticSearch跨集群备份恢复实践