V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nexmoe
V2EX  ›  Visual Studio Code

用 VS Code 管理服务器,我有独特的服务器管理方式

  •  4
     
  •   nexmoe ·
    nexmoe · 2023-10-05 17:02:01 +08:00 · 5923 次点击
    这是一个创建于 413 天前的主题,其中的信息可能已经有所发展或是发生改变。

    自从 Typora 开始收费之后,我彻底转向使用 VS Code ( Visual Studio Code ) 进行文章撰写。作为一款 Markdown 编辑器,它已经完全满足了我的需求。

    然而,我开始思考是否可以将 Visual Studio Code 用作服务器管理器。在此之前,我一直使用 FinalShell 进行服务器管理,这款工具具备以下特点,也是我所喜欢的:

    • 简单的服务器资源监控
    • 服务器文件浏览
    • 终端功能
    • 多服务器管理

    当 VS Code 发布 Remote SSH 功能时,我并没有太过关注。该功能的初衷是用于远程开发,而我并没有远程开发的需求。然而,当我开始进行远程开发时,我决定尝试使用 Remote SSH 。结果令我惊喜地发现,Remote SSH 非常适合用于服务器管理工作。

    那么,VS Code 有哪些特点,并且满足了我哪些需求呢?

    VS Code 的特点

    多服务器管理

    通过在你需要访问的远程服务器中配置好 SSH Key ,便可以轻松地设置 Remote SSH ,并指定服务器的 IP 地址,从而直接通过 Remote SSH 访问服务器。

    Host server1
        HostName 服务器 1 的 IP 地址
        User 用户名
    
    Host server2
        HostName 服务器 2 的 IP 地址
        User 用户名
    

    通过这样的配置,然后就可以方便地在 VS Code 中访问和管理多个服务器。只需单击服务器列表中的相应服务器,即可快速连接到目标服务器,并在远程环境中执行所需的操作。

    文件浏览器

    和正常一个项目的使用一样,VS Code 可以打开服务器的一个文件夹。然后我们就可以进行各种各样的文件浏览器的常规操作。还可以使用搜索功能快速查找和定位特定的文件。

    我通常就会直接把账号目录直接打开。

    同时还可以直接集成 VS Code 本身拥有的强大的文件编辑能力。

    从此告别 lsmkdirtouchvi 等操作。

    方便快捷的终端体验

    可以同时打开多个终端实例,并在它们之间切换。每个终端实例都可以独立运行命令,并保留其输出历史记录。

    还可以在编辑器的多个标签页或分割视图中同时打开不同的终端实例,以便同时执行不同的命令。

    除此之外,在 VS Code 中,可以通过右键单击文件或文件夹,选择"在终端中打开",快速打开终端并自动切换到对应的路径。再也不用痛苦的到处 cd 了。

    Docker GUI 管理

    由于我大部分服务都是放在 Docker 上,所以对于 Docker 的使用是非常高频的。

    如果你在服务器上使用 Docker 进行容器化管理,VS Code 通常就会推荐你安装 Docker 扩展,然后就可以并以图形化界面的形式管理和操作 Docker 容器。可以方便地查看和管理容器、镜像、网络和卷等 Docker 资源,执行常见的 Docker 命令,以及监控容器的状态和日志。

    这基本覆盖了大部分 Docker 常用的操作,也让我大部分时间不再需要使用 Portainer 或是命令行了。

    Git GUI 集成

    VS Code 提供了强大的 Git GUI 集成功能,可以在代码仓库上进行版本控制和协作。可以直接通过 GUI 进行查看提交历史、比较文件差异、切换分支、合并代码,以及推送和拉取代码等操作。

    丰富的个性化主题、插件生态

    如果本身就使用 VS Code ,便可以直接继承自己的审美。同时 VS Code 比其他终端管理软件拥有更为丰富丰富的个性化主题选项,可以根据自己的喜好和习惯选择适合的主题。也具有丰富的插件社区。

    其它

    除此之外,VS Code 本身就具有跨平台支持、多语言支持等特性,而且它完全免费。

    如何使用 VS Code 进行服务器管理

    你需要满足如下条件

    • 能够运行 VS Code 的电脑
    • 正版的 VS Code
    • 生成 SSH Key 并完成配置
    • Remote SSH 插件

    其实你需要的并不多,核心是 VS Code 中的 Remote SSH 插件。

    配置 SSH Key

    你需要在你的电脑上生成 SSH Key ,并将公钥配置到服务器上以实现免密登录。你可以在网上查找相关教程了解如何生成和配置 SSH Key 。

    配置 Remote SSH

    通过 这个链接 安装 Remote SSH 后。

    你可以按照以下步骤来打开和配置 SSH 主机:

    1. 在 VS Code 左下方找到 Remote SSH 的图标按钮。
    2. 点击该按钮,然后选择 "Connect to Host" 选项。
    3. 再次点击 "Configure SSH Hosts"。

    就可以在 VS Code 中进行配置,指定服务器的 IP 地址和用户名。示例配置如下:

    Host server1
        HostName 服务器 1 的 IP 地址
        User 用户名
    
    Host server2
        HostName 服务器 2 的 IP 地址
        User 用户名
    

    完成配置后便可以在左下角直接连接服务器了。

    插件以及其他推荐

    Monitor Pro 插件

    资源监控,由我开发。

    Monitor Pro 是一款资源监控工具,实时跟踪系统指标。监测 CPU 、内存、网络、文件系统使用率,电池百分比和充电状态。可自定义顺序和刷新间隔,提供高占用警报。适用于开发人员、系统管理员和普通用户。

    https://marketplace.visualstudio.com/items?itemName=nexmoe.monitor-pro

    Docker 插件

    如果你在使用 Docker 容器来部署应用程序,这个插件可以帮助你在 VS Code 中管理和调试 Docker 容器。

    Wakatime 插件

    统计你在服务器上的摸鱼时间。

    zsh 与 ohmyzsh

    使用 ohmyzsh 以及它的生态,为你的命令行集成自动补全和纠错功能。

    38 条回复    2024-05-11 13:42:14 +08:00
    dacapoday
        1
    dacapoday  
       2023-10-05 19:01:49 +08:00   ❤️ 1
    vscode remote server 端会消耗 1GB 左右的内存,并在磁盘上保留最近四个版本的程序本体,以及插件的历史版本。
    而且 server 端默认会启动类似 反弹 shell 的隧道,并定期执行端口扫描。
    kongkongye
        2
    kongkongye  
       2023-10-05 19:16:22 +08:00 via iPhone
    长期使用下来,有几个问题:
    1. config 里配置的服务器有十几个,每次加载出这个左侧服务器列表要几十秒好像,太慢了
    2. 有连接保活方式吗?有时盖子合上重新打开,又要输入密码,太麻烦了
    kyonn
        3
    kyonn  
       2023-10-05 19:31:09 +08:00   ❤️ 1
    代替 typora 的话有没有比较好的最佳实践或者插件推荐下? typora 主要是所见即所得, 几个好用的快捷键, 以及配合插件的复制上传图片到图床的功能 .
    sickoo
        4
    sickoo  
       2023-10-05 20:04:38 +08:00
    vscode 的 remote ssh 确实很好用,让我放弃用 termius
    idblife
        5
    idblife  
       2023-10-05 20:11:21 +08:00 via iPhone
    支持跳板机不?
    flyi
        6
    flyi  
       2023-10-05 21:18:02 +08:00
    @kongkongye SSH 免密登录,之后就不用输密码了
    releaseme
        7
    releaseme  
       2023-10-05 22:05:16 +08:00
    对小内存不太友好,我的 2C2G VPS 经常卡死
    lscho
        8
    lscho  
       2023-10-05 22:07:04 +08:00   ❤️ 6
    笑死,还真有人为了捡个芝麻丢个西瓜。

    vscode remote server 的内存占用、内存泄漏、cpu 异常占用你们是真不管啊。。。
    voidmnwzp
        9
    voidmnwzp  
       2023-10-05 22:18:24 +08:00
    每次连接 ssh 都要输入密码
    kdwnil
        10
    kdwnil  
       2023-10-05 22:39:16 +08:00 via Android
    看了一眼我的列表里那些 1c1g 的小鸡,想想还是算了,性能实在跑不起这玩意
    pendulum
        11
    pendulum  
       2023-10-05 23:11:19 +08:00
    内存占用太大了,而且偶尔还会出现内存泄露的问题。服务器内存大可以上
    chaleaochexist
        12
    chaleaochexist  
       2023-10-05 23:33:17 +08:00
    @kyonn 两个
    一个是 office viewer
    一个是 foam
    我现在用 foam 但是不需要所见即所得. 我都不 preview. preview 全靠脑补. 眼中有码,心中无码. dog
    JordanSUN
        13
    JordanSUN  
       2023-10-05 23:50:18 +08:00
    有一个困扰很久的小问题,这个 remote 的机器列表,config 倒是可以直接复制,但是里边存了多台服务器打开过文件夹的 list ,这个好像无法备份?多台机器之前好像没法儿共享这个~ 不知有无一些奇技淫巧🤒
    Jat001
        14
    Jat001  
       2023-10-06 00:25:33 +08:00 via iPhone
    @kongkongye @voidmnwzp 请用 openssh 自带的 ControlMaster 功能,不重启 session 一直在。win 下的 openssh 用不了,只能用 wsl 里的,win 下的 vscode 也可以调 wsl 里的 ssh
    ferock
        15
    ferock  
       2023-10-06 00:54:40 +08:00 via Android
    所以,op 是用的本地 vs code 还是 vs code remote server ?
    qbug
        16
    qbug  
       2023-10-06 01:41:45 +08:00 via Android   ❤️ 2
    你这个 Monitor Pro 是真不错,刚好我最近在找监控资源的插件,我之前试了几个体验都不怎么好,你这个挺全的。
    就是我觉得如果加入 task manager 功能就更妙了,这样连 top 之类的命令都省了,毕竟服务器资源监控有的时候是需要看一看各进程的占用量的😂
    worldquant
        17
    worldquant  
       2023-10-06 02:07:16 +08:00
    弃了吧,我现在主力用网页端,sshwifty
    alittlecat
        18
    alittlecat  
       2023-10-06 07:42:58 +08:00 via iPhone
    @idblife 支持 jumperserver
    dabai0806
        19
    dabai0806  
       2023-10-06 09:24:57 +08:00
    https://github.com/coder/code-server 服务器运行, 网页端操作
    zouzou0208
        20
    zouzou0208  
       2023-10-06 09:48:03 +08:00
    我 fork 改过一个,可以本地直接打开远程的 vscode 也可以远程打开本地的 vscode
    在命令行和 code 行为一致。特别好用
    https://github.com/yihong0618/rcode https://twitter.com/yihong0618/status/1539592302636965889
    supersu
        21
    supersu  
       2023-10-06 10:05:30 +08:00
    支持 sudo 提权么,因为我禁用了 root 登录
    uncat
        22
    uncat  
       2023-10-06 10:17:12 +08:00   ❤️ 1
    @kongkongye 请使用密钥验证替代密码验证,无论是 Linux 还是 Windows

    Windows Docs: https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_keymanagement
    uncat
        23
    uncat  
       2023-10-06 10:19:40 +08:00
    @releaseme 自己买台 PC 装 Linux ,WireGuard + FRP 实现 VPN 接入(可以访问所有 192.168.0.0/16 ),然后再配合虚拟化,你就可以有一个超级强悍的个人开发网络了

    ![servers]( https://jinmiaoluo.oss-cn-shenzhen.aliyuncs.com/blog/workstation.jpg)
    ferock
        24
    ferock  
       2023-10-06 11:38:29 +08:00
    试过了,竟然是在远程服务器上安装 vs code server...
    nexmoe
        25
    nexmoe  
    OP
       2023-10-06 11:51:57 +08:00
    @ferock #15 本地 VS Code 用 Remote SSH 连接远程服务器
    nexmoe
        26
    nexmoe  
    OP
       2023-10-06 11:54:04 +08:00
    @zouzou0208 不错啊
    ferock
        27
    ferock  
       2023-10-06 12:03:21 +08:00
    @worldquant #17

    用过,很不方便
    ferock
        28
    ferock  
       2023-10-06 12:11:22 +08:00
    @uncat #23

    我用 Tailscale
    nexmoe
        29
    nexmoe  
    OP
       2023-10-06 12:16:57 +08:00   ❤️ 1
    @qbug 有准备做资源监控的打算
    lidage
        30
    lidage  
       2023-10-06 12:21:47 +08:00
    vscode 的插件 https://zh.database-client.com/#/home?source=8828_cweijan.vscode-ssh

    database-client 不香吗,数据库,rdp ssh 等都可以
    2NUT
        31
    2NUT  
       2023-10-06 16:22:07 +08:00
    自从 Typora 开始收费之后,我就买了授权
    blankmiss
        32
    blankmiss  
       2023-10-06 19:13:06 +08:00
    vs code server 吃性能吃的一批
    zoumouse
        33
    zoumouse  
       2023-10-06 19:43:52 +08:00
    @lscho 只能说确实太方便了,对我来说方便到了可以忽略这些的程度
    SekiBetu
        34
    SekiBetu  
       2023-10-06 20:10:06 +08:00
    感觉不如 tabby
    jlak
        35
    jlak  
       2023-10-06 20:41:11 +08:00 via iPhone
    开了 node.js 服务器实例后待机后( macbook 盒盖)再打开需要重连,重连后实例一直开着占用大量内存但是找不到了有解决办法吗
    csznet2023
        36
    csznet2023  
       2023-10-07 08:35:36 +08:00
    建议直接使用 Windows CMD 或者 Macos Terminal 配合 goFile 使用,能达到楼主需要的目的,还不占用资源,https://github.com/csznet/goFile
    xgdgsc
        37
    xgdgsc  
       2023-10-07 11:56:42 +08:00
    还可以配合 https://marketplace.visualstudio.com/items?itemName=nguyenngoclong.terminal-keeper 每次启动 vscode 的时候打开一些服务器上的监控终端之类的命令
    toyst
        38
    toyst  
       194 天前
    @lidage rdp 就过了啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2797 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 15:07 · PVG 23:07 · LAX 07:07 · JFK 10:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.