解决VSCode使用Remote SSH连接远程服务器免密登陆

起因

因为最近在做小练习,需要用到linux进行编译,本人的电脑又过于垃圾,于是便租了一台服务器,用VSCode+Remote SSH使用用开发。但在使用过程中,用传统的密码方式,只要转跳到一个新文件夹就会要求重新输入密码。十分影响开发体验和开发效率。于是便有了这篇文章的诞生。

解决方式

为了解决重复输入密码的问题,我们必须采用ssh的登陆方式。接下来便会介绍如何解决这个问题。

生成密钥

由于我们是使用 SSH 连接远程服务器,因此 Windows 需要支持 SSH 。
可以使用 Win + R ,输入 cmd 打开控制窗口,直接输入 ssh ,如下提示,则代表 SSH 已经安装成功;
在这里插入图片描述
如果没有安装可以通过安装git获取,也可以windos直接获取。

windos获取步骤

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
安装成功之后记得通过ssh查看是否安装成功。

配置SSH密钥

目的:将本机添加到远程服务器连接白名单,让服务器知道是已认证的电脑在连接。过程类似于 GitHub 网站添加本地电脑的 SSH 公钥。

生成公钥

使用如下命令,生成 SSH 公钥文件。如果已经生成,则可直接使用,跳到步骤二。

# 方法一
ssh-keygen

# 方法二,参考使用Git生成密钥
ssh-keygen -t rsa -C "youremail@example.com"


# 方法三,直接在指定的文件夹下生成
ssh-keygen -t rsa -b 2048 -f C:\Users\YourUsername\.ssh\id_rsa_windows

输入命令后一路回车

找到公钥

一般生成的密钥文件,路径为:C:\Users\user.ssh ,找到公钥文件 id_rsa.pub ,复制到远程服务器 根目录 的 .ssh 文件夹中。

(1)根目录,不一定非要是 /.ssh 路径,可以是自己的用户目录,类似这样:/onenewcode/.ssh。

(2).ssh 文件夹没有怎么办?新建一个文件夹,命名为 .ssh 即可。同时要确认远程服务器是否支持 SSH ,如果此时正是通过 SSH 方式连接的,那肯定是支持了。

添加公钥到远程服务器

将生成的公钥( id_rsa_windows.pub的内容)添加到你远程服务器的 authorized_keys 文件中,以允许连接。

可以使用以下方法之一:

  1. 使用 scp 命令:使用 scp 命令将公钥文件传输到远程服务器,在远程服务器上,将公钥内容追加到 authorized_keys 文件,但是本人不建议使用scp发送,这样会对自己机器或者对方机器的原有配置造成覆盖或是丢失,存在风险。
  2. 手动复制:手动复制公钥文件 (id_rsa_windows.pub) 的内容,然后登录到远程服务器,并将内容粘贴到 authorized_keys 文件。如下是我生成的id_rsa_windows.pub文件内容:

在远程服务器上,authorized_keys 文件通常存储在用户的 .ssh 目录中。具体路径可能为 ~/.ssh/authorized_keys。例如我的用户名是 onenewcode,那么 authorized_keys 文件的路径可能是 /home/onenewcode/.ssh/authorized_keys 。
如果你的.ssh目录或者 authorized_keys 文件不存在,你可以在服务器终端使用以下命令创建它:

 # 创建目录
 mkdir ~/.ssh
 # 进入目录
 cd ~/.ssh
 # 创建 authorized_keys 文件
 touch authorized_keys
 # 使用文本编辑器打开 authorized_keys 文件,并将你的公钥内容粘贴到其中
vim authorized_keys
 # 保存并关闭文本编辑器。

注意如果我们已经可以连接上服务器则可以先用密码在vscode登陆上,采用图形化界面操作,上述步骤。

配置 SSH 客户端

打开你的 SSH 客户端(本机)配置文件(也就是前面生成的config文件,一般在C:\Users\YourUsername.ssh\config),添加配置(IdentityFile 私钥文件路径),以指定使用哪个私钥文件。只需要把IdentityFile 下的路径改成自己需要的就行了,其它的内容请看下面的格式介绍。

Host 华为云 
    HostName 10.36.134.163
    User root
    IdentityFile C:\Users\29071\.ssh\id_rsa_windows

Host <远程主机名称1>
HostName <远程主机1 IP>
User <用户名1>
Port <ssh端口,默认22>
IdentityFile <本机SSH私钥路径>
ForwardAgent yes <VSCode 自己添加的,不用管>

总结

这样我们就可以不必在文件夹中跳转一次次的重新输入密码了。真是美滋滋。


相关文章

  • 如何进行 Nginx HTTPS服务器搭建

    通过本文的介绍,我们详细了解了Nginx的listen指令,它用于配置服务器监听的端口和IP地址。我们学习了基本的语法结构、常见的示例和一些可选的参数。这些知识将帮助您更好地配置Nginx服务器,以满足您的需求。

  • 如何在 Linux 中安装 Fish Shell(带 Starship)?

    Fish Shell是一款现代的、用户友好的命令行 Shell,设计初衷是提供更好的用户体验和强大的功能。它采用友好的语法和强大的自动补全功能,使得命令行操作更加轻松愉快。Starship是一款轻量级的、快速的命令行提示符,它为Shell提供了一个漂亮、高度可定制的提示符。Starship的设计理念是简洁、高效,同时允许用户自由定制外观和显示的信息。Fish Shell允许你创建自定义提示符,包括颜色、图标、以及显示的信息。修改# 自定义提示符end。

  • 深入理解 Vue3 中的 setup 函数

    在 Vue3 中,setup 函数是一个新引入的概念,它代替了之前版本中的 data、computed、methods 等选项,用于设置组件的初始状态和逻辑。setup 函数的引入使得组件的逻辑更加清晰和灵活,本文将主要介绍Setup的基本用法和少量原理更灵活的组织逻辑:setup 函数可以将相关逻辑按照功能进行组织,使得组件更加清晰和易于维护。不再受到 Options API 中选项的限制,可以更自由地组织代码。

  • 如何在 Ubuntu 22.04 上安装 Consul 服务器?

    通过这篇文章,你已经学会了在 Ubuntu 22.04 上安装 Consul 服务器的详细步骤,包括配置集群、服务发现、健康检查、安全性特性等方面。同时,你还了解了如何维护 Consul 和进行故障排除,以及一些进阶主题。Consul 是一个功能强大的工具,适用于构建可靠的微服务架构,希望这篇文章对你有帮助。

  • 【Linux】信号保存与信号捕捉处理

    介绍信号的保存,理解信号在操作系统中的保存方式,理解系统中信号捕捉的处理过程以及介绍信号的其它知识!

  • 如何在 Linux 命令行中检查 CPU 使用率

    使用top来实时查看系统资源的使用情况,特别是 CPU 和内存的使用率。使用sar定期收集系统性能数据,以便后续分析历史性能趋势。使用mpstat来监控多核 CPU 的使用率,了解每个核心的性能状况。使用perf进行更深入的性能分析,包括函数调用图、指令和缓存的分析等。使用strace跟踪系统调用,解决程序执行中的异常情况。使用topvmstat和sar进行实时和历史性能监控,以便了解系统整体的健康状况。使用mpstatperf和strace进行更深入的 CPU 使用率分析,找出潜在的性能瓶颈。

  • 服务器与普通电脑的区别,普通电脑可以当作服务器用吗?

    服务器在我们日常应用中非常常见,手机APP、手机游戏、PC游戏、小程序、网站等等都需要部署在服务器上,为我们提供各种计算、应用服务。服务器也是计算机的一种,虽然内部结构相差不大,但是服务器的运行速度更快、负载更高、成本更高。服务器与普通电脑主要有哪些区别,让我们来看下吧!

  • 千兆网口、2.5G端口、5G端口有啥区别?如何选择?

    通过本文对千兆以太网、2.5G 以太网和5G 以太网的详细介绍,我们深入了解了它们的技术原理、优势、局限性以及在不同行业和应用场景中的应用。千兆以太网适用于一般用途,而2.5G网口和5G网口则更适用于对速度和性能有更高要求的专业场景。在做决策时,始终确保您的选择符合当前需求,并具备未来的可扩展性。

  • 如何强制Linux用户在下次登录时更改密码?

    在Linux系统中,用户账户的密码信息存储在和文件中。其中,文件包含用户的基本信息,而文件包含用户的加密密码以及与密码相关的设置。PAM模块允许管理员定义在用户登录、更改密码等操作时执行的任务。在密码管理方面,我们关注的是模块。本文介绍了如何强制Linux用户在下次登录时更改密码,并详细讨论了密码管理的各个方面。通过配置密码过期策略、使用PAM模块增加密码复杂性要求、设置强制密码更改通知、批量更改用户密码以及自动化密码更改过程,管理员可以提高系统的安全性,降低密码被滥用的风险。

  • SCCP 和 MTP3 之间有啥区别?

    通过详细介绍 SCCP 和 MTP3,以及它们之间的比较和协同工作,我们深入了解了它们在信令传输协议栈中的角色和功能。在设计和管理电信网络时,对 SCCP 和 MTP3 的理解是至关重要的,因为它们直接影响信令的可靠性、灵活性和性能。这样的理解有助于工程师和网络管理员更好地优化网络配置,确保通信系统的稳定运行。