vscode远程免密ssh原理与实操方法

发布于:2024-05-07 ⋅ 阅读:(20) ⋅ 点赞:(0)

什么是SSH

SSH是一种加密协议,全称为Secure Shell,用于安全地远程登录到服务器或其他远程设备上执行命令或传输文件。它提供了一种安全的加密通信机制,使得远程登录和文件传输等操作不会被恶意攻击者窃取或篡改,确保了数据的保密性和完整性。SSH采用公钥密码学技术,能够有效地防止被中间人攻击或网络窃听。

举例来说,如果我们要使用 Github 这种 git 代码托管平台的话,首先本地要生成一个 SSH 私钥(如id_rsa)公钥(如id_rsa.pub),然后将 公钥 填写到 Github 的 SSH Key 管理面板中。当我们向 Github 推送代码的时候会首先发起身份校验。此时,本地会将用户信息通过 SSH 私钥 执行『签名』操作。当签名信息发送到 Github 的时候,Github 就会使用用户保存在平台上的 公钥 来校验签名信息,使用 私钥 签名信息只能由对应的 公钥 进行校验,因此如果 Github 对签名校验通过,就可以认证当前的用户对代码仓库拥有响应的操作权限,之后就可以让用户提交的代码入库了,整体流程如下图:
在这里插入图片描述

关于公钥和私钥,是『非对称加密』相关的内容,公钥通常用于 内容加密认证签名,是可以在服务器与客户端之间进行传播的;而私钥是用来 解密公钥加密的内容对内容进行签名 用的

综上,SSH 采用非对称加密的方式来完成客户端与服务器端的认证并建立通信连接,因此可以被用于客户端与 git 平台之间的认证,以及远程服务器之间的免密认证。

vscode远程免密ssh

每次用vscode打开文件夹都要输入密码,让人有点心烦,小编利用 51假期研究了一会,终于找到了vscode远程免密ssh连接Linux的方法。本文非常合适有多个git账户的读者。

尝试使用终端工具SSH远程连接Linux

例如Git Bash,Cmder,MobaXterm。
~/.ssh文件夹创建authorized_keys文件,待会我们要把windows下的codeserver_id_rsa.pub文件的内容(按下Ctrl+A全选内容)拷贝到这个文件。如果有多个用户需要免密登录,一个一行。如果觉得拷贝麻烦的可以使用ssh-copy-id命令,不过,本文仅通过最本质的方法来操作。

安装Remote SSH 插件

在这里插入图片描述

配置hosts

C:\Windows\System32\drivers\etc配置远程IP对应的域名

# Debain
192.168.10.19 debain.cc
# Debain
192.168.10.18 codeserver.cc

配置windows的ssh config文件

C:\Users\用户名\.ssh\文件夹配置config文件。如何没有config文件,使用touch config命令生成该文件。

# codeServer
Host codeserver.cc
	HostName codeserver.cc
	User 登录Linux的用户名
	PreferredAuthentications publickey
	IdentityFile /c/Users/用户名/.ssh/codeserver_id_rsa
	
# gitee
Host gitee.com
	HostName gitee.com
	PreferredAuthentications publickey
	IdentityFile /c/Users/用户名/.ssh/gitee_id_rsa

# github
Host github.com
	HostName github.com
	PreferredAuthentications publickey
	IdentityFile /c/Users/用户名/.ssh/github_id_rsa

# Gitlab
Host gitlab.com
	HostName gitlab.com
	PreferredAuthentications publickey
	IdentityFile /c/Users/用户名/.ssh/gitlab_id_rsa

生成win端的公钥与私钥命令如下

换成你的邮箱和你的用户名。

ssh-keygen -t rsa -C "xxx@qq.com" -f /c/Users/用户名/.ssh/gitee_id_rsa
ssh-keygen -t rsa -C "xxx@qq.com" -f /c/Users/用户名/.ssh/github_id_rsa
ssh-keygen -t rsa -C "xxx@qq.com" -f /c/Users/用户名/.ssh/gitlab_id_rsa
ssh-keygen -t rsa -C "xxx@qq.com" -f /c/Users/用户名/.ssh/codeserver_id_rsa

生成文件如下

codeserver_id_rsa     
codeserver_id_rsa.pub  
config                
gitee_id_rsa          
gitee_id_rsa.pub       
github_id_rsa         
github_id_rsa.pub     
known_hosts                        

拷贝codeserver_id_rsa.pub内容至linux的authorized_keys文件

使用命令vi ~/.ssh/authorized_keys拷贝codeserver_id_rsa.pub公钥全部内容至linux的authorized_keys文件。一行一个公钥,代表一个用户。
在这里插入图片描述

如果登录不了,可以先注释掉下面两行。

Host codeserver.cc
	HostName codeserver.cc
	User 登录Linux的用户名
	#PreferredAuthentications publickey
	#IdentityFile /c/Users/用户名/.ssh/codeserver_id_rsa

使用Ctrl + Shift + P,打开命令窗口,输入重启窗口命令reload window,确认左下角进入到连接成功的状态,期间没有提示输入密码的窗口,即代表成功了

在这里插入图片描述

以上操作可通过 ssh-copy-id 命令自动完成,这样就不必手动复制并安装公钥了。

参考资料

ssh copy
vscode通过ssh连接远程服务器 免密登录
如何配置 SSH 管理多个 Git 仓库和以及多个 Github 账号
服务器上的 Git - 配置服务器