SSH密钥认证登陆流程(Vscode连接到远程)

目录

    • 前言
    • 连接远程步骤
      • [1. 下载工具包wsCli到本地机器](#1. 下载工具包wsCli到本地机器)
      • [2. 本地机器上生成ssh密钥](#2. 本地机器上生成ssh密钥)
      • [3. 在服务器上安装公钥](#3. 在服务器上安装公钥)
      • [4. vscode连接到远程](#4. vscode连接到远程)
    • 参考资料

前言

SSH(Secure Shell)是一种用于远程登录和安全传输数据的网络协议。它提供了两种主要的远程连接方式:

  1. 密码认证:使用用户名和密码进行身份验证。在这种方式下,用户需要提供正确的用户名和密码才能成功连接到远程主机。这是最常见的认证方式,但安全性较低,因为密码可能会被猜测或通过网络截获。

  2. 公钥认证:使用公钥和私钥进行身份验证。在这种方式下,用户需要生成一对密钥,包括公钥和私钥。用户将公钥上传到远程主机上,而私钥保留在本地。当用户尝试连接到远程主机时,远程主机会使用存储的公钥进行验证。如果公钥验证成功,用户将被授权访问。公钥认证提供了更高的安全性,因为私钥通常比密码更难以猜测。

这两种方式可以根据用户的需求和安全要求进行选择。公钥认证通常被认为是更安全和推荐的方式,特别是在需要远程访问的生产环境中。

连接远程步骤

1. 下载工具包wsCli到本地机器

下载工具包到本地机器,解压后,把相应的wsCli程序放在系统目录下(比如windows是C:\Windows下,linux/macOS放在/usr/local/bin下)。

也可以放在任意目录下,但是需要将这目录添加到环境变量中(WIN+R输入:control userpasswords回车,点击更改我的环境变量):

添加环境变量,在用户变量->Path中添加,到wsCli文件的上一级目录:

2. 本地机器上生成ssh密钥

在命令行执行ssh-keygen来创建密钥对,默认情况下,会生成一个私钥(id_rsa)和一个公钥(id_rsa.pub)。私钥通常不建议随意发送给他人,因为它包含敏感信息。

3. 在服务器上安装公钥

拷贝id_rsa.pub中的公钥,并添加到authorized_keys中:

shell 复制代码
mkdir -p ~/.ssh
# {YOUR_PUB_KEY}是拷贝的公钥,以ssh-rsa开头
echo "{YOUR_PUB_KEY}" >> ~/.ssh/authorized_keys

如此便完成了公钥的安装。 此外,为了确保连接成功,输入如下指令以保证以下文件权限正确:

shell 复制代码
chmod 600 authorized_keys 
chmod 700 ~/.ssh

在终端详情页拷贝ssh命令,即可在本地terminal连接到远程(如果连接不上可以重启一下电脑试试)。

4. vscode连接到远程

在vscode上进行远程连接,需要在服务器上安装与本地相同版本的vscode

1.在本地vscode中安装插件 Remote-SSH

2.本地下载vscode安装包

在vscode的帮助->关于中找到commitID

复制下面这个链接下载安装包:

shell 复制代码
# ${COMMIT_ID}换成自己的commitID
https://update.code.visualstudio.com/commit:${COMMIT_ID}/server-linux-x64/stable

然后得到下面这个压缩包:

3.在服务器上传vscode

在服务器中创建.vscode-server/bin文件夹,并把压缩包上传:

shell 复制代码
mkdir -p ~/.vscode-server/bin
cd ~/.vscode-server/bin
# 上传压缩包并解压,放到以commitID命名的文件夹下
# ${COMMIT_ID}替换成自己的commitID
tar -zxf vscode-server-linux-x64.tar.gz
mv vscode-server-linux-x64/* ${COMMIT_ID}

最后${COMMIT_ID}文件夹下为以下文件,删除其他没用的文件。
4.将ssh命令粘贴到连接命令中

得到一个config文件,如果windows系统,需要将wscli修改成本地绝对路径:

然后点击+号连接到远程。

参考资料

解决 Windows 端 VS Code "无法与 "..." 建立连接:XHR failed." 问题

相关推荐
Linux运维技术栈5 分钟前
Ansible(自动化运维)环境搭建及ansible-vault加密配置
运维·自动化·ansible
Bessssss1 小时前
centos权限大集合,覆盖多种权限类型,解惑权限后有“. + t s”问题!
linux·运维·centos
苹果醋31 小时前
Golang的文件加密工具
运维·vue.js·spring boot·nginx·课程设计
jwensh2 小时前
【Jenkins】Declarative和Scripted两种脚本模式有什么具体的区别
运维·前端·jenkins
大熊程序猿3 小时前
xxl-job docker 安装
运维·docker·容器
董健正3 小时前
centos制作离线安装包
linux·运维·centos
咏颜4 小时前
Ubuntu离线安装Docker容器
linux·运维·服务器·经验分享·ubuntu·docker
DexterLien5 小时前
Debian 12 安装配置 fail2ban 保护 SSH 访问
运维·debian·ssh·fail2ban
娶不到胡一菲的汪大东5 小时前
Shell脚本
linux·运维·ubuntu
xserver25 小时前
ensp 基于静态NAT发布公司网站服务器,
运维·服务器