服务器
我们局域网的机器能够访问外网,但是外网不能访问内网。因为内网访问互联网时候能确定外网的地址,外网却不能确定我们局域网内的具体地址。(ip地址有限)如果 我们在访问外网的时候,这个链接让他保持、不断,那么这个链接就相当于我们建了一条路,内网数据能出去,外网数据能进来,ssh也是这个方法。
使用ssh命令链接公网服务器
1、首先在外网服务器上编辑sshd的配置文件
vim /etc/ssh/sshd_config#将gatewayports 开关打开gatewayports yes重启sshd服务,使用修改生效(linux 版本不同命令可能会有差异)systemctl restart sshd 2、命令
ssh -ntf -r <local-host>:<local-port>:<remote -host>:<remote-port> user@hostlocal-host 可省略例如:ssh -ntf -r 8888:127.0.0.1:8080 root@host3、参数说明
-c 允许压缩数据
-f 后台运行
-n 表示只连接远程主机,不打开远程shell
-r 将端口绑定到远程服务器,反向代理
-l 将端口绑定到本地客户端,正向代理
-t 不为这个连接分配tty
-nt 代表这个ssh连接只用来传数据,不执行远程操作
保持ssh链接不断开
通常我们使用ssh 链接服务器的时候,如果长时间不操作,这个链接是会关闭的。
方法一、设置客户端
1)用户级别的设置
vim ~/.ssh/config(如果没有config创建一个)2)全局设置
/etc/ssh/ssh_config选择其中一个就可以,添加下面参数
#每隔60秒向服务器发送一个空包serveraliveinterval 60#如果超过两次没成功就断开serveralivecountmax 2#转发失败后退出,便于重建连接exitonforwardfailure yes 临时写法(推荐,不影响他人)
ssh -o serveraliveinterval=30 root@hostssh -ntf -r 8888:127.0.0.1:8080 root@host -o serveraliveinterval=30 -o serveralivecountmax=2方法二、设置服务器端
vim /etc/ssh/sshd_config#每隔30秒,服务器端向客户端发送心跳clientaliveinterval 30#3次心跳无响应之后,会认为client已经断开clientalivecountmax 3方法三、使用shell脚本
touch myautossh.sh因为我设置ssh连接是rsa免密认证,所以这里逻辑就不需要密码 ssh免密登录方法
while(1)do ssh -ntr <local-host>:<local-port>:<remote -host>:<remote-port> user@hostdone保证断开后立马就能连上把-f参数去掉 否则就死循环了
方法四、使用autossh
需要下载autossh软件,操作和直接使用ssh 差不多
-m是监听端口,监听命令是否有无响应的,帮我们保持链接的
autossh -m 5678 -ntr <local-host>:<local-port>:<remote-host>:<remote-port> user@host我不喜欢下载软件-乱七八糟的软件装的很多,也不喜欢修改配置-修改后怕影响别人使用,所以我喜欢使用客户端临时配置的方式
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持西部数码。
云服务器和应用服务器哪个好一点Hostwinds修改DNS服务器图文教程2020四字母域名市场行情如何?带你分析四字母域名华为云ModelArts AI市场推动AI快速落地一般外链都该怎么做?新手需要做哪些?阿里云服务器快速备案云盘价格与服务器巧妙绑定,让局域网工作站高效上网