当你自我炫耀时,便会受到谄媚者的青睐

发掘积累过程的快感

首页 » BIBLE模型 » Linux » ssh 隧道技术

ssh 隧道技术


现实环境:

本地电脑 A,跳板服务器 B,限制保护服务器 C。

所有对 C 的操作,都必须通过服务器 B 的中转。

当需需要连接服务器 C 时,如果不想通过多级跳转,那么可以使用 SSH 的隧道和转发功能。

首先建立本机到服务器 C 的隧道,通过服务器 B 转发。

ssh -N -f -g -L 2222:199.0.0.2:22 hlei@test.com -p 22

-C:压缩数据传输。

-N :不执行脚本或命令,通常与-f 连用。

-f :后台认证用户/密码,通常和-N 连用,不用登录到远程主机。

-g :在-L/-R/-D 参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。

-L 本地端口:目标 IP:目标端口

建立这个隧道后,就可以在 A 电脑,直接 ssh -p 2222 user@localhost。登陆保护服务器 C。

另一个场景:

保护服务器 C 上面又一个 WEB 平台,现在要在 A 电脑访问,跳板机 B 只能通 C 机器的 22 端口,其他的都不能访问,此时就需要通过上面建立的隧道,再建立服务器 C 到本机的直接隧道。

ssh -N -f -g -L 8899:127.0.0.1:18889 test@localhost -p 2222

现在就可以打开 127.0.0.1:8899 来访问在 C 平台的 18889 端口。现在局域网的其他机器并不能访问 A 电脑的 IP,所以还可以进行一个操作。

ssh -N -f -g -L 192.168.2.44:8899:127.0.0.1:18889 test@localhost -p 2222

那么本地局域网的任何机器访问 192.168.2.44:8899 都会自动被映射到 C 机器的 18889。

反向隧道

应用场景在于,人在外地 C,你有一台服务器 B(有公网 1.1.1.1),家里还有一台电脑 A,现在你想在外地 C 访问家里的服务器 B,那么这时候就可以先在家里面建立一个 B 到 A 的反向隧道,然后你在任何能访问到 B 的地方,都能通过反向隧道访问家里的电脑。

ssh  -NfgC -R 1234:127.0.0.1:22 test@1.1.1.1

然后你在外地,就可以登陆 1.1.1.1 的 1234 端口连接家里的电脑了。

动态转发

ssh -D 22 -NfngqC test@127.0.0.1

ssh 相关参数介绍:

-C      请求会话间的数据压缩传递。对于网络缓慢的主机,压缩对连接有所提升。但对网络流畅的主机来说,压缩只会更糟糕。
-c      选择ssh会话间数据加密算法。
-D     创建动态端口转发
-L    创建本地端口转发
-R  创建远程端口转发
-E log_file             将debug日志写入到log_file中,而不是默认的标准错误输出stderr。
-f      请求ssh在工作在后台模式。该选项隐含了"-n"选项,所以标准输入将变为/dev/null。
-G      使用该选项将使得ssh在匹配完Host后将输出与之对应的配置选项,然后退出
-g      允许远程主机连接到本地转发端口上。
-i identity_file  公钥认证时要读取的私钥文件。默认为~/.ssh/id_rsa。
-l login_name  指定登录在远程机器上的用户名。这也可以在全局配置文件中设置。
-N      明确表示不执行远程命令。仅作端口转发时比较有用。
-n      将/dev/null作为标准输入stdin,可以防止从标准输入中读取内容。当ssh在后台运行时必须使用该项。但当ssh被询问输入密码时失效。
-p port 指定要连接远程主机上哪个端口,也可在全局配置文件中指定。
-q      静默模式。大多数警告信息将不输出。
互联网信息太多太杂,各互联网公司不断推送娱乐花边新闻,SNS,微博不断转移我们的注意力。但是,我们的时间和精力却是有限的。这里是互联网浩瀚的海洋中的一座宁静与美丽的小岛,供开发者歇息与静心潜心修炼。 “Bible”是圣经,有权威的书,我们的本意就是为开发者提供真正有用的的资料。 我的电子邮件 1217179982@qq.com,您在开发过程中遇到任何问题,欢迎与我联系。
Copyright © 2024. All rights reserved. 本站由 Helay 纯手工打造. 蜀ICP备15017444号