背景
听说vscode remote SSH现在已经完全可用了,一直有给实验室的机器配置一番以实现远程编程的想法,但teamviewer是真的卡,其他方法也不尽如我意。但是遗憾的事情是,实验室的网络架构是NAT,到我的机器上已经不知道分配了多少级路由了,自然而然的,我的机器也是没有公网IP的,不过我想起我学生优惠10元/月的阿里云主机一直还在,并且是有一个公网IP的,那就动手开始内网穿透吧。
材料
- 实验室机器一台,系统:ubuntu 18.04 desktop
- 云服务器一台, 系统: ubuntu 16.04 server
- mac一台。
1. 内网穿透
内网穿透的原理就不介绍了,我使用的是github的开源项目frp.
首先分别在两台Ubuntu机器上下载 frp
$ wget https://github.com/fatedier/frp/releases/download/v0.29.0/frp_0.29.0_freebsd_amd64.tar.gz
下载得到压缩包之后解压它, 名称太长了,顺便改名
$ tar -zxvf frp_0.29.0_freebsd_amd64.tar.gz
$ mv frp_0.29.0_freebsd_amd64 frp
然后修改服务器的配置文件
$ cd frp
$ vi frps.ini
内容保存如下:
# frps.ini
[common]
bind_port = 7000
接着后台运行frp服务端
$ nohup ./frps -c ./frps.ini &
然后修改客户端(即实验室的机器)的配置,首先进入我们客户端frp解压后的位置
$ cd frp
修改配置
$ vi frpc.ini
内容保存如下
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
上述配置完成后,我们需要配置阿里云服务器安全组规则,将7000端口和6000端口曝露出来。这一部分如何操作参见阿里云相关文档
注意将协议设置自定义tcp,授权对象可以设置为0.0.0.0/0
服务器的端口曝露出来之后,就可以启动客户端的内网穿透程序了
$ nohup ./frpc -c ./frpc.ini &
这样操作完了之后,就可以在mac上通过以下命令ssh到实验室的机器了
$ ssh -oPort=6000 用户名@服务器的ip
配置ssh免密登录
上面步骤完成之后就可以ssh连接到实验室机器了,但是vscode remote ssh需要用公钥免密登录。
首先在mac上生成我的公钥
$ ssh-keygen
需要输入一些信息,如果想省事,除了邮箱都直接回车也行。
$ vi ~/.ssh/id_rsa.pub
把里面的内容都复制下来,这就是mac的公钥。
接下来需要想办法把公钥复制到实验室机器上,我是先放在服务器上,在用实验室机器连接服务器上然后复制下来的,因为为的服务器也添加了对我的mac免密登录。如果嫌麻烦,你可以用ubuntuPaste (不过用这个传公钥的安全性问题你自行考虑,我是觉得问题不大)
接下来在实验室机器上
$ vi /etc/ssh/sshd_config
确保有以下几行
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
如果是no就改为yes,如果没有就加上
$ vi .ssh/authorized_keys
添加上刚才从mac上复制过来的公钥
实验室机器重启ssh
$ service sshd restart
mac上通过以下命令ssh到实验室的机器就无需填写密码了
$ ssh -oPort=6000 用户名@服务器的ip
3. vscode remote ssh配置
确保mac可以免密登录到实验室机器后,就参考这两篇吧
官方文档
知乎上的
4. 体验
等我体验1下之后再来补上。
网友评论