[Configure Intranet penetration service] - ssh port foward ssh tunnel systemd
Configure Intranet penetration service
Introduction
ssh是我们常用的工具,然而借助ssh的端口转发的特性,我们可以
- 动态端口转发,基于国内的服务器,搭建简易的Sock5代理来改变网络路由
- 远程端口转发,实现内网穿透,并将其配置成linux系统服务
- 本地端口转发,借助ssh访问防火墙限制的端口
Symbol
主机 | ip | 定位 |
---|---|---|
A1 | 192.168.0.1 | 本地主机 |
A2 | 192.168.0.2 | 本地主机 |
B1 | 222.201.187.247 | 云服务器 |
B2 | 192.168.59.2 | 云服务器 |
SSH Port Forwarding
动态端口转发
轻量级socks5代理。
动态端口转发,就是开启一个类似于SSR一样的socks4或者socks5代理,由于只要一条命令就可以实现代理,所以十分的方便。但同样这样的socks5 proxy并不具有混淆机制,流量特征明显,一般不适用于国外的服务器。
ssh -D 本地网卡地址:本地端口 username@ip
事实上,我们常用的会省略本地网卡地址,并加上-N -T参数,如要后台运行也可以加上-f参数。
ssh -NTD 23334 root@222.201.187.247
远程端口转发
学校的电脑因为学校防火墙,校外不可访问,利用远程端口转发,借助云服务器做桥梁,实现内网穿透。
所谓远程端口转发,就是将发送到远程服务器端口的请求,转发到本地的端口。这样,就可以通过访问服务器的远程端口,来访问本地端口的服务。使用-R属性,就可以指定需要转发的端口,语法是这样的:
-R 远程网卡地址:远程端口:目标地址:目标端口
例如,本地主机A1要实现内网穿透,可以配置端口转发到一台ip为222.201.187.247的公网服务器B1上。
这时,通过远程端口转发,可以将发送到远程云主机B1端口2000的请求,转发到本地主机A1端口3000。
# 在本地主机A1登陆远程云主机B1,并进行远程端口转发
ssh -R 0.0.0.0:2000:localhost:3000 root@222.201.187.247
同理,远程网卡地址可以省略,目标地址也可以是其他主机地址。假设本地主机A2的局域网IP地址为192.168.0.2。
# 在本地主机A1登陆远程云主机B1,并进行远程端口转发
ssh -R 2000:192.168.0.2:3000 root@222.201.187.247
远程端口转发可以用来做网络穿透。
本地端口转发
当云服务器只允许ssh端口登录,其余端口被防火墙限制时使用ssh转发来访问其他端口的服务。
这里把本地端口转发放最后,是因为动态端口转发可以解决本地端口转发的问题,动态端口转发更为强大。
所谓本地端口转发,就是将发送到本地端口的请求,借助SSH,转发到目标端口。这样,就可以通过访问本地端口,来访问目标端口的服务。使用-L属性,就可以指定需要转发的端口,语法是这样的:
-L 本地网卡地址:本地端口:目标地址:目标端口
通过本地端口转发,可以将发送到本地主机A1端口2000的请求,转发到远程云主机B1的3000端口。
# 在本地主机A1登陆远程云主机B1,并进行本地端口转发
ssh -L localhost:2000:localhost:3000 root@222.201.187.247
这样,在本地主机A1上可以通过访问http://localhost:2000来访问远程云主机B1上的3000端口的服务。
实际上**,-L选项中的本地网卡地址是可以省略的**,这时表示2000端口绑定了本地主机A1的127.0.0.1.
另外,-L选项中的目标地址也可以是其他主机的地址。假设远程云主机B2的局域网IP地址为192.168.59.2,则可以这样进行端口转发:
# 在本地主机A1登陆远程云主机B1,并进行本地端口转发。请求被转发到远程云主机B2上
ssh -L 2000:192.168.59.2:3000 root@222.201.187.247
链式端口转发
本地端口转发与远程端口转发结合起来使用,可以进行链式转发。假设A主机在公司,B主机在家,C主机为远程云主机。A主机上运行了前文的Node.js服务,需要在B主机上访问该服务。由于A和B不在同一个网络,且A主机没有独立公共IP地址,所以无法直接访问服务。
可以A主机远程转发给C,B主机本地转发给C,只要C的端口一致,就能访问呢。
SSH Tunnel & Systemd
Create a new Service File
在/etc/systemd/system
下添加服务文件ssh-tunnel.service
其中{cloud_server_ip}
和 {username}
是自定义项目
[Unit]
Description=ssh port forward
After=network.target[Service]
ExecStart=/usr/bin/ssh -C -N -o ExitOnForwardFailure=yes -o ServerAliveInterval=15 -o IdentityFile=/home/{username}/.ssh/id_rsa -R 0.0.0.0:20000:localhost:22 sshtunnel@{cloud_server_ip}
User={username}
Restart=always
RestartSec=1min[Install]
WantedBy=multi-user.target
Systemctrl Enable Start Status and Log
执行以下命令
systemctl enable ssh-tunnel
systemctl start ssh-tunnel
systemctl status ssh-tunnel
journalctl -u ssh-tunnel
If configuration modified, Reload and Restart
如果出现服务启动失败的情况,修改配置文件以后,需要重新加载配置文件,然后重新启动相关服务。
# 重新加载配置文件
$ sudo systemctl daemon-reload# 重启相关服务
$ sudo systemctl ssh-tunnel
Reference
Systemd 入门教程:命令篇 - 阮一峰
Systemd 入门教程:实战篇 - 阮一峰
SSH 端口转发
玩转SSH端口转发
[Configure Intranet penetration service] - ssh port foward ssh tunnel systemd相关推荐
- 图解再谈ssh port forwarding-ssh隧道技术
https://www.ramkitech.com/2012/04/how-to-do-ssh-tunneling-port-forwarding.html https://www.cnblogs.c ...
- SSH Tunnel扫盲(ssh port forwarding端口转发)
2019独角兽企业重金招聘Python工程师标准>>> SSH的的Port Forward,中文可以称为端口转发,是SSH的一项非常重要的功能.它可以建立一条安全的SSH通道,并把任 ...
- 第1章 ssh命令和SSH服务详解
基础服务类系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 本文对SSH连接验证机制进行了非常详细的分析,还详细介绍了ssh客户端工具的各种 ...
- 【转】linux下安装ssh服务器端及ssh的安全配置
一.在服务器上安装ssh的服务器端. $ sudo apt-get install openssh-server 2. 启动ssh-server. $ /etc/init.d/sshrestart 3 ...
- linux内核开启ssh,linux开启ssh服务
本文概略:1)ubuntu发行版开启ssh.2)centos发行版开启ssh 1.ubuntu发行版安装/开启ssh服务 1.1 安装ssh服务端 sudo apt-get install opens ...
- hosts多个ip对应一个主机名_一个简单的Web应用程序,用作连接到ssh服务器的ssh客户端...
WebSSH 一个简单的Web应用程序,用作连接到ssh服务器的ssh客户端.它是用Python编写的,基于tornado,paramiko和xterm.js. 特征 支持SSH密码验证,包括空密码. ...
- linux ubuntu 开启ssh服务,开启SSH服务远程登录ubuntu
Ubuntu系统(14.04 LTS) ssh–secure shell,提供安全的远程登录.从事嵌入式开发搭建linux开发环境中,ssh的服务的安装是其中必不可少的一步.ssh方便一个开发小组中人 ...
- linux ssh注册码,linux ssh -l 命令运用
ssh是远程登录命令,-l选项是最常用的选项,下面是我的一些总结 远程登录:ssh -l userName ip # 远程登录到 10.175.23.9 ssh -l root2 10.175. ...
- linux ssh 域,Linux SSH 与 SCP命令简述
SSH SSH为建立在应用层和传输层基础上的安全协议 sshd服务使用SSH协议进行远程控制,或在计算机之间传送文件.而实现此功能的telnet(远程桌面) 是不安全的,使用明文传送密码 ssh ss ...
最新文章
- MXNet动手学深度学习笔记:线性回归
- SSH 远程连接原理及故障排错详解
- ML之FE:数据处理—特征工程之稀疏特征的简介、如何处理、案例应用之详细攻略
- 【原创】设置头文件路径, gcc -I 选项写法
- 物体成瘾性_科技成瘾使我们不那么快乐。 那是一个市场机会。
- cvi中c语言只保留两位小数,CVI编程常见问题与错误-2012.9
- 深度模型压缩论文(01)- Meta Filter Pruning to Accelerate Deep Convolutional Neural Networks
- 5-10多分支网络结构
- CMS漏洞(发货100CMS、SHECMS、ZHCMS、MACCMS)详解实战
- 论文精读 清华ERNIE:Enhanced Language Representation with Informative Entities
- 应用计算机测定伏安特性实验,实验25应用计算机测电阻伏安特性.doc
- 软件测试的就业前景到底怎么样?
- 结构体中元素引用—— “.“ 与 “->“
- Python中动态编译函数compile(source, filename, mode, ......)参数filename的作用是什么?...
- dubbo+zookeper实现分布式服务部署实例
- 贪心的奇巧淫技-Join the Strings
- 哈哈~ 开心死了 厚厚
- 手把手教你如何推广博客网站
- 淘宝客网站推广(一)
- 只看不敲,神也学不好C---------嵌入式经典书籍经验分享