今天把一个用了4年的IBM笔记本重装了Ubuntu,算是废物利用。感谢Ubuntu社区的大佬们对系统所做的优化,IBM笔记本安装Ubuntu一路顺畅,驱动都能自动安装好。有了这台笔记本做服务器,就不用再在台式机上开虚拟机了,内存不再吃紧。
笔记本安装好系统后,第一时间安装了openssh-server,关于ssh、scp等的安装使用方法,可参考2020-11-30的日志。
理论上,有了ssh就可以连接服务器并通过vi编辑器编写代码。的确有高人这么做,用vim加插件的方式,双手不离键盘主区域一顿噼里啪啦,看这种高人写代码是种享受,就像在欣赏钢琴演奏。对这种高人,我连望其项背的资格都没有。vi只记得i、esc、:/、:q、:wq这几个最简单的命令,以防误入vi能逃得出来。我想大部分人都被vi劝退过,微软也深明大义,在VSCode下推出了一个remote-SSH的远程开发插件。
官网上写了几条vscode+SSH开发的好处:
- 使用沙箱中的开发环境,以避免影响本地计算机配置。
- 小白轻松上手,让每个人都保持一致的环境。
- 使用本地操作系统上的工具(vscode)管理多个项目版本。
- 使用适用于Linux的Windows子系统开发Linux部署的应用程序。
- 可以多端访问现有开发环境。
- 直接在服务器上调试运行程序。
1. vscode安装remote-ssh插件
在vscode左侧栏的Extensions标签下搜素Remote-SSH,点击安装。安装完成后在左侧栏多出一个Remote Explorer的标签(图标是一个电脑和小地球)。打开该标签,点击+号(Add New),则打开了命令面板,按照提示输入ssh username@ip_address,回车后弹出保存该远程主机的选项,选择第一个就可以。此时Remote Explorer中列出了这个远程主机,右键点击该远程主机,选择Connect Host in Current Window,在弹出的命令面板中输入密码则可建立与该主机的连接。
建立连接后,在vscode会在远程主机上安装vscode server。本地的vscode通过ssh连接远程vscode server进行开发和调试,本地vscode类似一个伪终端,所有开发状态实际都保存在远端的vscode server。原理如下图所示。
我们可以通过本地vscode打开远程终端(View->Terminal),获得远程主机的bash。也可以在Welcome页点击Open folder,选择你的项目目录打开,在Explorer中则列出选定的目录。从此可以告别vi进行云端开发。
2. 为ssh配置对称密钥免密连接
为了避免每次打开vscode都需要输入密码进行连接,可以为ssh连接配置公私钥认证方式。
win10系统默认已经安装了ssh,因此可直接在本地cmd窗口输入ssh-keygen -t rsa,将生成id_rsa和id_rsa.pub这对公私钥文件,默认保存在当前用户目录的.ssh目录下,在弹出的提示中可以看到该默认目录,直接一路回车即可。
我们的目的是通过win10远程访问ubuntu,则需要将id_rsa.pub这个公钥文件复制到ubuntu上。使用scp命令将id_rsa.pub文件上传到ubuntu的~/.ssh/目录下,如果服务器不存在.ssh目录,则先新建。
在服务器上,将该公钥文件附加到authorized_keys中:cat id_rsa.pub >> authorized_keys。
通过sudo vi修改服务器上ssh配置文件/etc/ssh/sshd_confg,添加RSAAuthentication yes和PubkeyAuthentication yes,保存后重启ssh:sudo service ssh restart。(这里还需要最后使用一次vi编辑器,因为通过ssh连接的vscode不具有sudo权限。)
至此,ssh免密连接服务器则配置完毕。可以在win10的cmd下ssh连接服务器测试一下,不再需要输入密码了。关闭vscode后重新打开,也能自动连接到服务器上的vscode server,之前的工作环境都直接加载出来。
- 要点:Host A连接Host B,则将私钥保存在Host A用户目录.ssh目录下,将公钥附加到Host B用户目录.ssh目录下的authorized_keys文件中
3. 彩蛋
vscode有一个很有意思的插件:彩虹屁。在插件里搜索Rainbow Fart,安装后打开命令面板(ctrl+shift+p),点击Enable Rainbow Fart会提示打开一个网页,在该页面授权浏览器获得声音权限,不要关闭该浏览器页面。在编写代码时,将会有一个女声不停地夸奖你的代码,让你写代码不再孤单。