从静态ip配置到ssh密钥配对
- 一、前言
- 二、问题发现
- 三、问题解决
- 1.配置静态ip
- 2.生成密钥
- 3.进行ssh密钥配对⭐⭐
一、前言
首先,为什么要通过vscode远程连接linux虚拟机进行开发我就不多说了。
最近我也是想进行远程跨平台开发,前段时间根据百度东拼西凑糊里糊涂的配好了,结 果前几天突然不知道什么操作(可能一次断网用360修复了网络后)Vmware Network Adapter-VMnet8分配的ip网段改变了,vscode又连接不上了!!今天我又根据记忆重新打开以前翻过的一些帖子,花了一个小时终于重新配置成功,我总结出一套(自认为)完整的配置步骤,在这里分享一下。
二、问题发现
首先我总结一下vscode连接不成功的主要原因(排除基本配置原因,大家都会做,而且基本没啥问题)
1.虚拟机或windows没有安装ssh插件;
看这篇文章
链接: Windows 10系统使用ssh链接到Linux远程主机或者虚拟机.
2.虚拟机网络配置(静态ip)有问题;
首先需要明确,每次vscode和linux连接需要根据Windows的C:\Users\用户名\.ssh
文件里写的虚拟机用户名和端口号进行ssh连接,如果Linux没有配置好静态ip,每次虚拟机一重启ip地址就会变,那么配置好的连接也失效了,所以需要给虚拟机配置成静态ip
3.虚拟机和windows进行ssh验证的密钥不配对
生成密钥后还需要进行配对,让对端拿到本端的公钥才能通信
三、问题解决
1.配置静态ip
参考文章:
链接: WIN10主机Ubuntu18.04 nat模式设置静态ip地址.
这篇文章可以解决Ubuntu配置静态ip的问题
注:配置好之后如果用命令重启网卡不行就重启虚拟机
另外可以多写几个dns-nameserver:
dns-nameserver 114.114.114.114
dns-nameserver 10.10.0.21
dns-nameserver 223.5.5.5
dns-nameserver 8.8.8.8
dns-nameserver 192.168.xx.2 //(**此项中xx为配置静态ip时VMnet8分配的号段**)
我的配置:
2.生成密钥
参考这篇文章
链接: vscode SSH远程开发.
注:如果按照这篇文章的设置可以成功那便是极好的,但是很不幸,我在把windows上C:\Users\用户名\.ssh
文件内容拷贝到Linux的~/.ssh/
路径下的authorized_keys文件时显示文件不可编辑,即使用管理员或者更改权限也不行,我的解决方案:
新建一个authorized_keys2文件,把从windows上(我是用Vmware tools把文件拖过来)拷贝来的id_rsa.pub文件内容拷贝到authorized_keys2文件中,:wq保存退出
看一下authorized_keys2文件:
至此,你可以再尝试vscode是否能够连接上Linux,如果不行,就进行接下来的第三步。
3.进行ssh密钥配对⭐⭐
这里使用一个非常关键性的命令:
ssh -o StrictHostKeyChecking=no 192.168.xx.xx
1.在windows端CMD命令行输入:
ssh -o StrictHostKeyChecking=no 192.168.110.133//虚拟机静态ip
2.在Linux虚拟机terminal输入:
ssh -o StrictHostKeyChecking=no 192.168.43.233//Windows的ip地址
注:输入如上指令后提示需要输入所要ssh登录的对端主机的登陆密码有时输入正确了还会提示错误,不用管,依然输入三次正确密码就行
接下来,在vscode上:
等待vscode自动连接。。。
然后,就可以远程操作Linux命令行啦!
最后给个忠告,没事别重置windows网络!!,不然网络设置又变又要重新弄了哈哈。