随风逐叶 随风逐叶
首页
  • Quick Reference (opens new window)
  • EgretEngine开发者文档 (opens new window)
  • TinaX框架
  • SSH教程
  • VSCode插件开发
关于
  • 分类
  • 标签
  • 归档

rontian

从事游戏开发10多年的老菜鸟一枚!
首页
  • Quick Reference (opens new window)
  • EgretEngine开发者文档 (opens new window)
  • TinaX框架
  • SSH教程
  • VSCode插件开发
关于
  • 分类
  • 标签
  • 归档
  • SSH教程
  • SSH基础知识

  • SSH客户端

  • SSH 密钥登录

  • SSH 服务器

  • SSH 端口转发

    • SSH 端口转发
    • 简介
    • 动态转发
    • 本地转发
    • 远程转发
    • 实例
    • 简易VPN
    • 两极跳板
    • 参考链接
  • SSH 证书登录

  • scp 命令

  • rsync 命令

  • sftp 命令

本地转发

# 本地转发

本地转发(local forwarding)指的是,SSH 服务器作为中介的跳板机,建立本地计算机与特定目标网站之间的加密连接。本地转发是在本地计算机的 SSH 客户端建立的转发规则。

它会指定一个本地端口(local-port),所有发向那个端口的请求,都会转发到 SSH 跳板机(tunnel-host),然后 SSH 跳板机作为中介,将收到的请求发到目标服务器(target-host)的目标端口(target-port)。

$ ssh -L local-port:target-host:target-port tunnel-host
1

上面命令中,-L参数表示本地转发,local-port是本地端口,target-host是你想要访问的目标服务器,target-port是目标服务器的端口,tunnel-host是 SSH 跳板机。

举例来说,现在有一台 SSH 跳板机tunnel-host,我们想要通过这台机器,在本地2121端口与目标网站www.example.com的80端口之间建立 SSH 隧道,就可以写成下面这样。

$ ssh -L 2121:www.example.com:80 tunnel-host -N
1

然后,访问本机的2121端口,就是访问www.example.com的80端口。

$ curl http://localhost:2121
1

注意,本地端口转发采用 HTTP 协议,不用转成 SOCKS5 协议。

另一个例子是加密访问邮件获取协议 POP3。

$ ssh -L 1100:mail.example.com:110 mail.example.com
1

上面命令将本机的1100端口,绑定邮件服务器mail.example.com的110端口(POP3 协议的默认端口)。端口转发建立以后,POP3 邮件客户端只需要访问本机的1100端口,请求就会通过 SSH 跳板机(这里是mail.example.com),自动转发到mail.example.com的110端口。

上面这种情况有一个前提条件,就是mail.example.com必须运行 SSH 服务器。否则,就必须通过另一台 SSH 服务器中介,执行的命令要改成下面这样。

$ ssh -L 1100:mail.example.com:110 other.example.com
1

上面命令中,本机的1100端口还是绑定mail.example.com的110端口,但是由于mail.example.com没有运行 SSH 服务器,所以必须通过other.example.com中介。本机的 POP3 请求通过1100端口,先发给other.example.com的22端口(sshd 默认端口),再由后者转给mail.example.com,得到数据以后再原路返回。

注意,采用上面的中介方式,只有本机到other.example.com的这一段是加密的,other.example.com到mail.example.com的这一段并不加密。

这个命令最好加上-N参数,表示不在 SSH 跳板机执行远程命令,让 SSH 只充当隧道。另外还有一个-f参数表示 SSH 连接在后台运行。

如果经常使用本地转发,可以将设置写入 SSH 客户端的用户个人配置文件(~/.ssh/config)。

Host test.example.com
LocalForward client-IP:client-port server-IP:server-port
1
2
上次更新: 2023/10/17, 16:39:02 访问次数: 0
动态转发
远程转发

← 动态转发 远程转发→

最近更新
01
一些Shell常用的功能写法整理
10-20
02
删除git仓库submodule的步骤
10-20
03
django基本命令
10-16
更多文章>
Copyright © 2017-2025 随风逐叶
沪ICP备18008791号-1 | 沪公网安备31011502401077号

网站访问总次数: 0次
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式