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

使用 SSH 隧道通过云主机(如 AWS EC2)实例访问网络。

基本概念

SSH 隧道可以通过 EC2 实例转发你的网络流量,主要有三种类型:

  • 本地端口转发 (Local Port Forwarding): 访问远程服务
  • 动态端口转发 (Dynamic Port Forwarding): 创建 SOCKS 代理
  • 远程端口转发 (Remote Port Forwarding): 让远程访问本地服务

最常用的是动态端口转发,可以让 EC2 成为你的代理服务器。

具体操作步骤

1. 准备工作

确保你有:

  • EC2 实例的 SSH 密钥文件 (.pem 文件)
  • EC2 实例的公网 IP 地址
  • EC2 安全组允许 SSH (端口 22) 入站

2. 建立动态端口转发 (SOCKS 代理)

ssh -i /path/to/your-key.pem -D 1080 -C -N ec2-user@your-ec2-ip

参数说明:

  • -i: 指定密钥文件
  • -D 1080: 在本地 1080 端口创建 SOCKS5 代理
  • -C: 压缩数据
  • -N: 不执行远程命令,只做端口转发
  • ec2-user: 根据 AMI 类型可能是 ubuntu, admin

3. 配置应用使用代理

浏览器设置 (以 Firefox 为例):

  1. 打开设置 → 网络设置 → 手动代理配置
  2. SOCKS Host: localhost127.0.0.1
  3. Port: 1080
  4. 选择 SOCKS v5

Chrome/Edge (通过命令行启动):

# macOS/Linux
google-chrome --proxy-server="socks5://localhost:1080"# Windows
"C:\Program Files\Google\Chrome\Application\chrome.exe" --proxy-server="socks5://localhost:1080"

系统级代理 (macOS/Linux):

export http_proxy=socks5://localhost:1080
export https_proxy=socks5://localhost:1080

4. 本地端口转发示例

如果要访问 EC2 内网中的特定服务:

ssh -i your-key.pem -L 8080:internal-server:80 ec2-user@your-ec2-ip

然后访问 localhost:8080 就相当于访问 internal-server:80

5. 保持连接稳定

添加保活参数:

ssh -i your-key.pem -D 1080 -C -N \-o ServerAliveInterval=60 \-o ServerAliveCountMax=3 \ec2-user@your-ec2-ip

或者使用 autossh:

autossh -M 0 -i your-key.pem -D 1080 -C -N \-o ServerAliveInterval=60 \ec2-user@your-ec2-ip

6. 后台运行

ssh -i your-key.pem -D 1080 -C -N -f ec2-user@your-ec2-ip

-f 参数让 SSH 在后台运行。

安全建议

  1. 密钥权限: 确保 .pem 文件权限正确

    chmod 400 your-key.pem
    
  2. 安全组配置: 只允许你的 IP 访问 SSH

  3. 使用 SSH 配置文件 (~/.ssh/config):

    Host my-ec2-tunnelHostName your-ec2-ipUser ec2-userIdentityFile ~/.ssh/your-key.pemDynamicForward 1080ServerAliveInterval 60Compression yes
    

    然后只需运行:

    ssh -N my-ec2-tunnel
    

测试连接

# 测试代理是否工作
curl --proxy socks5://localhost:1080 https://ipinfo.io# 或使用 proxychains
proxychains4 curl https://ipinfo.io
http://www.jsqmd.com/news/162542/

相关文章:

  • 有源蜂鸣器和无源区分驱动电路系统学习路径
  • 大模型Token消耗优化技巧:减少无效请求的方法
  • 如何在PyTorch-CUDA-v2.8中运行HuggingFace示例脚本?
  • Docker守护进程启用GPU支持的系统级配置
  • yolov11误检分析:利用PyTorch-CUDA-v2.7调试数据集问题
  • PyTorch模型训练卡顿?检查CUDA和cuDNN版本匹配
  • Git stash暂存更改:临时切换PyTorch实验分支
  • 使用Conda创建独立PyTorch环境,隔离不同项目依赖
  • SSH配置config文件简化多主机连接管理
  • 无需手动installing:PyTorch-CUDA镜像解决依赖冲突顽疾
  • Conda创建专用PyTorch环境避免包冲突
  • YOLOv11n轻量级模型在PyTorch-CUDA环境的表现评测
  • 全面讲解buck电路图及其原理的基本构成
  • SSH远程连接PyTorch-CUDA容器:实现安全高效的AI开发模式
  • Docker Compose配置GPU资源限制防止OOM
  • DiskInfo下载官网之外:监控GPU存储的新方法
  • PyTorch v2.8新特性解读:性能提升背后的秘密
  • GitHub Wiki搭建项目文档:组织PyTorch使用手册
  • SSH隧道转发Jupyter端口实现安全远程访问
  • cuda安装失败终结者:PyTorch-CUDA-v2.8预集成驱动兼容包
  • 低成本获取GPU算力:预装镜像大幅缩短准备时间
  • Protel99SE安装成功后的初步设置:手把手指导
  • PyTorch RNN循环神经网络实现原理剖析
  • Transformers pipeline快速上手:三行代码实现文本分类
  • FPGA实现数字频率计设计:完整指南
  • Docker run常用参数详解启动PyTorch容器
  • PyTorch-CUDA-v2.7镜像中加载大型模型的分片加载策略
  • Markdown撰写技术报告:结合PyTorch可视化图表
  • PyTorch Transformer架构逐层拆解分析
  • Amlogic芯片刷机必备:usb_burning_tool超详细版教程