当前位置: 首页 > 工具软件 > visual-ssh > 使用案例 >

VSCode配置Remote-SSH连接Linux远程开发

吕向荣
2023-12-01

VSCode 作为最强的的一款编辑器,其强大之处在于其友好的操作界面和丰富的插件,除了为各种编程语言增加了插件外,对于 SSH 远程连接和 WSL 等都也有对应的插件,极大的方便了使用 VSCode,同时也能最大限度地利用 VSCode 强大的功能。本篇主要介绍的是使用 ssh 插件 Remode-SSH 进行远程连接 Linux 进行开发。

安装Remote-SSH插件并配置

注意:请确保你的 Linux 已安装 SSH 服务,否则请先在 Linux 上安装 OpenSSH-Server,这里不赘述其安装过程。
首先打开 VSCode 的插件搜索界面,搜索 Remote-Developoment 并安装,因为这个插件同时会安装所有 Remote 系列插件。
安装好后,开始配置地址信息,按 Ctrl+Shift+P,输入 ssh,找到 Open Configuration File 选项,选择打开本地用户下 .ssh/config 文件,然后输入自己的 Linux 机器的配置信息,如下:

Host CentOS7
    HostName 192.168.1.1
    User codepeak

如果你想要配多个服务器配置,可以按照相同格式配多个,这里只配两个基本配置,还有其他更多高级配置选项请查阅官方文档。
现在将左边的远程资源管理器的选项切换为 SSH Targets,就会看到我们上面配的配置的 Linux 主机,选择一个 Linux 右键点击 Connect to Host in Current Windows 就会在本窗口建立远程连接,之后弹出的会话框,点击选择 Linux,点击 Continue,然后输入你配置的 Linux 账户的密码即可。连接成功后,会在左边资源管理器中出现:已连接到 SSH:XXX。然后再打开你的工作目录就可以和在 Windows 上一样编辑代码了。
使用 Ctrl + Shift + ~ 可以调出 Linux 终端,或者点击资源管理器中的文件右键在集成终端打开,就可以打开 Linux 终端,方便输入 Linux 命令。
到这里,VSCode 基本的远程连接功能已经 OK 。如果你可以成功连接,恭喜你使用愉快,如果不成功就需要继续往下看。

遇到的问题

当然,事情总是不可能那么顺利,有的机器可以顺利连接,有的机器上会报出一个和管道相关的错误,其总结的解决方法如下:

  1. 可能是你的 Linux 服务器的 SSH 配置有问题,通过修改配置测试是否解决问题(小概率)。
  2. 删除服务器上创建的 .vscode-server 目录,这是在个人用户主下创建的隐藏目录(可以使用 ls -la 命令显示隐藏的文件),可能是一些不正确的数据被缓存在那里,因此删除目录将使您的情况更加整洁。删除后,可以尝试通过vscode上的remote-ssh重新连接(中概率)。
  3. 如果你服务器都没有 .vscode-server 文件夹,但还是连接不上,基本可以确定就是你 SSH 的问题了。原因是 Windows 10 自带了openssh 客户端,自带的客户端存在这个问题 vscode 的官方文档给出了相应的解决方式,参考 Local SSH file and folder permissions,如果还是不行,需要直接安装 Git,因为 Git 自带 openssh-client,可以将 ssh-client 指向为 git 软件中的 ssh 程序(大概率)。

打开 Git Bash 查看 ssh 可执行文件的安装路径:where ssh.exe

$ where ssh.exe
C:\Program Files\Git\usr\bin\ssh.exe
C:\Windows\System32\OpenSSH\ssh.exe

第二个路径即为 windows 自带的 ssh-client。
可以将 windows 自带的 ssh-client 卸载掉,参考 mircosoft官方的介绍卸载 OpenSSH-Client (也可以不卸载,直接修改环境变量中 ssh 为 Git 的 SSH)。
然后将 git 软件携带相应的 ssh-client 可执行文件路径设置到系统的环境变量中。找到系统变量的 Path,删除原来的 OpenSSH,加入上面的 C:\Program Files\Git\usr\bin\ssh.exe 即可。

使用密钥免密码登录

每次远程连接,或者打开新的路径都需要输入密码,多少会有些繁琐,我们可以通过配置密钥直接免密码登录。
客户端配置
必须确保本地 Windows 已经安装了 ssh,下面这些命令都是在安装的 Git 自带的 git bash 终端中输入。
首先生成 SSH 秘钥对 :

ssh-keygen -t rsa -b 4096 

(-b 4096表示生成的 rsa 秘钥对的长度是 4096 个 bit) 在输入该指令后,会让我们指定秘钥文件的生成目录,可以直接回车跳过,生成的目录在c:\user\用户名\.ssh此目录下生成:id-rsaid-rsa.pub两个文件,第一个是私钥文件,第二个是公钥文件,用户名称是你自己的电脑用户名。
服务器端配置
首先检测 ssh 服务是否启动:

netstat -ntlp | grep ssh

修改 SSH 的配置文件:

vim /etc/ssh/sshd_config

这里最重要的是要把PubkeyAuthentication配置为yes允许使用基于密钥认证的方式登录。
最后,将客户端的公钥id-rsa.pub文件上传到对应用户根目录的 .ssh 文件夹下,进入 .ssh 中将公钥的内容拷贝到authorized_keys文件中
bash

cp id_rsa.pub authorized_keys

然后设置相应文件的权限

chmod 700 .ssh
chmod 600 .ssh/authorized_keys

VS的Remote-SSH插件配置
设置 vscode 的 Remote - SSH 插件配置文件:

Host CentOS7
    HostName X.X.X.X
    User XXX
    IdentityFile  C:\Users\WINDSUN\.ssh\id_rsa

配置好后,如果无法连接,可以尝试重新使用 ftp 将本地公钥上传到 Linux 上,然后再将其复制到 authorized_keyse 文件中,设置权限,重启 SSH 服务器,重新连接。
在使用公钥第一次连接到 Linux 时候,可能会让你输入密码。连接完成后,会在你的用户 .ssh 目录中中生成一个文件 known_hosts,这个目录中还有公钥和私钥 id-rsa.pub 和 id-rsa 文件,然后将公钥上传到服务器上,重新重复上面的复制到 .ssh/authorized_keys,并且重新设置权限,再重新尝试连接到 Linux,就不需要再输入密码了。

离线安装vscode-server

参考:
https://www.cnblogs.com/sinicheveen/p/13812278.html
https://zhuanlan.zhihu.com/p/294933020
上面说的情况都是在 Linux 机器有网络情况下,Linux 上会自动安装 .vscode-server,然后 vscode 作为客户端直接连接即可,但是有些情况下并没有网络,比如内网开发,如果我们想要使用 VSCode 连接 Linux,上面的操作行不通,我们需要先在 Linux 下安装 vscode-server,其安装时有很多注意点,具体如下所述。
1、获取 VSCode 的 commitid,打开 VSCode 的帮助->关于,然后出现了一些版本信息,点击复制,内容大概如下:

版本: 1.58.1 (user setup)
提交: 2aeda6b18e13c4f4f9edf6667158a6b8d408874b
日期: 2021-07-13T06:58:28.115Z
Electron: 12.0.13
Chrome: 89.0.4389.128
Node.js: 14.16.0
V8: 8.9.255.25-electron.0
OS: Windows_NT x64 10.0.17763

2、从 https://update.code.visualstudio.com/commit:${commit_id}/server-linux-x64/stable下载 vscode-server-linux-x64.tar.gz 压缩包文件。
注意:这里的 ${commit_id} 就是你的版本号,比如:2aeda6b18e13c4f4f9edf6667158a6b8d408874b。
例如上面的提交版本下载地址就是:

https://update.code.visualstudio.com/commit:2aeda6b18e13c4f4f9edf6667158a6b8d408874b/server-linux-x64/stable

3、运行下面两行命令,在 Linux 上建立空的 $HOME/.vscode-server/bin 文件夹。

mkdir -p ~/.vscode-server/bin
rm ~/.vscode-server/bin/* -rf   #把$HOME/.vscode-server/bin下的内容删干净,防止出错

4、将 vscode-server-linux-x64.tar.gz 上传在服务器上的 $HOME/.vscode-server/bin 文件夹中,解压。

cd ~/.vscode-server/bin
tar -zxf vscode-server-linux-x64.tar.gz
mv vscode-server-linux-x64 ${commit_id}   # 注意把:${commit_id}替换成对应的Commit ID

5、在 ~/.vscode-server/bin/${commit_id} 目录下创建一个文件,文件名为 0

touch 0

小技巧:如果要将新的服务器上的 VSCode Server 上安装插件包,最快的办法就是直接将已安装完插件的服务器上的 $HOME/.vscode-server/extensions 目录打包,解压到新服务器上对应位置。插件包一般没有版本要求,因此 VSCode Server 版本不同也能正常使用。

 类似资料: