「SSH 黑魔法」: 代理、端口转发和 shell 共享
在好朋友的推荐下,我看了这个视频:
The Black Magic Of SSH
这个视频里面,介绍了 ssh 的一些高级应用;结合工作的经历,两类问题会对我们平时的工作帮助很大:
1. 两个人怎么看同一个终端界面
2. 怎样用一台服务器做端口转发
所以我把它分享给了团队里的其他同事,这样大家在平时工作的时候,配合得会更好一些,下载在这里。
Shell 共享
你可以把这个问题看成一个字符版的 vnc 或者 RDP,比如你的机器遇到了一个问题,但是又想看一下大牛是如何处理的;或者你需要别人手把手的想你演示一些东西,这个时候需要你和大牛同时看到同一个 shell 终端。
严格地说这个解决方式不是 ssh 自己的功劳了,安装一个 tmux (screen) 就可以轻松解决这个问题。
简单的步骤如下:
1. 用户A 连接到一台 ssh 主机上,然后输入 tmux,创建一个 session
2. 用户B 链接到相同的主机上,输入 tmux attach, 打开用户A 创建的 session
这样 A、B两个用户现在就拥有了一个 全双工 的 终端了: 两个人的输入、屏幕上显示的内容完全是同步的; 当然,为了你们两个不至于打起来,还是把它当作半双工的使用才好。
Socks5 proxy
“Across the Great Wall we can reach every corner in the world.”
这是一个比较敏感的话题,我就看在你是为了访问 google scholarship 和 python.org 的份上,继续往下写好了。
很多人都会有一个 vps 来搭建个人的 blog,这样可以使用 ssh 来很方便的搭起一个 socks5 proxy。
在终端里输入
man ssh
找到其中的“-D” 部分, 你可以看到以下解释:它会在主机上占用指定的端口,然后任何一个连接到它的链接,都会通过主机转发出去,并且目前只支持 socks4、sucks5 协议。
所以你可以这样连接一台服务器:
user@hostname
然后你就拥有了一个私人的 socks5 proxy, 地址就是你主机的地址,端口就是 -D 后面的参数了。
端口转发
就像 640k 内存就够一台电脑足够使用一样,IPV4 也是足够使用的;所以我们有了 NAT 这个东西。随后来了两类问题:
1. 我们公司有一台对外的机器,和N台对内的机器,怎样让其他用户,可以直接访问内网机器的某个/些端口
2. 我有一台公网的主机,家里有一台机器(在移动或者长宽的后面),怎样让别人能连到我家里的电脑上去
把本机的请求转发到远程主机: SSH -L
L 就是 local 的意思,使用 -L 参数,可以把发往本机的请求转发到其他地址上面去。
比如我厂有两台机器,一台机座O,是可以通过外网访问的;另外一台记作 I,是躲在防火墙后面,但是 O I 之间,是畅通无阻的。这时候你在I上运行了一个服务,想让大家可以访问,又没有权限更改管理员对防火墙的设定,那么 -L 就可以拯救你了: 在O与I之间,做一个端口转发; 凡是发往 O:port 的请求,都会被转发到 I:port_1 上面去。
-L 后面支持三个参数:
-L [bind_address:]port:host:hostport
port: 本地端口
host: 把发往本地的端口,转发到哪台主机上
hostport: 转发的端口号。
如果我们想把发往 ip1 8000端口的请求,全部转发到 ip2 80端口上面去,可以在 ip1 的主机上,建立这样一个连接:
:ip2: user@hostname
事情就这样成了!
如果你舍得多花些心思,你会发现, ssh 后面的hostname,不一定需要是 ip1,也是可以转发的
把发往主机的请求转发到本地:SSH -R
如果你了解了 -L 的使用,那么 -R 自然也很容易理解了,就是反过来,把发往主机的请求,转发回本地;这个方式很适用于处在各个内网的用户。
我的朋友 S 小姐,公司最近给她发了一个 rMBP,用来为公司录制的视频进行格式转换; 显然是 ffmpeg 大显身手的时候。其实我说的是我,因为她不太会用cli来使用 ffmpeg。不过她很不幸的选择了长宽,外面的链接,无论如何也不能主动连接过去;想在QQ上介绍怎么 ffmpeg 怎么使用也是不太容易的事情。如果能够直接 ssh 到她的机器上,就可以直接操作了。这个时候,就用到 -S 来把远程的数据向本地转发了。
-R 的参数,和 -L 类似
-R [bind_address:]port:host:hostport
会把发往主机 port 端口的请求,转发到 host的 hostport 端口上,所以如果你想让其他人访问你的电脑,可以这么做:
: uesr@hostname
这个时候,任何发往 hostname:8000 的请求,都会被转发到 127.0.0.1:80 上来。
「SSH 黑魔法」: 代理、端口转发和 shell 共享的更多相关文章
- Linux SSH隧道技术(端口转发,socket代理)
动态转发(SOCKS5代理): 命令格式:ssh -D <local port> <SSH Server> ssh -fnND 0.0.0.0:20058 172.16.50. ...
- SSH高级应用(端口转发)
转发自:http://www.cnblogs.com/sting2me/p/5167730.html 基于SSH协议的端口转发 [前言] 最近一直在使用ssh协议的端口转发(隧道)功能,完成对内网空透 ...
- SSH远程登录和端口转发详解
SSH远程登录和端口转发详解 介绍 SSH 是创建在应用层和传输层基础上的安全协议,为计算机上的 Shell(壳层)提供安全的传输和使用环境. SSH 只是协议,有多种实现方式,本文基于其开源实 ...
- SSH的三种端口转发
1.本地转发 本地转发,顾名思义就是把本地主机端口转发到远程主机端口. ssh -L 本地主机端口:远程主机:远程主机端口 举例:ssh -L 50000:www.google.com:80 user ...
- 代理端口转发工具rinetd
转载: https://my.oschina.net/wuweixiang/blog/2983280 rinetd 前言 iptables 的功能当然强大,但理解与设置却有点抽象,便通过google认 ...
- SSH 端口转发+内网穿透
用最直白的语言对本文所有内容进行定义: 端口转发(-L):用A机器(内网)登录B机器(公网), 在A机器打开端口,将收到的所有请求转发到B机器的某个端口 (在代理机上执行) 内网穿透(-R):用A机器 ...
- SSH 内网端口转发实战
导读 大家都知道SSH是一种安全的传输协议,用在连接服务器上比较多.不过其实除了这个功能,它的隧道转发功能更是吸引人. 如果两个内网之间的linux服务器需要互相登录,或需要互相访问内网某个端口,担忧 ...
- 【转】实战 SSH 端口转发
本文转自:http://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/index.html,至于有什么用,懂的懂! 实战 SSH 端口转发 通 ...
- SSH 端口转发
第一部分 概述 当你在咖啡馆享受免费 WiFi 的时候,有没有想到可能有人正在窃取你的密码及隐私信息?当你发现实验室的防火墙阻止了你的网络应用端口,是不是有苦难言?来看看 SSH 的端口转发功能能给我 ...
随机推荐
- 该死的Kafka,远程连接Kafka超时以及解决办法
关于消息的发布与订阅,之前一直使用的是activeMQ基于JMS的消息队列进行操作的,最近听说有一个更高效的消息的发布与订阅技术,就是Kafka. 关于kafka的介绍,在这里就不做过多讲解了,因为我 ...
- 【转】Spring Boot 日志配置(超详细)
更新日志: 20170810 更新通过 application.yml传递参数到 logback 中. [toc] 简书不支持目录,截图一张. image.png 默认日志 Logback: 默认情况 ...
- mybatis调用oracle存储过程例子.
1.MYBATIS方法: <select id="getFlowNum" statementType="CALLABLE"> <![CDATA ...
- 基于HTTP协议的轻量级开源简单队列服务:HTTPSQS 笔记
队列服务就是为了提高相应速度,把耗时或者不需要即时处理的流程放到异步处理过程中,HTTPSQS就是这样一个服务. 更详细的可以参考 http://blog.s135.com/httpsqs/,这里记录 ...
- 手动编译安装Libvirt之后利用systemctl管理libvirtd服务
因为要给特殊的虚拟机关联文件指定selinux标签,而默认的Libvirt没有这个功能,所以需要修改LIbvirt源代码,重新编译安装Libvirt,而手动编译安装的LIbvirt,没有办法使用sys ...
- javascrpt 页面格式化页面
下面这个页面,格式化javaScript <html> <head> <title>JS格式化工具 </title> <meta http-equ ...
- 微信对接HIS——微信可查检验结果
患者仅仅要关注医院官方微信,不管身处何地,输入自己预留在医院的电话号码.检验单的条码号,就能够了解检验结果. 医院信息系统在提供病人数据信息前,会对查询方做身份认证和安全防护检測,录入患者挂号时预留的 ...
- 文本情感分类:分词 OR 不分词(3)
为什么要用深度学习模型?除了它更高精度等原因之外,还有一个重要原因,那就是它是目前唯一的能够实现“端到端”的模型.所谓“端到端”,就是能够直接将原始数据和标签输入,然后让模型自己完成一切过程——包括特 ...
- 006-Hadoop Hive sql语法详解1-数据结构和Hive表建立
1.认识hive: Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构化的数据文件映射为一张数据库表, ...
- 实参相依查找[条款25]----《C++必知必会》
名字空间对现代C++编程和设计有着深远的影响.其中有些影响直接而明显,例如using声明和using 指令以及采用名字空间作用域加以限定的名字.然而,名字空间还有一些在语法上不那么明显但任然很有基础. ...