You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何配置HTTPS的SSH端口转发?本地4433端口访问报404问题解决

解决HTTPS SSH端口转发的404问题

让我来帮你搞定这个问题——你碰到的404错误大概率是转发命令的目标设置错了,咱们一步步来修正:

正确的SSH端口转发命令

你需要让本地4433端口的请求,通过SSH隧道转发到远程服务器能访问的example.com:443端口,而不是转发到远程服务器自身的443端口(这是最常见的错误点)。直接运行这条命令(替换user@remote-server为你的远程服务器登录信息):

ssh -L 4433:example.com:443 user@remote-server

这条命令的各部分含义:

  • -L:表示创建本地端口转发(Local Port Forwarding)
  • 4433:本地要监听的端口(你选的非特权端口,不用sudo很合理)
  • example.com:443:指定远程服务器作为跳板,要把请求转发到的目标地址和端口(也就是你要访问的HTTPS网站的真实地址)

验证转发是否生效

  1. 保持SSH连接窗口打开,打开浏览器访问https://localhost:4433(忽略证书警告即可,因为本地localhost的证书和example.com不匹配)
  2. 或者用curl快速测试(同样忽略证书校验):
curl -k https://localhost:4433

如果命令正确,你应该能看到example.com的正常内容,而不是404。

额外问题排查(如果还是有问题)

  • SSH连接是否保持活跃?:如果SSH窗口关闭,转发会立即失效。可以添加参数让它后台运行:
    ssh -f -N -L 4433:example.com:443 user@remote-server
    
    其中-f让SSH后台运行,-N表示只做转发不打开远程shell。要停止后台进程可以用pkill -f "ssh -f -N -L 4433"
  • 远程服务器能访问example.com吗?:先在远程服务器上运行curl https://example.com测试,确保跳板服务器本身能正常访问目标网站,否则转发也会失败。
  • 本地4433端口被占用了吗?:用lsof -i :4433netstat -tulpn | grep 4433检查端口占用情况,如果被占用,换个本地端口(比如4434)再试。
  • 浏览器缓存干扰?:尝试用隐私窗口访问,或者清空浏览器缓存后再试。

为什么之前会404?

如果你的原转发命令是类似ssh -L 4433:localhost:443 user@remote-server,那实际是把本地4433转发到了远程服务器的localhost:443端口——而远程服务器的443端口可能根本没有运行对应example.com的服务,自然会返回404。我们需要的是让远程服务器作为跳板,把请求转发到真正的example.com:443,所以目标地址必须写完整的网站域名和端口。


内容的提问来源于stack exchange,提问作者kenorb

火山引擎 最新活动