autossh 实现反向隧道
前提条件
- 有一个公网IP的云主机
安装cygwin
安装cygwin是为了安装autossh, 如果是macos或者其它linux平台, 可以跳过这一步。
-
从cygwin.org下载cygwin安装文件
-
开始安装,安装源我用的是163, 如果源列表里没有找到, 可以手动添加http://mirrors.163.com/cygwin
-
安装包选择autossh和openssh
-
安装结束后生成一下ssh的key, 为免密登录所必须
以下命令在windows的cmd窗口执行, 目的是把cygwin的ssh目录射映到windows系统
mkdir %userprofile%\.ssh mklink /J "c:\cygwin64\home\xxx\.ssh" "%userprofile%\.ssh"
然后生成ssh的key文件,以下命令在cygwin的bash执行
ssh-keygen
将key文件安装到无端有公网ip的机器
ssh-copy-id -p 22 xxx@###.###.###.###
之后测试一下,可以免密登录就是成功
配置ssh
-
编辑云主机的/etc/ssh/sshd_config文件
GatewayPorts yes
这样可以把监听的端口绑定到任意 IP 0.0.0.0 上,否则只有本机 127.0.0.1 可以访问。
重启 sshd 服务
sudo service sshd restart
-
在windows主机上,在%userprofile%\.ssh目录下面新建一个config文件,内容参考如下
Host myhost //自定义,主机的连接名 Hostname ###.###.###.### //无端服务器的公网IP Port 22 //端口 User xxx //登录云主机的用户名 IdentityFile ~/.ssh/id_rsa //key文件 RemoteForward 3389 localhost:3389 //remoteforward是反向隧道, 3389是要在云主机上开的端口,localhost:3389是本机的端口 ServerAliveInterval 100 //保持连接
-
用ssh测试一下
ssh myhost
-
用autossh测试一下
AUTOSSH_DEBUG=1 autossh -M 4000 myhost
以上参数不解释了,请自行baidu吧
经过以上就完成了所有配置,以上步骤是在云服务器开了一个远程桌面的3389端口,如果从客户机连接这个3389端口,流量会导到它后面那台windows的主机
把autossh做成系统服务
把autossh做成系统服务,开关机后自动重连
-
开一个有administrator权限的cmd
-
运行如下命令
cd \cygwin64\bin cygrunsrv -I AutoSSH --path \cygwin64\bin\autossh.exe -a "-M 4000 myhost -N" -e AUTOSSH_DEBUG=1 -e AUTOSSH_LOGFILE=/var/log/autossh.log -e AUTOSSH_NTSERVICE=1
-
以上成功后在services.msc里可以看到autossh的一个系统服务,右键点它, 改变logon里的执行用户为当前操作用户,这一步和cygwin里的key有关,只有这一步设置正确了才可以启动服务
今天的文章autossh 实现反向隧道分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/11342.html