vscode ssh安装使用&远程服务器上自动安装vscode server

1. vs code安装ssh插件

在vscode的extension 输入ssh,点击安装。安装完毕后重新加载(或者重新启动),能看到界面左侧侧边栏多了一个图标。
在这里插入图片描述

2. 远程服务器安装vscode server

接下来是本篇博客的重点了,同事借助GPT写的安装脚本,非常好用,才写下了这篇博客哈哈哈哈!

这里将这个安装脚本分成了两步,一步是给远程服务器下载与你本地vscode相对应版本的vscode server,另一步是安装使用。

需要注意的是如果你本地的vscode版本发生了升级等变更操作,远程服务器的vscode server也要进行相应变更,最好是借助这个脚本重新安装一次。

2.1 安装依赖程序

需要本地安装sshpasswget两个程序,用于在本地启动脚本下载安装资源包到远程服务器

sudo apt install sshpass  wget # 需要安装以上两个程序

2.2 下载与本地vscode对应vscode server版本

打开你本地vscode菜单栏->帮助->关于,找到vscode版本的commit id,复制然后修改到下面脚本中:
在这里插入图片描述

同时修改你要操作的远程服务器的ip、账号和密码,需要注意的是你的远程服务器可能无法联网,那么可以在本地下载好资源包然后copy到远程服务器的~/.vscode-server/bin目录下(此目录会在执行脚本1.sh后生成,当然你也可以自己创建):

wget "https://update.code.visualstudio.com/commit:abd2f3db4bdb28f9e95536dfa84d8479f1eb312d/server-linux-x64/stable" #本地下载

假设以下脚本名为1.sh,在终端执行:bash 1.sh,进行下载:

#!/bin/bash

# sudo apt install sshpass  wget # 需要本地安装以上两个程序

commit_id="abd2f3db4bdb28f9e95536dfa84d8479f1eb312d" # 你的vscode版本 菜单栏->帮助->关于
host="192.168.xxx.xxx" #替换为你需要安装的PC host名
user="xxx" # 在远程host中你的账号
password="xxxxxx" # 将xxx替换为实际密码

pkg_name="stable"
host_dir=".vscode-server/bin"

# # 下载 Visual Studio Code 服务器

wget "https://update.code.visualstudio.com/commit:${commit_id}/server-linux-x64/${pkg_name}"
#wget "https://update.code.visualstudio.com/commit:abd2f3db4bdb28f9e95536dfa84d8479f1eb312d/server-linux-x64/stable"

2.3 安装

假设以下脚本名为2.sh,在终端执行:bash 2.sh,执行脚本完成安装:

#!/bin/bash

# sudo apt install sshpass  wget # 需要安装以上两个程序

commit_id="abd2f3db4bdb28f9e95536dfa84d8479f1eb312d" # 你的vscode版本 菜单栏->帮助->关于
host="192.168.xxx.xxx" #替换为你需要安装的PC host名
user="xxx" # 在远程host中你的账号
password="xxxxxx" # 将xxx替换为实际密码

pkg_name="stable"
host_dir=".vscode-server/bin"

# # 下载 Visual Studio Code 服务器

#wget "https://update.code.visualstudio.com/commit:${commit_id}/server-linux-x64/${pkg_name}"
#wget "https://update.code.visualstudio.com/commit:abd2f3db4bdb28f9e95536dfa84d8479f1eb312d/server-linux-x64/stable"

sshpass -p "${password}" ssh "${user}@${host}" "mkdir ~/.vscode-server;mkdir ~/${host_dir}"

# 将文件复制到远程服务器

sshpass -p "${password}" scp "${pkg_name}" "${user}@${host}:~/${host_dir}/"

# 解压文件并将其移到正确的目录

sshpass -p "${password}" ssh "${user}@${host}" "tar -xvf ~/${host_dir}/${pkg_name} -C ~/${host_dir}; mv ~/${host_dir}/vscode-server-linux-x64  ~/${host_dir}/${commit_id}"

# 同步本地扩展到远程服务器

sshpass -p "${password}" rsync -avz --progress ~/.vscode/extensions/ "${user}@${host}:~/.vscode-server/extensions/"

之后就可以在vscode中登录到远程服务器,进行远程编辑使用了。
在这里插入图片描述

3. 免密登录

参考博客:【Linux基础】SSH免密登录的第三节[SSH免密登录],照着操作即可完成ssh免密登录。

通过对SSH两种安全验证机制的了解,可以发现使用口令登录的方式需要输入密码,而使用公钥登陆的方式避免了输入密码这个步骤。因此SSH基于密钥的安全验证方式可以实现SSH远程免密登录。实现SSH免密登录的步骤如下:

3.1 本地生成密钥对

使用ssh-keygen生成一对密钥,生成的私钥将存放在用户目录下的.ssh/id_rsa中,公钥将存放在用户目录下的.ssh/id_rsa.pub中生成的两个密钥文件:

在这里插入图片描述

生成的两个密钥文件:

3.2 将公钥放入服务器中

登录服务器,将刚刚在本机生成的公钥(.ssh/id_rsa.pub)复制到服务器的~/.ssh/authorized_keys文件中

使用cat指令查看authorized_keys文件,cat authorized_keys可以看到公钥已经被写入。

注意:~/.ssh/authorized_keys文件中可以存放多个主机的公钥,每个公钥后面会使用主机名来区分

在这里插入图片描述

3.3 免密登录服务器

完成以上设置后在本机使用SSH可以免密登录服务器