vscode 通过 WIN10 ubuntu子系统(Bash On Windows)管理远程主机

本文介绍如何在Windows中启用并安装Bash子系统,包括解决安装过程中遇到的问题,如下载源劫持等。此外,还介绍了如何在VSCode中配置Bash作为默认终端,并实现远程连接。

1、启用子系统功能

打开控制面板—选择程序,按下图操作
这里写图片描述

2、启用安装bash

按win键,输入cmd,然后打开cmd后,输入bash 可见下图。
一般会出现无法从windows应用商店进行下载。提示。
这里写图片描述

3、劫持bash安装源(步骤2正常下载,则本步骤可以忽略)

由于无法安装,我们需要劫持windows下载源,利用Fiddler4。
大家需要两样东西:
1、Fiddler4
2、14.04.5.2-server-cloudimg-amd64-root.tar.gz

14.04.5.2-server-cloudimg-amd64-root.tar.gz

下载地址:https://wsldownload.azureedge.net/14.04.5.2-server-cloudimg-amd64-root.tar.gz

劫持下载源步骤
打开fiddler
这里写图片描述

将下面的勾打上,我们将可以劫持https。由于fiddler劫持 https 的证书,所以https协议的控制器也可以归我们所有了,由此可见,如果链路上出现了中间人,https也不一定安全。
这里写图片描述

这里写图片描述

替换的文件需要事先下载好到本地。

劫持的地址为:EXACT:https://wsldownload.azureedge.net/14.04.5.3-server-cloudimg-amd64-root.tar.gz
这里写图片描述

到此,windows下载源劫持就完成了。
接下来
按win键,输入cmd,然后打开cmd后,输入bash 后,再输入y即可完成安装。

4、更换vscode的默认终端

打开 vscode 进行选择,文件—-首选项—-设置 , 将出现一下界面
这里写图片描述

修改红框中的字符串为:
"terminal.integrated.shell.windows": "C:\\Windows\\sysnative\\bash.exe"

此时在vscode上,按ctrl+`(键盘左上角,esc键下面的按钮) 将会出现终端界面。
此时我们可以打开windows上面的 子系统shell。

5、使用vscode替换好的bash终端,连接远程终端。

ctrl+`运行终端后,在 /home/xxxxx/ 建立一个文件run.sh,内容如下

#!/usr/bin/expect

set timeout 3
spawn ssh root@xxx.xxx.xxx.xxx
expect "*password*"
send "password\r"
send "sudo -s\r"
send "cd /home\r"
interact

加运行权限:
chmod +x /home/xxxxx/run.sh

在子系统中的ubuntu上面需要安装expect:
apt-get install expect

编辑 /home/xxxxx/.baserc, 在末尾加入登录执行命令:
expect /home/xxxxx/run.sh

一切就绪后,在vscode上面按ctrl+d,退出终端。
重新按ctrl+`进入终端即可登录远程shell。

结果如下:
这里写图片描述

6、更好的建议与问题

我们此处的第五步其实是懒人做法。
我们可以利用配置ssh密钥,进行无密码登录。

为什么windows上面有shell还需要连接远程shell?

因为我的习惯一直都在windows上面安装一个虚拟机,然后再在windows进行管理,但由于vscode无法直接调用我虚拟机中的shell,所以只能借助windows上面的shell进行连接。

大家也可以直接利用windows上面的shell进行开发。

参考文章:
http://www.cnblogs.com/VAllen/archive/2017/04/03/BashOnWindowsDownloadAndInstallError.html
http://www.cnblogs.com/zhenbianshu/p/5867440.html

感谢参考文章作者的奉献!!

### 配置 VS Code 通过 SSH 连接到 Ubuntu 系统 要在 Windows 10 上使用 Visual Studio Code (VS Code) 通过 SSH 连接到远程Ubuntu 系统,需要完成以下几个步骤: #### 安装和配置 OpenSSH 客户端 Windows 10 提供了内置的 OpenSSH 客户端支持,可以用来连接远程服务器。首先确保你的 Windows 10 已经安装并启用了 OpenSSH 客户端: - 打开 PowerShell 并运行以下命令检查是否已经安装 OpenSSH 客户端: ```powershell Get-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 ``` - 如果未安装,可以通过以下命令进行安装: ```powershell Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 -Source "C:\Path\To\Source" -LimitAccess ``` 如果不想指定源路径,也可以直接从 Microsoft Store 下载安装。 一旦 OpenSSH 客户端安装完成,就可以使用 `ssh` 命令来测试与远程 Ubuntu 系统的连接[^1]。 #### 在 VS Code 中安装 Remote - SSH 扩展 Visual Studio Code 提供了一个名为 **Remote - SSH** 的扩展,允许用户通过 SSH 连接到远程开发环境: - 打开 VS Code,进入扩展市场 (`Ctrl+Shift+X`)。 - 搜索 `Remote - SSH`,然后点击安装。 安装完成后,在左下角会出现一个绿色的按钮图标,点击后选择 `Connect to Host...`,然后输入目标主机的 SSH 地址、用户名以及认证方式(通常是密码或密钥)。 #### 配置 SSH 密钥 为了方便安全地登录到远程 Ubuntu 系统,建议设置 SSH 密钥对: - 在本地生成 SSH 密钥对(如果尚未创建),可以在 PowerShell 中运行: ```bash ssh-keygen -t rsa -b 4096 ``` - 将公钥上传至远程 Ubuntu 主机的 `.ssh/authorized_keys` 文件中: ```bash ssh-copy-id username@remote_host ``` 确保远程 Ubuntu 系统上已安装并运行了 SSH 服务。如果没有安装,可以通过以下命令安装 openssh-server 包: ```bash sudo apt update sudo apt install openssh-server ``` 验证 SSH 服务是否正在运行: ```bash systemctl status ssh ``` 若服务未启动,可使用 `sudo systemctl start ssh` 启动它[^2]。 #### 使用 VS Code 连接 Ubuntu 现在,当所有准备工作都已完成时,可以通过 VS Code 的 Remote - SSH 功能连接到 Ubuntu: - 点击左下角的绿色按钮图标,选择 `Remote-SSH: Connect to Host...`。 - 输入远程主机的信息,例如 `username@hostname`。 - 如果一切正常,VS Code 将会打开一个新的窗口,并显示远程文件系统,此时可以开始在远程环境中进行开发工作。 此外,还可以编辑位于 `.ssh/config` 的配置文件来简化未来的连接过程。例如: ```conf Host MyUbuntuServer HostName ubuntu.example.com User your_username IdentityFile ~/.ssh/id_rsa ``` 这样,在下次连接时只需选择 `MyUbuntuServer` 即可快速建立连接。 #### 故障排查 如果遇到 locale 设置相关的问题,比如出现警告信息 `setlocale: LC_ALL: cannot change locale (en_US.UTF-8)`,则可能需要在远程 Ubuntu 系统上重新生成相应的 locale 配置: ```bash sudo apt install locales sudo locale-gen en_US.UTF-8 sudo dpkg-reconfigure locales ``` 这将确保语言环境正确无误,避免因 locale 不匹配导致的应用程序错误[^5]。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值