大家经常会有这样的需求,公司有一台电脑处在局域网中,没法带回家中,但是又想访问它,或者有个ipad想通过ssh协议在任何地方连上自己的电脑编程,尤其是linux用户,这样的需求经常会有,那如何实现呢?让自己的电脑有个公网ip?理论上可以,但是现实当中是不可能的,其实不难,我们只需要把自己公司的电脑连上阿里云虚拟机(或者任何具有公网ip的机器),然后利用ssh的反向端口转发(ssh -R)就可以轻松实现了。
废话不多说开干:
第一步:实现ssh的公钥登入
mycomp$ ssh-keygen #生成公钥对,三次回车即可
mycomp$ ssh-copy-id root@ip_of_aliyun #本地主机的公钥复制到远程主机的authorized_keys文件上
备注:
mycomp:是内地机器
aliyyun: 是有公网ip的外网机器
现在就可以免密通过命令:ssh root@ip_of_aliyun 登陆到阿里云了
第二步: 安装autossh
mycomp$ brew install autossh #安装autossh
autossh 可以理解成加强版的ssh客户端,它有“掉线自连”的功能,保证了mycomp 一直是和 aliyun连着的。
第三步: 实现反向端口转发
mycomp$ autossh -M 10023 -NfR 10022:localhost:22 root@ip_of_aliyun
上面的意思就是阿里云虚拟机10022端口接收到的数据转发到mycomp的22端口上。
第四步: 使用ssh协议进行访问
newcomp$ ssh mycompuUser@ip_of_aliyun -p 10022
**注意我们最终要访问的是内网主机,不是阿里云,所以用户要写内网主机的用户,而不是阿里云的用户.
把autossh配置成开机启动
**注意:
1 用户的rsa公钥是放到自己的家目录下的,
换句话说,必须是用当初建立公钥登陆的那个用户来建立反向端口转发。
2 必须把阿里云对应的端口打开