对于不太会使用 Vim 的我来说,在服务器上用 Vim 去修改 nginx.conf 实在有点麻烦,比如没有高亮和格式化。正好想起前不久微软发布了远程开发工具包,其中一个就是今天要介绍的 Remote-SSH。下面是官方对该扩展的定义:

The Remote - SSH extension lets you use any remote machine with a SSH server as your development environment. This can greatly simplify development and troubleshooting in a wide variety of situations.

因此用来修改 nginx.conf 也是符合其目标的。

执行环境

  • Windows 10
  • Powershell Core 6.2.0
  • Visual Studio Code Insiders:因为 Remote-SSH 还在 Preview 阶段,只能开发版的 VSCode 中使用。
  • 远程 Linux 主机

使用方法

在 Remote-SSH 扩展的介绍页面下其实是有一个快速开始文档的,简单来说就是在成功安装该扩展之后,需要配置服务端和本地客户端的环境。

在服务器上安装 SSH 服务

同样有文档

  • Debian / Ubuntu

    1. Run sudo apt-get install openssh-server
  • RHEL / Fedora / CentOS

    1. Run sudo yum install openssh-server && sudo systemctl start sshd.service && sudo systemctl enable sshd.service

本地连接远程主机

  1. 配置基于 SSH 密钥的身份验证

    1. 自定义 SSH 密钥文件名称,使用你自己定义的名称替代 id_rsa-remote-ssh

      1. ssh-keygen -t rsa -b 4096 -f "HOME\.ssh\id_rsa-remote-ssh"
    2. 编辑 SSH config 文件,添加以下代码。

      1. Host name-of-ssh-host-here
      2. HostName your-fqdn-or-ip-goes-here
      3. User your-user-name-on-host
      4. IdentityFile ~/.ssh/id_rsa_remote-ssh

      Host 仅仅是远程服务器主机的名称,我取的是 CentOS;HostName 是你的远程服务器 IP 地址;User 是登录用户名称,比如 root;IdentityFile 则是私有密钥的相对路径,也可以是绝对路径。

    3. 将本地的 id_rsa-remote-ssh.pub 的内容追加到远程服务器的 authorized_keys 文件里。

      1. # 将`name-of-ssh-host-here`替换成你第二步里面的Host后面的值即可,这里可以用单引号或者双引号
      2. $REMOTEHOST='name-of-ssh-host-here'
      3. # 这里一定要使用双引号
      4. $PATHOFIDENTITYFILE="$HOME\.ssh\id_rsa-remote-ssh.pub"
      5. # scp 是 linux 系统下基于 SSH 登陆进行安全的远程文件拷贝命令。这里把本地的公开密钥复制到服务器端的`~/tmp.pub`中。该命令运行之后需要输入服务器登录密码。
      6. scp $PATHOFIDENTITYFILE "$REMOTEHOST`:~/tmp.pub"
      7. # 通过 SSH 向服务器执行以下一组命令,执行成功后本地的密钥就被追加到服务器的`~/.ssh/authorized_keys`文件里。
      8. ssh $REMOTEHOST "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat ~/tmp.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && rm -f ~/tmp.pub"

      以上是初次添加公钥时需要对~/.ssh设置了权限。以后再添加其他机器的公钥就不需要执行chmod操作了,直接将公钥追加到authorized_keys文件即可。

      1. ssh $REMOTEHOST "cat ~/tmp.pub >> ~/.ssh/authorized_keys && rm -f ~/tmp.pub"
  2. VSCode 下按下 F1 调起所有命令面板,运行 Remote-SSH: Connect to Host... 选择你上一步配置好的主机,回车连接即可。

遇到的问题

  1. 在使用方法章节的 1.3 中执行 scpssh 命令时可能会遇到 Permission denied 的问题。把 Powershell 以管理员身份运行也报同样的错误。请执行以下命令,看看是否存在多个相同命名的可执行文件。

    1. where.exe scp
    2. # 我的输出:
    3. # C:\Windows\System32\OpenSSH\scp.exe
    4. # D:\Scoop\shims\scp.exe
    5. where.exe ssh
    6. # 我的输出:
    7. # C:\Windows\System32\OpenSSH\ssh.exe
    8. # D:\Scoop\shims\ssh.exe

    如果存在,那么优先或默认会使用前一个可执行文件(System32/OpenSSH下的scp),结果我们已经知道,会报“权限不足”的错误。当我使用后一个可执行文件(Scoop/shims下的scp)时,竟然成功了。

    解决办法有两种:

    • 使用scp时,把路径打全。ssh同理。

      1. D:\scoop\shims\scp.exe $PATHOFIDENTITYFILE "$REMOTEHOST`:~/tmp.pub"
    • 把系统环境变量PATH里的C:\Windows\System32\OpenSSH删除。

How to use Remote-SSH in Windows的更多相关文章

  1. windows 10使用vscode进行远程代码开发 | tutorial to use vscode for remote development using ssh on windows

    本文首发于个人博客https://kezunlin.me/post/c93b6ba6/,欢迎阅读最新内容! tutorial to use vscode for remote development ...

  2. Java ssh 访问windows/Linux

     Java ssh 访问windows/Linux 工作中遇到的问题: Java code运行在一台机器上,需要远程到linux的机器同时执行多种命令.原来采用的方法是直接调用ssh命令或者调用pli ...

  3. Jenkins踩坑系列--你试过linux主机ssh登录windows,启动java进程吗,来试试吧

    一.问题概述 在一个多月前,组长让我研究下持续集成.我很自然地选择了jenkins.当时,(包括现在也是),部分服务器用的是windows主机. 我当时想了想,如果我把jenkins装在windows ...

  4. VS Code Remote SSH设置

    本文翻译自:5 Steps: Setup VS Code for Remote Development via SSH from Windows to Linux system 5个步骤:设置VS代码 ...

  5. The remote SSH server rejected X11 forwarding request

    两台相同的虚拟机,一台没有错误,一个经常出现警告,内容如下所示: The remote SSH server rejected X11 forwarding request 找了很多方法,最后发现是安 ...

  6. How to configure ODBC DSN in Client to access remote DB2 for Windows

      How to configure ODBC DSN in Client to access remote DB2 for Windows MA Gen feng (Guangdong Unito ...

  7. Xshell报错“The remote SSH server rejected X11 forwarding request.”

    Xshell报错“The remote SSH server rejected X11 forwarding request.” 2012年12月17日 ⁄ Linux⁄ 共 218字 ⁄ 字号 小  ...

  8. Xshell 连接虚拟机出现 "The remote SSH server rejected X11 forwarding request"

    1. 描述 虚拟机:VirtualBox Linux: centOS7 解决了 centOS7在VirtualBox中装好后的网络连接问题 后,用 Xshell 连接服务器时出现下面情况: 2. ss ...

  9. 解决 Xshell 连接出现 The remote SSH server rejected X11 forwarding request 问题

    问题描述 使用 Xshell 5 首次连接虚拟机 CentOS 7.6 出现这样的提示: WARNING! The remote SSH server rejected X11 forwarding ...

  10. 解决"The remote SSH server rejected X11 forwarding request"问题

    今天突然想起来好久没有登录我的vps了,于是下载了xshell,填入地址登录后,看到提示"WARNING! The remote SSH server rejected X11 forwar ...

随机推荐

  1. plsql 视图中 为什么使用替代触发器

    /* 什么是视图? 视图:数据库对象,存的是一个查询命令:当作一个虚拟的数据表来使用: 应用场景: 简化查询操作:不能直接在视图上进行create,insert,update操作: 创建视图? 需要管 ...

  2. java的四种引用:强软弱虚

    简介 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说,只有对象处于(reachable)可达状态,程序才能使用它. 从JDK 1.2版本开始,对象的引 ...

  3. C++中三种正则表达式比较(C regex,C ++regex,boost regex)

    工作需要用到C++中的正则表达式,以下三种正则可供参考 1,C regex #include <regex.h> #include <iostream> #include &l ...

  4. StarUML官网地址 http://staruml.io/

    StarUML官网地址 http://staruml.io/

  5. art 模式 android runtime

    空间换时间的概念. art:程序在安装时需要预编译读取,将代码转换为机器码 好处:程序运行时,无需时时转换,运行速度快 : 缺点:安装时间稍长,由于转换机器码,所以占用略高的存储空间.

  6. 手势仿QQ侧滑---秀清

    // // SlideViewController.h // qqcehua // // Created by 张秀清 on 15/5/25. // Copyright (c) 2015年 张秀清. ...

  7. Apache Http Server与Tomcat6 的负载均衡(二)

    一般来说,实现Apache与Tomcat6的负载均衡有两种方式,一种是使用mod_jk,另一种是使用mod_proxy模块.本文只讨论mod_jk方式. 无论使用哪种方式,一般都要经过以下这几个步骤( ...

  8. 给 zsh 自定义命令添加参数自动补全

    有时我会自定义一些 zsh 命令,以便提升某些高频操作的效率.本文记录我给一个自定义命令添加参数自动补全的方法. 场景 我自定义了一个 zsh 命令 gmt,执行 gmt <b2>,可以将 ...

  9. 解决OpenOCD烧录STM32失败, 无法通过SWD连接的问题

    OpenOCD烧录STM32失败的问题 Linux下使用 OpenOCD 烧录 STM32, 出现了 Error: init mode failed (unable to connect to the ...

  10. Solution -「ABC 215H」Cabbage Master

    \(\mathcal{Description}\)   Link.   有 \(n\) 种颜色的,第 \(i\) 种有 \(a_i\) 个,任意两球互不相同.还有 \(m\) 个盒子,每个盒子可以被放 ...