一、 生成SSH密钥对
ssh-keygen
或者
ssh-keygen -t rsa -b 4096
区别:-t rsa可以明确表示生成的是 RSA 类型的密钥
-b参数将密钥长度设置为 4096 位
默认:2048 位密钥
不指定-t参数,ssh -keygen默认也可能生成 RSA 密钥
【确保本机安装ssh, ssh 或者 ssh-V去检查】

【注意:这里一直按回车。第一个是让你选择生成路径,这里我们默认就行(默认路径:C:\Users\Encounter.ssh)。第二个是在密钥再加密码,没必要,如果这样操作就不是免密登录了。】
具体解释:

生成情况如下:(id_rsa为私钥,id_rsa.pub为公钥)

二、 将公钥放在服务器【配置服务器】
路径是:账户名下的.ssh
文件夹(如果没有可以自己创建)

将id_rsa.pub上传后,
执行:cat id_rsa.pub > authorized_keys
生成authorized_keys。【也可以创建一个authorized_keys,把id_rsa.pub里面的内容复制进去。下面的参考文献中还有一些其他方法,大家可以自行选择自己喜欢的。】
三、配置Vscode文件【配置本地】
打开SSH配置文件:


加上IdentityFile 后面的是你私钥的位置:

四、补充操作:如果上述做完之后,还是连接不上
1.可尝试执行如下命令
chmod 700 ./.ssh
chmod 600 ./.ssh/authorized_keys
原因是SSH不希望用户目录和~/.ssh目录对组有写权限
如果没有解决可尝试使用执行 sudo cat /var/log/secure 查看系统的安全日志,根据具体日志内容解决
2.vim /etc/ssh/sshd_config
(这个可能影响不大,可以试试)

3.检查本地的生成的id_rsa.pub和服务器的authorized_keys里的内容是否一致。【当时笔者,不知SSH的正确路径(在服务器根目录下建立.ssh),而服务器正确位置(账户下的.ssh)之前也有authorized_keys,但并不是我生成的id_rsa.pub】
五、验证密钥是否配置成功
当配置完毕。不需要重新再连接服务器。
随便打开一个文件,如果不用输入密码就是成功了。【因为如果没配置之前,你切换文件夹 是 需要输出密码的,也相当于重新连接服务器】

六、一个ip配置2个免密登录
1 .ssh正确路径:账户下面。即 root/.ssh 或者chengzw/.ssh
具体图解:
根目录下:

chengzw账户:

root账户:

2.如果想实现root和chengzw账户都是免密登录,可以分别在其对应的账户.ssh目录下,将authorized_keys中放入正确的公钥(其实只要authorized_keys中的公钥正确,.ssh目录下没有id_rsa.pub也没事)【2个账户的公钥可以是同一个也可以不同,只要在本地的配置文件正确即可(即:操作的第三步)。】
chengzw账户:

root账户:(这里的id_rsa和known_hots是服务器自带的我们不用管)

3.另外经过笔者反复尝试,在2个账户都设置了免密登录之后,当Host一样的时候,但是账户和端口不一样,他会从上往下执行,即如下图,先免密登录30488端口的root账户。如果想免密chengzw账户可以把对应账户放前面即可。之后连接服务器即可。


七、参考文章:
1.配置visual studio code 用秘钥远程连接SSH服务器:https://blog.csdn.net/liang_baikai/article/details/137152136
2.配置vscode 远程开发+ 免密登录:https://zhuanlan.zhihu.com/p/222452460
3.【VSCode】远程开发配置密钥连接 :https://www.cnblogs.com/servlet-context/p/18148623
补充:
1.由于一开始没用Vscode连root账户,chengzw账户还没传文件以及文件重命名的权限,所以只能网页端传上去之后再移动(传文件的位置也有限制)。
在根目录上建立.ssh的时候(当时建错了,应该在账户目录下建立.ssh)
cp 源 目的
cp cheng/ id_rsa.pub . 【当前目录是服务器根目录】可以执行
cp cheng/ id_rsa.pub . 【当前目录是.ssh】 无法执行找不到目录
cp /cheng/ id_rsa.pub . 【当前目录是.ssh】 可以执行
2:我所用的服务器ssh连接Vscode的有2种登陆方式。【浪潮公司的】
一种是root的, ssh root@ip -p 30488 【登录密码:AIstation平台上面给的】
一种是账户, ssh chengzw@ip -p 60022 【登录密码:自己的账户密码】
我发现自己账户登录传不了文件以及改不了文件名【没权限】。但是当实现免密登录之后就可以有权限了,很奇怪。
另外,chengzw没有提权权限(sudo命令)
3:AIstation的服务器好像会重置,我在根目录建立的.shh文件夹没了,以及修改的vim /etc/ssh/sshd_config的里面内容都重置了,也说明修改vim /etc/ssh/sshd_config 用处不大。
小细节:1.authorized_keys可以打开写多个公钥,把不同的公钥id_rsa.pub的内容放里面。
2.服务器验证时候,是验证authorized_keys,与d_rsa.pub无关。
3.本地ssh配置的 IdentityFile "C:\Users\Encounter\.ssh\id_rsa" 中 id_rsa是可以改名的,只要能和本地名对上即可(要是有多个ssh私钥是 需要 重命名 去 管理的)。