ssh反向连接配置
2017-12-23 09:51
225 查看
需求
今天同事提出这样一个需求,我们在客户那放了一台linux服务器,这个服务器在局域网内,但是我们又需要通过ssh连接到此服务器进行调试,但是又不能通过端口映射的方式来操作。所以就需要通过ssh反向连接的方式来进行操作。ssh反向连接
ssh反向连接即某一台主机在局域网内,但是我们有需要连接它的时候,这个时候可以让这台主机连接到一台公网的服务器,并把它的ssh端口映射到公网这台服务器的某一端口,然后我们连接公网服务器的指定端口既可以连接到局域网这台主机。这是之前的状态:
这是做了ssh反向连接之后的状态:
配置方法
在局域网主机执行如下命令ssh -NfR 2022:localhost:22 root@192.168.200.222 #连接到192.168.200.222这台公网主机,然后把自己的22端口映射到公网主机的2022端口,-N:不执行任何命令,用于进行端口转发;-f:后台执行;-R:将远程主机的某个端口转发到本地的指定端口,如果是特权端口,则只能通过root登录才能转发
注意ssh两个端口位置代表的意义:
ssh -NfR remote_port:localhost:localsshport
此时在公网主机通过netstat -tnl命令可以看到已经启用了2022端口,但是此端口只监听到127.0.0.1的地址,此时连接还需要先登录到公网服务器,然后再通过公网服务器ssh自己的2022端口才能连接到局域网主机。如果需要直接ssh公网服务器的2022端口则需要再做一次转发:
ssh -fCNL "*:2033:localhost:2022" localhost #在公网服务器把本地的2022端口映射到2033端口,这样通过直接ssh公网服务器的2033端口既可以连接到局域网主机
改进
实际工作过程中发现通过ssh做转发的时候连接隧道总是断掉,可能端口还在,但是就是连接不上。所以通过autossh代替ssh,autossh可以监听隧道,如果隧道断了会自动重连。autossh -M 5678 -NR 2022:localhost:22 root@192.168.200.222 #-M 5678表示通过5678端口监听隧道状态,如果隧道关闭则自动重连,-NR表示进行端口转发,autossh不需要-f选项,因为其默认即在后台运行
这样端口转发的问题就解决了。
相关文章推荐
- 怎么配置IP使得SSH能够连接到LINUX
- RedHat系统下的网络配置,主机名的修改,进入单用户模式修改root密码和使用SSH远程连接工具
- Cygwin ssh服务配置 (SecureCRT连接Cygwin配置)
- ssh反向连接
- 阿里云配置sshd保持ssh连接
- Linux学习之路(2)-ssh配置和SecureCRT远程连接
- Gitlab配置ssh连接
- 配置ssh免密码连接
- linux配置SSH连接
- ssh配置连接
- SSH证书连接配置DEBUG步骤
- 使用ssh config配置文件来管理ssh连接
- 重温SSH小项目实践(2)--Ibatis与Spring配置数据库连接
- 虚拟机下CentOS7开启SSH连接 (主要是网络配置 sshd 下载)
- 正向连接、反向链接 && SSH 正向代理、反向代理(未完待续)
- [置顶] 使用ssh config配置文件来管理ssh连接
- SSH反向连接及Autossh
- aws EC2 挂载 其它卷(aws EC2 网络配置出错,不能 ssh 连接时,需要启动一个新实例,去挂载 这个出错的卷,来修改卷里的错误配置)
- linux安装使用,网络配置和SSH连接配置
- 远程连接Linux (Ubuntu配置SSH服务) 端口22