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." 问题

相关推荐
苹果醋323 分钟前
大模型实战--FastChat一行代码实现部署和各个组件详解
java·运维·spring boot·mysql·nginx
梁诚斌1 小时前
VSOMEIP代码阅读整理(1) - 网卡状态监听
运维·服务器·网络
深情废杨杨1 小时前
服务器几核几G几M是什么意思?如何选择?
运维·服务器
康熙38bdc1 小时前
Linux 进程优先级
linux·运维·服务器
Web极客码1 小时前
常见的VPS或者独立服务器的控制面板推荐
运维·服务器·控制面板
只是有点小怂1 小时前
parted是 Linux 系统中用于管理磁盘分区的命令行工具
linux·运维·服务器
三枪一个麻辣烫2 小时前
linux基础命令
linux·运维·服务器
cuisidong19973 小时前
如何在 Kali Linux 上安装 Google Chrome 浏览器
linux·运维·chrome
嵌入式小能手3 小时前
开发环境搭建之VScode的安装及使用
vscode·编辑器
wusam3 小时前
螺蛳壳里做道场:老破机搭建的私人数据中心---Centos下Docker学习03(网络及IP规划)
运维·服务器·网络·docker·容器