简说 SSH 隧道-- Local 与 Remote 端口转发

2024-04-16 18:58

本文主要是介绍简说 SSH 隧道-- Local 与 Remote 端口转发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、用 LocalForward 访问远端不能直接访问的东西

1.1 远端被墙了

假定你所在的网络无法直连某个服务器,比如 goodle.com,但你有一台 vps 可以连接 goodle.com,你可以这样

ssh -L 8888:goodle.com:80 yourname@yourvps.com
-L 表示 Local 转发
这一句表示 forward my (local)localhost port 8888 to goodle.com at port 80

连接成功之后,打开你的浏览器,输入 http://localhost:8888 哇,Goodle 能够访问了!

1.2 远端没有被墙,但它只允许自己(localhost)访问自己

比如你那台数据库服务器,只允许 localhost 访问。可你….就是想远程访问嘛

ssh -L 3406:localhost:3306 yourname@yourdbserver.com
这一句表示 forward my (local)localhost port 3406 to (remote)localhost at port 80
许多人被两个端口之间夹着的 localhost 迷惑,我上面这句解释够清楚了,希望你不要犯糊涂。

连接成功之后,

mysql -u uname -p pass -P 3406 -hlocalhost
这一句里的 localhost 当然是 (local)localhost

你现在就可以愉快地玩耍了。

二、用 RemoteForward 让远端访问你本地的东西

假设你做了个好玩的网站,想展示给你网上的朋友看。然而你并没有公网IP,或者你虽然有公网IP,但是你没有路由器管理密码… 总之他没有法子直接连接你的机器。

然而你有一台vps,那就好办了

ssh -R 8888:localhost:80 yourname@yourvps.com
-R 表示Remote 转发
这一句表示 forward my (local)localhost port 80 to (remote)machine at port 8888

你现在访问

http://yourvps.com:8888

理论上就可以看到你本地机器上运行的新奇网站了。当然,这只是理论上,你也有可能看不到,如果你 vps 上的配置不太合适的话。假定你遇到了这种情况….(其实大部分情况下都会遇到,因为 sshd 的默认配置是不允许这种事情发生的

首先登录到 vps 机器,然后
sudo vim /etc/ssh/sshd_config
把下面这行配置放到 sshd_config 的末尾(其实放别的位置也可以的
GatewayPorts yes
然后 sudo service ssh restart , 再来一遍。

三、别急,还有一点技巧要说

你也许注意到我们在创建隧道的同时,每次都登录进远端机器并且拿到一个终端(而且还不能随便关闭….,一关隧道就断了)。这确实有点蛋疼多此一举,毕竟我们只想开个隧道。

ssh -nNT -R 8888:localhost:80 yourname@yourvps.com

注意上面的黑体参数。 -nNT 可以保你只开隧道,不进终端。

这其实是一篇翻译文章(然而并不忠实原文)

这篇关于简说 SSH 隧道-- Local 与 Remote 端口转发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/909623

相关文章

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

git ssh key相关

step1、进入.ssh文件夹   (windows下 下载git客户端)   cd ~/.ssh(windows mkdir ~/.ssh) step2、配置name和email git config --global user.name "你的名称"git config --global user.email "你的邮箱" step3、生成key ssh-keygen

简说目前市面上最流行的“AI Agentic”

背景 当吴恩达在布道完著名的Agent设计模式后 他于不久后又引领了AI界的开发们开始关注另一种高级开发模式,即"Agentic",吴恩达多次反复强调:“Agentic是比Agent更具未来”。 那么什么是Agentic呢? 什么是AI Agentic AI Agentic即代理人工智能。 当我们谈论代理人工智能时,其实指的是一类目标实现自主操作的人工智能系统。这意味着,设计用于做

在SSH的基础上使用jquery.uploadify.js上传文件

在SSH框架的基础上,使用jquery.uploadify.js实现文件的上传,之前搞了好几天,都上传不了, 在Action那边File接收到的总是为null, 为了这个还上网搜了好多相关的信息,但都不行,最后还是搜到一篇文章帮助到我了,希望能帮助到为之困扰的人。 jsp页面的关键代码: <link rel="stylesheet" type="text/css" href="${page

Caused by: org.hibernate.MappingException: Could not determine type for: org.cgh.ssh.pojo.GoodsType,

MappingException:这个主要是类映射上的异常,Could not determine type for: org.cgh.ssh.pojo.GoodsType,这句话表示GoodsType这个类没有被映射到

Docker远程连接和Docker Remote Api

在Docker生态系统中一共有3种API:Registry API、Docker Hub API、Docker Remote API 这三种API都是RESTful风格的。这里Remote API是通过程序与Docker进行集成和交互的核心内容。 Docker Remote API是由Docker守护进程提供的。默认情况下,Docker守护进程会绑定到一个所在宿主机的套接字:unix:///v

SSH连接虚拟机中的Ubuntu 12.0.4

摘要:主要是解决不能使用ssh远程Ubuntu的问题、使用的远程工具是putty、也可以使用xshell、ubunut12.0.4是装在虚拟机中的、不过这个应该没有什么影响。 一:问题的出现 前两天使用VMware装了一个ubuntu12.0.4之后、因为常常使用命令行、又喜欢在虚拟机与实体机中切来切去、感觉很不方便、就想在xp中远程ubuntu、遇到了点小意外、经过一会调试解决成功、把

【20240907问题记录(未解决)】Conda环境问题:SSH与本地环境变量不一致

Conda 允许用户在同一系统上创建多个独立的Python环境。然而,最近遇到了一个奇怪的问题:通过SSH连接到远程Ubuntu机器时,Conda环境变量的行为与本地机器不一致。以下是具体遇到的问题: 1. 问题描述 在本地Ubuntu机器上,我的conda的python版本是3.6,而pip版本可以通过命令 pip --version 查看,显示为: pip 21.3.1 from /ho

ssh版本升级导致连接失败

公司系统使用的是第三方ssh插件jsch-0.1.39.jar,之前采集正常的,但是厂家服务器ssh升级成2.0版本,然后程序就报错,异常如下: com.jcraft.jsch.JSchException: Algorithm negotiation failat com.jcraft.jsch.Session.receive_kexinit(Session.java:510)at com.