Skip to content

WSL2安装 & ZSH 安装

WSL2 安装

确保你的 Windows 版本支持 WSL2

win + R输入winver, 或者在cmd终端窗口输入winver会弹出一个窗口显示你的 Windows 版本信息。

bash
$ winver

启用 WSL 功能required

管理员身份打开PowerShell(如果这个运行不了)或者打开cmd运行下面的命令:

bash
$ wsl --install

设置 WSL 版本为 WSL2required

设置默认 WSL 版本为 2

bash
$ wsl --set-default-version 2

查看在线的 Linux 发行版required

bash
$ wsl --list --online

Linux发行版

查看已安装的 Linux 发行版

bash
$ wsl --list
# 或者简写
$ wsl -l

安装子系统required

bash
$ wsl --install -d Ubuntu

启动和设置 Linux 发行版required

  1. 启动安装的 Linux 发行版:

在开始菜单中找到你安装的 Linux 发行版,点击启动。

wsl-ubuntu

  1. 初次设置:

按照提示创建用户和密码。

wsl-ubuntu启用

命令行启动指定的系统required

默认登录用户就是刚刚创建的用户

bash
$ wsl -d Ubuntu

登录root用户

默认创建系统的时候, root用户是没有设置密码的, 可以在 cmd 窗口通过下面的命令直接登录 root 用户, 如果 root 用户设置了密码, 下面的命令也可以直接登录 root 用户。设置 root 密码只在wsl系统中切换用户才会使用到。

bash
$ wsl -d Ubuntu --user root

更改普通用户的密码

通过上面的命令登录 root 用户后, 执行下面的命令passwd 普通用户名即可直接修改新密码

bash
$ passwd zhouyu

更改 root 用户密码

正常打开 Ubuntu 系统, 然后执行下面的命令

bash
$ su root
# 或者
$ su -

登录root用户的方式

查看 WSL 版本

bash
$ wsl --list --verbose
# 或者简写
$ wsl -l -v

两个系统环境隔离

提示

  • 安装完 WSL 系统后, 就可以把 Windows 当成 Linux 使用了, 但是需要注意的是 WSL 是一个隔离的系统环境,与 Windows 的文件系统是隔离的。
  • 注意: Windows系统中设置的环境变量以及安装的工具在WSL环境中无法使用。WSL是一个全新的隔离的系统,需要在WSL系统中重新安装环境!比如你的windows上安装了 nodejs 环境或者 python 环境等,但是在 WSL 中无法使用这些工具,(1)要么给这个系统重新安装环境,(2)要么通过 /mnt/ 下的磁盘去找到该环境启动。推荐使用第 (1) 种方式吧。隔离的系统,就应该真正做到环境隔离!

如何访问其他磁盘?

说明

  • WSL 会自动将 Windows 文件系统的各个磁盘挂载到 /mnt/ 目录下。使用 cd 命令访问各个磁盘及其目录,享受 Linux 环境与 Windows 系统文件的无缝集成。

查看启用的linux系统

* 标识的表示当前正在使用的版本。

检查 WSL 的整体版本

bash
$ wsl --status

配置WSLSSH连接

安装 SSH 服务

如果你还没有安装 SSH 服务,请使用以下命令进行安装:

bash
$ sudo apt update
$ sudo apt install openssh-server

配置SSH服务允许root登录

有时,SSH 默认会禁用 root 登录。你可以编辑 SSH 配置文件来允许 root 登录:

bash
$ vim /etc/ssh/sshd_config
# 找到下面这行内容
# PermitRootLogin prohibit-password
# 修改为, 保存并退出
PermitRootLogin yes

启动 SSH 服务

进行配置更改后,重启 SSH 服务以应用更改:

bash
$ sudo service ssh start

通过ssh方式连接WSL

提示

  • VSCode中按快捷键Ctrl + Shift + P 打开命令行窗口, 搜索打开SSH就可以选择SSH-Remote插件的配置文件进行配置SSH连接

打开SSH-Remote配置文件

安装VSCode的SSH-Remote插件,配置ip和用户名进行登录, 在连接的时候会提示输入密码。

md
Host 192.168.83.64
  HostName 192.168.83.64
  User root

# 这是我的另一台云服务器, 通过私钥文件免密登录的方式, 没有私钥文件提供就通过密码的方式登录即可
Host 47.120.28.25
  HostName 47.120.28.25
  User root
  IdentityFile ~/.ssh/aliyunserverkey.pem
  • 推荐: 通过秘钥的方式进行连接(自动加载, 以后无需重复输入密码连接)
  1. 本地生成秘钥
bash
$ ssh-keygen -t rsa -b 2048
  1. 复制公钥放到服务器
bash
$ cat ~/.ssh/id_ed25519.pub
  1. 将公钥复制到服务器的authorized_keys文件中
bash
$ vim ~/.ssh/authorized_keys
# 把公钥复制到这里,保存退出
  1. 本地SSH-Remote的连接配置
md
Host 192.168.83.64
  HostName 192.168.83.64
  User root
  IdentityFile ~/.ssh/id_ed25519

使用秘钥登录的原理介绍

说明

  • 使用 SSH 密钥登录的原理是基于公钥密码学(也称为非对称加密),它提供了一种安全的身份验证方式,比传统的密码登录更加安全。
  • SSH 密钥登录的基本概念
  1. 公钥和私钥:

提示

  • 公钥:可以公开分享的密钥,放在服务器上。
  • 私钥:保存在客户端(用户本地计算机)上的密钥,必须保密。
  1. 密钥对

密钥对:SSH 密钥是成对生成的,包括一个公钥和一个私钥。用户可以使用 ssh-keygen 命令生成一对密钥。

  • SSH 密钥登录的过程
详情
  1. 密钥对生成:

用户在本地计算机上生成一对密钥,公钥和私钥。这通常通过命令 ssh-keygen 实现。

  1. 安装公钥:

将生成的公钥复制到远程服务器的 ~/.ssh/authorized_keys 文件中。这可以通过命令 ssh-copy-id 或手动方式完成。

  1. 建立连接:

用户使用 SSH 客户端尝试连接到远程服务器,SSH 客户端会发送一条请求到服务器。

  1. 服务器验证:

服务器查找连接用户的公钥是否在 ~/.ssh/authorized_keys 文件中。如果找到了,服务器会生成一个随机数(挑战)并用该公钥加密这个随机数,然后将其发送给客户端。

  1. 客户端响应:

客户端使用其私钥解密这个随机数,得到明文的挑战,然后将这个明文返回给服务器。

  1. 服务器验证响应:

服务器检查客户端返回的明文挑战是否正确。如果正确,服务器认为身份验证成功,允许连接。

  1. 安全会话建立:

一旦身份验证成功,SSH 协议将建立一个加密的会话,确保数据在传输过程中是安全的。

  • 优势

说明

  • 安全性:即使公钥被盗,攻击者也无法访问服务器,因为没有对应的私钥。
  • 方便性:用户不需要每次输入密码,可以使用 SSH 密钥轻松登录。
  • 抵御暴力破解:使用密钥的方式可以避免传统密码被暴力破解的风险。
  • 具体步骤如下:
bash
# # 生成密钥对
$ ssh-keygen -t ed25519 -C "your_email@example.com"
# 复制公钥内容放到服务器的 ~/.ssh/authorized_keys
$ cat ~/.ssh/id_ed25519.pub
# 本地配置连接时要用来解密的私钥文件
# ...

MSYS2环境安装 zsh 工具

前言

可以这样认为,这个工具提供了类Unix环境,将windows环境与该环境隔离,所以在MSYS2环境外部是无法访问windows上配置好的环境变量的。在该环境中,建议直接当一台微型版的Linux系统来使用。常用的Linux命令在该环境中都默认提供了,比如lspwddf等等。没有的话,可以尝试搜索一下MSYS2的仓库中是否有提供。常用的都有,比如gitgcczshtmux(终端分屏工具)等。

windows上安装的git bash终端工具不能使用tmux终端分屏工具,所以特意安装MSYS2这个集成终端工具来玩的。

安装MSYS2工具

按照官网的安装步骤操作即可

安装zsh工具

示例

MSYS2官网默认提供了很多开源工具,可以通过pacman -S 工具名称搜索,例如pacman -S zsh

bash
$ pacman -S zsh   # 打开MSYS2终端界面,安装zsh

安装vimgit工具

bash
$ pacman -S vim git -y

安装oh-my-zsh

说明

上面安装了git工具后,就可以通过oh-my-zsh仓库说明文档里的安装说明进行安装了,在安装过程中需要使用git工具进行将仓库代码克隆到本地,这样不需要自己去github上手动下载了,所以一定要给MSYS2安装git扩展工具。

bash
# 安装命令
$ sh -c "$(curl -fsSL https://install.ohmyz.sh/)"

ohmyzsh安装完成

安装完成后,在刚才MSYS2默认安装的根目录下的home > 用户名子目录中,会看到一个.oh-my-zsh文件夹,里面就是oh-my-zsh的配置文件。包含主题、插件、更新工具等。

配置MSYS2到系统环境变量

这样方便在windows系统环境变量可用的终端中执行启动MSYS2终端工具的命令。

配置MSYS2到系统环境变量

配置MSYS2终端主题

提示

  • 类似于windowscmd窗口,可以配置背景色、前景色等,MSYS2工具也支持在线配置主题并导出主题文件来设置本地的主题。下面的配置链接可以在MSYS2终端窗口顶部右击配置主题时获得。
  • 推荐:官方提供的主题配置

MSYS2配置选项

配置MSYS2中文语言

设置MSYS2配置界面为中文

设置为中文语言后,不止MSYS2终端的界面变成中文了,连命令帮助文档都是中文的了

中文界面

设置MSYS2终端到cmd个性化配置

配置终端个性化

json
{
  // ...
  	"profiles": {
		"defaults": {},
		"list": [
        {
          "guid": "{17da3cac-b318-431e-8a3e-7fcdefe6d114}",
          "name": "MSYS / zsh",
          "commandline": "C:/msys64/msys2_shell.cmd -defterm -here -no-start -ucrt64 -shell zsh",
          "startingDirectory": "C:/msys64/home/%USERNAME%",
          "icon": "C:/msys64/msys2.ico",
          "font": {
            "face": "Lucida Console",
            "size": 16
          }
        },
        {
          "guid": "{71160544-14d8-4194-af25-d05feeac7233}",
          "name": "MSYS / MSYS2",
          "commandline": "C:/msys64/msys2_shell.cmd -defterm -here -no-start -msys",
          "startingDirectory": "C:/msys64/home/%USERNAME%",
          "icon": "C:/msys64/msys2.ico",
          "font": {
            "face": "Lucida Console",
            "size": 12
          }
        }
        // ...
      ]
    }
}

温馨提醒

建议还是不要单独安装MSYS2了吧,因为windows终端也自带有分屏的功能。因为环境隔离,使用起来还是有点不方便。要集成到VSCode里面做终端还要做很多配置,有点麻烦。算了算了。

Git Bash安装 zsh 工具

推荐

安装Git工具

前往: 官网, 下载之后点击下一步下一步安装即可。

配置git到环境变量

配置git到环境变量

下载安装包

步骤

下载zsh工具的安装包放到git安装的根目录。

zsh初始界面

解压安装包

步骤

git根目录将zsh的安装包解压到当前文件夹,解压之后,安装包压缩文件中的文件与git具有相同同名的文件夹会自动进行合并,其中zsh的工具zsh.sh就放到了git根目录下的bin目录中。所以当我们在使用bash终端时,输入zsh就可以找到zsh.sh这个脚本文件执行。

bash
$ ls /bin | grep zsh

zsh的脚本文件

初始化 zsh 配置文件

打开cmd窗口,进入Git安装的根目录,执行zsh命令,初次执行会弹出初始化提示的界面,按0结束弹窗。之后会自动在Windows的用户目录下创建了一个.zshrc配置文件。

zsh初始界面

zsh配置文件

设置git终端默认使用zsh工具

打开bash的配置文件

bash
$ vim ~/.bashrc

输入下面的代码,然后按:wq保存退出

sh
if [ -t 1 ]; then
  exec zsh
fi

配置bashrc默认使用zsh

安装扩展zsh终端主题的on my zsh工具

目录文件

  • lib: 提供了核心功能的脚本库
  • tools: 提供安装、升级等功能的快捷工具
  • plugins: 自带插件的存在放位置
  • templates: 自带模板的存在放位置
  • themes: 自带主题文件的存在放位置
  • custom: 个性化配置目录,自安装的插件和主题可放这里
  • 在线安装

注意

在线安装可能由于网络原因会出现不稳定中断的故障,但是可以多尝试两次执行下面的命令,后面下载时会利用前面的缓存接着下载,这样就可能成功,我就是这样操作的。

bash
$ sh -c "$(curl -fsSL https://gitee.com/mirrors/oh-my-zsh/raw/master/tools/install.sh)"

克隆安装oh-my-zsh

  • 离线安装

注意

如果在线安装总是有问题,那就前往Oh-My-Zsh仓库下载安装包。放到用户下,同AppData同级,重命名为.oh-my-zsh

在下面的截图中也可以看到,我刚刚通过在线安装方式获取到的安装脚本install.sh,安装脚本执行后其实也是下载oh-my-zsh仓库中的文件放到了用户目录下的.oh-my-zsh的文件夹中。

下载的解压之后,得到的.oh-my-zsh文件夹,里面有一个tools子文件夹,在这个目录中有install.sh安装脚本,在命令行通过sh install.sh执行这个脚本即可完成安装。

推荐:前往Oh-My-Zsh仓库 github

推荐:前往Oh-My-Zsh仓库 gitee

oh-my-zsh文件夹放置位置

oh-my-zsh的install脚本位置

  • 成功安装

红色的警告信息不用管,那是因为你在家目录下还没有对bash做配置文件.bashrc或者其他相关的个性化配置文件等。可以看到,成功安装后,左边的提示命令符变成箭头图标了。

oh-my-zsh安装成功界面

配置Oh-My-Zsh主题

提示

通过上面的安装,已经获得了Oh-My-Zsh提供的所有主题以及插件等。接下来可以自由选择性地配置自己想要的主题了。

只需要在.zshrc配置文件的ZSH_THEME字段指定.oh-my-zsh目录下的themes文件夹中的主题文件名称即可启用指定的内部扩展主题。

关于主题名称和示例,请看这里:内部扩展主题示例,想要安装更多外部主题请看这里: 外部扩展主题,每个外部扩展主题示例下面有对应存储仓库的链接,点击链接进入该主题的存储仓库,会有相应的安装教程!

  • 打开zsh的配置文件
bash
$ vim ~/.zshrc

配置zsh主题

  • 安装外部扩展主题

克隆(github下载)主题仓库到本地,或者直接下载主题仓库中提供的 xxx.zsh-theme这个文件,免得浪费时间下载一个仓库大半天,然后将*.zsh-theme的主题文件,放到.oh-my-zsh目录下的themes文件夹中,文件名(不含后缀)作为主题名称配置到~/.zshrc文件中的ZSH_THEME字段即可。

安装外部扩展zsh主题

~/.zshrc配置文件中配置了ZSH_THEME主题的字段后,要使用命令 source ~/.zshrc 重新加载一下配置文件。

配置插件

说明

  • Oh-My-Zsh提供了两种插件,一种是内置提供的插件,放在 ~/.oh-my-zsh/plugins 目录中;第二种是自定义或第三方扩展插件,应该放在 ~/.oh-my-zsh/custom/plugins 目录中。

  • Oh-My-Zsh提供了全局环境变量$ZSH_CUSTOM 表示 自定义插件放置路径,即~/.oh-my-zsh/custom

  • 插件可以配置多个,在plugins的列表里面里面添加,以空格分隔开就行了。

  • 注意:插件的名称是插件所在目录的名称,如下图所示!

下面通过两个例子来演示如何安装第三方扩展插件

插件配置只需要填写插件所在目录即可,默认约定插件目录名称就是插件名称,实际的插件名称应该以.plguin.zsh结尾。

插件配置须知

  • 内置插件配置

找到 ~/.oh-my-zsh/plugins中的插件名称,添加到 ~/.zshrc中的 plugins 字段进行配置即可。

zgit都是内置的,z用于直达之前cd过的目录。

zsh配置内置插件

  • 第三方自定义插件配置

可以通过git克隆到自定义插件目录中,也可以到github上面去手动下载后,解压缩之后将资源放在自定义插件目录中。

bash
# zsh-syntax-highlighting
$ git clone https://gitee.com/mirrors/zsh-syntax-highlighting.git ${ZSH_CUSTOM}/plugins/zsh-syntax-highlighting
# zsh-autosuggestions
$ git clone https://gitee.com/mirrors/zsh-autosuggestions.git ${ZSH_CUSTOM}/plugins/zsh-autosuggestions

zsh-autosuggestions(提示插件),会自动提示之前输入过的

zsh-syntax-highlighting(语法高亮),如果输入指令是正确的会高亮提示,这两个需要安装。(上图已先配置)

提示

  • .oh-my-zsh目录下的pluginsthemesoh-my-zsh自带提供的所有配套插件和主题,可以选择性地配置才能启用。

  • .oh-my-zsh目录下的custom文件中的pluginsthemes是第三方自定义插件和主题的存放目录。

  • ~/.zshrc中配置的插件和主题,会优先从内置插件和主题从寻找,没有的话再找自定义插件,找不到的话会提示没有配置。

设置自动随机应用主题

提示

  • 参考来源: 前往官网查看

  • 在开启一个zsh终端实例的时候,会随机从主题资源中应用一个主题样式。只需要配置~/.zshrc文件中的ZSH_THEME="random"即可。

本地化(正常显示中文)

通过 vim ~/.zshrc 添加下面的配置

sh
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8

重新加载一下配置文件: source ~/.zshrc

设置地区和语言

如果再不显示中文, 就设置终端的 外观 > 语言 & 字体

配置 git 关联 github 仓库

配置 Git 用户信息

在使用 Git 之前,需要配置你的用户名和邮箱地址。这些信息会与每次提交的记录绑定。

bash
$ git config --global user.name "你的用户名"
$ git config --global user.email "你的邮箱"

--global 表示这两个设置将应用于你所有的 Git 仓库。如果你想为某个特定仓库使用不同的用户名或邮箱,可以在仓库目录下不加 --global 进行设置。

可以通过以下命令查看当前的配置:

bash
$ git config --list

创建 GitHub 仓库

仓库创建完成后,复制仓库的ssh地址。

本地初始化仓库

bash
$ git init

添加远程仓库

bash
$ git remote add githubware 仓库的ssh连接地址
$ git remote -v

配置 ssh 认证方式

可以通过 HTTP 的方式连接提交,但是每次都需要认证填写密码,这就很不方便。ssh只需要配置好秘钥,每次即可直接提交。

  1. 生成和配置密钥对(如果尚未生成)

如果已经生成过密钥对,则将~/.ssh/*.pub【公钥】文件内容复制到github的个人设置中配置秘钥即可。【私钥】是本地用来跟服务器建立安全连接时验证【秘钥对】使用的,不能反过来。

配置秘钥有两种签名算法,一种是ed25519,一种是rsa,任选一种,最终都可以生成一个公钥和私钥。

bash
$ ssh-keygen -t rsa -b 4096 -C "你的github电子邮箱"
$ cat ~/.ssh/xxx.pub    # 复制这个文件的内容添加到github的个人配置中
  1. 测试 ssh 连接 测试ssh配置

如果连接成功,你会看到 GitHub 的欢迎信息。

  1. 添加文件并提交
bash
$ echo "Hello world" > README.md
$ git add .
$ git commit -m "initial repo"
$ git push githubware main
# 如果失败,可以看一下本地仓库的分支是否不对
$ git reflog
# 不对的话,可以切换到正确的分支
$ git branch -m master main
$ git pull githubware main --allow-unrelated-histories    # 合并无关历史

至此就完成了git关联github仓库的配置。