当前的计算机工作环境记录
之前用ubuntu作为办公机的体验
之前把ubuntu作为办公机的系统使用,使用了大概1年多了。
好处
最大的便利就在于维护机器非常方便:
- ansible只支持用linux作为主控
- 对git的原生支持(win的git其实是mingw环境下的)
- 直接使用ssh连接机器,无需第三方软件
- 对docker的支持
- 在家能直接ssh过来,在外网速不好的时候,比RDP方便,并且也能forward跳转登录其它机器
- 使用bash或python处理一些事情时候,比win方便。。。(不是所有的python包都支持win…但基本都会支持linux)
- 防火墙设置的逻辑比win简单易懂,命令行设置或者编辑配置文件设置也方便多了
- …
在这个环境下,日常编辑代码用跨平台的VSCode,密码都存在keepass中。
程序员用的软件基本都在linux下面工作的很好。
workaround
而不便的地方也很多:最大的不便在于各种只有win版的程序无法使用,比如qq\微信\钉钉以及网银,因此还需要搭配一台虚拟机(建议用数据中心的虚拟机),再使用ubuntu自带的remmina远程RDP使用虚拟机。
把那些办公软件扔进数据中心的虚拟机里面,还有些额外的好处:
- 不受断电影响,获得数据中心级别的物理安全
- 让作为开发机和控制机使用的本机不受流氓软件(QQ等各种非要弹UAC的普通办公软件)影响,就算我的办公虚拟机被控制也无法进一步连到平时从本机控制那群机器,部分隔离了办公环境和生产开发环境
本机系统换成win10的原因
之前在ubuntu中的remmina有个bug难以忍受,每次在远程桌面里面复制什么内容,就算是纯文本,都要卡一阵子才能出来,而在和其它工友沟通或者有什么事情要处理时候又要从虚拟机拷贝到本机,所以这非常影响工作效率。
win10作为本机系统的优点
主要是wsl中使用ubuntu,让命令行、git、docker、ssh之类的使用更为原生和方便,因此上述所说的ubuntu作为本机系统的优点,在wsl里面也存在着。包括ansible虽然不能用win10做主控,但是却能使用win10下面的wsl里面的ubuntu做主控。
比如之前使用ubuntu时有时会用ncdu命令来查看文件夹占用空间的情况,而win10虽然没这命令,但是在wsl的ubuntu中,sudo apt install ncdu
后,直接就可以使用ncdu来看磁盘的占用情况了,非常方便,比去折腾GUI下那些杂七杂八的软件舒服多了,并且更安全。
此外,win10 也原生支持了ssh。
并且win10 自带的RDP比remmina体验更好,而之前那套工作环境,安全性主要是日常软件用机和开发部署用户相分离产生的,因此就算换成win10,只要不在本机安装额外软件,还是可以保障安全性。
对了,还有个优点,就算是集成显卡在某些应用上的性能要win10才能发挥。。。虚拟机打开某些应用太卡了,等我有钱自建私有云,一定要试试虚拟机的直通显卡。。。。
当前win10的环境
基于上述原因,在几个月前的长假中换成了win10,在考虑本机应用的时候也考虑了跨平台,将来想要的话也容易再迁到ubuntu或者mac之类的。目前使用了好几个月了,情况稳定。
使用的自带服务和软件
- openssh,建议安装github上更新的版本https://github.com/PowerShell/openssh-portable,看issue说是下个大版本才会进win10
- ssh-agent(OpenSSH Authentication Agent)
- wsl
- keychain(wsl中的ubuntu使用)
- ubuntu20.04
- VSCode
- keepass(配合自带ssh使用,太方便了)
好用的自带软件
- 自带的sandbox,来路不明又想打开的程序,就在sandbox中打开
- edge,有个应用程序防护窗口,看着比隐身模式还安全,浏览高危网站必备
大概的设置过程
- 开启wsl并安装ubuntu,复制旧系统key文件到wsl里的ubuntu
- 复制旧系统key文件到windows用户.ssh目录
- 开启win10自带的ssh-agent,开机启动
- 在cmd中ssh-add,导入key,让win的cmd/powershell也可以免密登录有权限服务器
- 在wsl/ubuntu中,安装keychain,设置到.bashrc.。让wsl可以免密登录有权限服务器
- 在keepass创建之前remmina中用到的所有机器
- 除了keepass中的各个项目外,vscode也是快捷访问各个项目的入口,因此在迁移时候也可以考虑把vscode的设置也一同迁移,毕竟跨平台,只是项目目录变了也不能用
日常使用
经过这些设置后,用到的额外软件很少,基本只有keepass不是自带的或者官方的,并且也能像MobaXterm、xshell之类的一键ssh打开服务器,如果没有linux图形的需要的话,这样就够用了。
单独连接某台服务器就用keepass.
批量管理某机器群就用vscode打开ansible项目。
细节
- 同时设置两处ssh的agent是为了适应所有情况,比如ansible的主控机,不能由win来当
- 可以参考move-wslhttps://github.com/pxlrbt/move-wsl,移动wsl的系统安装位置,不然c盘会占太大空间
- keepass拓展功能十分强大,还能识别cmd://来打开命令行,我这边都把
cmd://ssh {USERNAME}@172.xx.xx.XX
作为网址,就能在keepass使用打开网页的功能来打开cmd命令行并且ssh连接服务器。 - 主要使用vscode作为开发工具,并且也是使用ansible批量控制时候的终端,在项目中,右键在linux shell打开,然后
code .
就可以wsl模式下打开vscode,再使用vscode的terminal功能,就是在ubuntu中,就能使用ansible控制了 - vscode中使用git也很方便,比如这篇文章,就是在vscode里面写,写完commit然后用vscode里面的git push,都不用敲命令就提交了。。。后面文章就自动CI/CD发布了。。。
- 千万不要因为有免密而不设置密码,要给不同项目不同厂商下的机器设置不同的密码,否则有啥意外从vmware进不去就完蛋了,我的key曾经被厂商误删掉过,幸好有密码保底。。。
居然有在线vscode了,希望gitlab也能跟进。。。。
参考
https://github.com/PowerShell/openssh-portable
https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse
https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_keymanagement
https://docs.microsoft.com/en-us/windows/wsl/install-win10
https://esc.sh/blog/ssh-agent-windows10-wsl2/
https://devblogs.microsoft.com/commandline/sharing-ssh-keys-between-windows-and-wsl-2/