利用 SSH 创建临时代理

利用 SSH 创建临时代理是一种非常方便、安全且强大的方法,特别适用于访问受限网络、加密公共Wi-Fi上的流量,或者临时从“国外”IP访问某些资源。

其中最常用的就是 SSH 动态端口转发


方法一:SSH 动态端口转发(最常用、最灵活)

这种方式会创建一个 SOCKS 代理。一旦建立,你可以将任何支持 SOCKS 代理的应用程序(如浏览器、即时通讯软件、甚至整个操作系统)配置到这个代理上。

命令格式:

ssh -D [本地端口] [用户名]@[SSH服务器地址] -N

参数解释:

  • -D [本地端口]: 这是关键参数。它指定在本地机器上开启一个 SOCKS 代理服务器的端口。常用端口如 10808080
  • -N: 告诉 SSH 只建立连接,但不执行远程命令。这对于纯端口转发非常有用,可以节省资源。
  • [用户名]@[SSH服务器地址]: 你的 SSH 服务器登录信息。

具体步骤:

  1. 建立 SSH 连接
    在终端(Linux/macOS)或 PowerShell/Git Bash(Windows)中执行以下命令: ssh -D 1080 [email protected] -N 如果是第一次连接,会提示你确认服务器指纹,输入 yes。然后输入你的 SSH 密码(如果使用密钥且未设置密码短语,则会自动连接)。
  2. 配置应用程序使用代理
    现在,本地 127.0.0.11080 端口已经是一个 SOCKS5 代理服务器了。接下来需要配置你的软件使用它。
    • 浏览器(以 Firefox 为例)
      1. 打开 设置 -> 网络设置 -> 手动代理配置
      2. SOCKS 主机 填写 127.0.0.1 (或 localhost)
      3. 端口 填写 1080
      4. 选择 SOCKS v5
      5. 勾选 使用 SOCKS v5 时代理 DNS (这可以防止 DNS 泄漏,非常重要!)
      6. 点击确定。
    • 系统全局代理(不推荐,但可行):
      在系统网络设置中配置 SOCKS 代理,但请注意这可能会影响所有流量,导致某些国内应用变慢。
    • 命令行工具(如 curl:
      bash curl --socks5 127.0.0.1:1080 http://ifconfig.me
      这个命令会通过代理显示你的公网 IP,应该是你的 SSH 服务器的 IP。
  3. 使用完毕
    完成需要代理的操作后,回到终端,按 Ctrl + C 即可中断 SSH 连接,代理也随之失效。

方法二:SSH 本地端口转发

这种方法适用于将某个特定的远程服务“映射”到本地的一个端口。比如,你想访问远程服务器内网里的一个 Web 服务。

命令格式:

ssh -L [本地端口]:[目标地址]:[目标端口] [用户名]@[SSH服务器地址] -N

应用场景:
你的 SSH 服务器内网有一台机器(192.168.1.100)运行了一个 Web 服务(端口 80),你无法直接访问,但 SSH 服务器可以访问。

ssh -L 8080:192.168.1.100:80 [email protected] -N

现在,在你的本地电脑上访问 http://127.0.0.1:8080,就等于通过 SSH 服务器访问了内网那台机器的 http://192.168.1.100:80


方法三:SSH 远程端口转发

这种方法较少用于做代理,更多用于内网穿透。例如,将你本地开发的服务临时暴露给公网访问。

命令格式:

ssh -R [远程端口]:[本地地址]:[本地端口] [用户名]@[SSH服务器地址] -N

应用场景:
你在本地 3000 端口运行了一个 Web 应用,想让你的朋友通过你的 SSH 服务器临时访问。

ssh -R 8080:127.0.0.1:3000 [email protected] -N

现在,任何能访问你的 SSH 服务器的人,访问 http://your-ssh-server.com:8080,流量就会被转发到你本地机器的 3000 端口。


高级技巧与优化

  1. 使用密钥认证免密码
    为了安全和方便,建议使用 SSH 密钥对而不是密码登录。可以使用 ssh-copy-id 命令将公钥上传到服务器。
  2. 保持连接稳定
    为了防止连接因空闲而断开,可以在 ~/.ssh/config 文件(没有就创建一个)中为你的服务器添加配置: Host your-ssh-server.com ServerAliveInterval 60 ServerAliveCountMax 3 这表示每60秒发送一个保活信号,如果连续3次失败才断开连接。
  3. 压缩数据
    如果传输的内容文本较多,可以加上 -C 参数来启用压缩,可能提高速度。
    bash ssh -D 1080 -C [email protected] -N

重要注意事项

  • 权限:你需要有一台可以 SSH 登录的远程服务器(如 VPS)。
  • 安全:SSH 通道本身是加密的,非常安全。
  • 性能:代理的速度和稳定性取决于你的 SSH 服务器和你们之间的网络质量。
  • 流量:所有通过代理的流量都会消耗你 SSH 服务器的出口带宽。

总结:对于绝大多数临时代理需求,方法一(ssh -D)是最简单、最通用、最推荐的选择。 它为你创建了一个灵活的 SOCKS5 代理,可以供各种应用程序使用。

No Comments

Send Comment Edit Comment


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
Previous
Next