经历过远程开发的人都知道VSCode的VS Code Remote是一个非常好用的插件,这个插件使得开发者可以在容器,物理或虚拟机,以及 Windows Subsystem for Linux (WSL) 中实现无缝的远程开发。
而在此之前的远程开发呢,比如我的导师,一个资历较老的开发人员了。他进行远程开发的方式是通过在本地Source Insight阅读和修改代码,然后通过samba管理服务器的文件,再通过将修改的文件与远程服务器上的文件进行替换的方式,实现远程代码编写。这个方式相较来说效率已经颇低了。
下面我引用一篇别人写的安装设置remote-ssh的博客(以分割线来进行划分),来略过重复的这一部分讲解,本篇只着重对免密这一部分进行探讨。
这是原博客:vscode设置remote-ssh并免密登录
安装完成以后是这样:
这就是远程ssh信息的编辑界面:
输入完成保存以后,左侧就会出现你的刚才设置的信息:
然后点击下图圈起来的按钮,用来登录你的远程ssh
点击完成,就会弹出新的vscode界面,需要你进一步输入远程ssh的信息:
点击continue,之后会出:
输入你的远程ssh主机的密码,之后:
左下角出现如图字样,你就已经连接上了。
ssh-keygen
回车,一直回车,不要输入任何内容,直到命令行就会输出一下信息:
表示生成的公钥和秘钥,注意圈起来的路径文件,需要将其拷贝到你的远程ssh主机中,我远程主机时虚拟机,所以仅将其上上传到/home文件夹下即可,也就是吧id_rsa.pub文件拷贝(PS:刚才圈起来的按个目录一定有这个文件)。
之后操作远程ssh主机:
mkdir .ssh
mv id_rsa.pub .ssh
cd .ssh
cat id_rsa.pub >> authorized_keys
sudo chmod 600 authorized_keys
service sshd restart
可能在最后一条命令要输出你的账号登录密码。
这样远程ssh主机配置免密码登录就完成了。
然后你可以在vscode重复打开远程ssh的步骤,看看是否还需要输入密码了。
之所以想要对这部分免密部分进行探讨是因为,在这个过程中使用到了id_rsa(私钥)和id_rsa.pub(公钥)这两个文件。
而生成这两个文件是需要在命令行界面执行ssh-keygen
才能生成的。
而之所以通过使用这种方式可以实现远程登录免密,其实还是利用了ssh用户认证的两种最基本的方式,密码认证和密钥认证。
密码认证就是将自己的用户名和密码发给服务器进行认证,因此在每次打开远程ssh时需要输入你的密码。
密钥认证就是通过使用公钥和私钥进行身份验证,实现安全的免密登录。
ssh密钥认证登录流程:
因此在配置VSCode的ssh远程登陆时,你只需要生成一份公钥私钥密钥对即可。如果你在远程服务器生成,则可以把公钥私钥复制到本地用户名下.ssh文件夹。如果你在本地生成,则需要复制到服务器的用户名下.ssh文件夹。
如果你是本地和服务器的ssh都有专门的用途,那就只能舍弃使用密钥登录的方式了。
在开发的工作中,起初我是使用wsl在本地进行开发。但是由于项目十分的庞大,导致在程序编译时,我的主机几乎无法使用,极其卡顿。因此我还是拿出了公司配的性能不太好的一个服务器,卡顿就让它在服务器上慢慢卡吧。
而在这个迁移的过程中,由于我的账户信息都在wsl上,Gerrit管理员为我开通拉取代码的权限是wsl用户下生成的公钥。如果在服务器上重新生成公钥私钥对,就需要重新找管理员。但是你可以将wsl的公钥私钥信息直接复制到你服务器上的同名文件内,然后保持相同的权限。这样你的服务器和wsl共用一套公钥私钥,就无需重新配置Gerrit上的信息了,主要还是找人办事麻烦的原因。
本文的分享记录就到这里,如果您觉得文章写的不错,欢迎您能留个赞再划过,让我继续保持持续创作的动力!
同名文件内,然后保持相同的权限。这样你的服务器和wsl共用一套公钥私钥,就无需重新配置Gerrit上的信息了,主要还是找人办事麻烦的原因。
本文的分享记录就到这里,如果您觉得文章写的不错,欢迎您能留个赞再划过,让我继续保持持续创作的动力!