
什么是SSHSSH是一种加密协议全称为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 BashCmderMobaXterm。在~/.ssh文件夹创建authorized_keys文件待会我们要把windows下的codeserver_id_rsa.pub文件的内容(按下CtrlA全选内容)拷贝到这个文件。如果有多个用户需要免密登录一个一行。如果觉得拷贝麻烦的可以使用ssh-copy-id命令不过本文仅通过最本质的方法来操作。安装Remote SSH 插件配置hosts在C:\Windows\System32\drivers\etc配置远程IP对应的域名# Debain192.168.10.19 debain.cc# Debain192.168.10.18 codeserver.cc配置windows的ssh config文件在C:\Users\用户名\.ssh\文件夹配置config文件。如何没有config文件使用touch config命令生成该文件。# codeServerHost codeserver.cc HostName codeserver.cc User 登录Linux的用户名 PreferredAuthentications publickey IdentityFile /c/Users/用户名/.ssh/codeserver_id_rsa# giteeHost gitee.com HostName gitee.com PreferredAuthentications publickey IdentityFile /c/Users/用户名/.ssh/gitee_id_rsa# githubHost github.com HostName github.com PreferredAuthentications publickey IdentityFile /c/Users/用户名/.ssh/github_id_rsa# GitlabHost gitlab.com HostName gitlab.com PreferredAuthentications publickey IdentityFile /c/Users/用户名/.ssh/gitlab_id_rsa# GitCodeHost gitcode.com HostName gitcode.com PreferredAuthentications publickey IdentityFile /c/Users/用户名/.ssh/gitcode_id_rsa生成win端的公钥与私钥命令如下换成你的邮箱和你的用户名。ssh-keygen-trsa-Cxxxqq.com-f/c/Users/用户名/.ssh/gitee_id_rsa ssh-keygen-trsa-Cxxxqq.com-f/c/Users/用户名/.ssh/github_id_rsa ssh-keygen-trsa-Cxxxqq.com-f/c/Users/用户名/.ssh/gitlab_id_rsa ssh-keygen-trsa-Cxxxqq.com-f/c/Users/用户名/.ssh/gitcode_id_rsa ssh-keygen-trsa-Cxxxqq.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文件。一行一个公钥代表一个用户。如果没有~/.ssh目录采用ssh-keygen -t rsa命令生成密钥对与目录使用Ctrl Shift P打开命令窗口输入重启窗口命令reload window确认左下角进入到连接成功的状态期间没有提示输入密码的窗口即代表成功了以上操作可通过 ssh-copy-id 命令自动完成这样就不必手动复制并安装公钥了。其他问题linux系统没有id_rsa、id_rsa.pub、authorized_keys文件新创建的系统没有id_rsa、id_rsa.pub、authorized_keys文件# 输入命令后,按四下回车键ssh-keygen-trsa-P-f~/.ssh/id_rsacd~/.sshtouch~/.ssh/authorized_keysvim~/.ssh/authorized_keyschmod600~/.ssh/authorized_keysPermission denied (publickey,gssapi-keyex,gssapi-with-mic,password)问题如果登录不了可以先注释掉win10配置文件C:\Users\用户名\.ssh\config下面两行。此时应该可以用密码登录。登录后退出取消注释。此时可以免密登录。Host codeserver.cc HostName codeserver.cc User 登录Linux的用户名#PreferredAuthentications publickey#IdentityFile /c/Users/用户名/.ssh/codeserver_id_rsa参考资料ssh copyvscode通过ssh连接远程服务器 免密登录如何配置 SSH 管理多个 Git 仓库和以及多个 Github 账号服务器上的 Git - 配置服务器