0%

将树莓派的SSH终端集成到Windows Terminal中

raspberry-pi-logo-1920.png

树莓派我经常用,PuTTY SSH连接上去后的命令行页面简直无法直视。因此便萌生了将树莓派的SSH终端集成到Windows Terminal中的想法。

1、准备工作

1.树莓派开启SSH

树莓派开启SSH的方式十分简单,只需要将SD卡取下插在Windows电脑上,这时候会出现boot分区。在其中创建一个名为ssh的空文件即可。

这里多说一嘴,树莓派的WiFi也是这么配置的,只需要在boot分区内新建名为wpa_supplicant.conf的配置文件,在其中输入:

1
2
3
4
5
6
7
8
9
10
country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
ssid="输入你的SSID"
psk="输入你的WiFi密码"
key_mgmt=WPA-PSK
priority=1
}

sshwpa_supplicant.conf是我电脑上常备的两个文件,每次修改树莓派配置的时候直接复制就好了。

2.固定树莓派IP

1)通过修改配置文件固定

SSH是通过内网IP来连接树莓派的,而使用WLAN上网的树莓派每次开关机都可能会导致内网IP变更,这就意味着我们需要不断更改Terminal的配置文件,来达到SSH的效果,这太繁琐了,显然不是我们想要的。

为了避免不断修改Terminal的配置文件,我们可以将树莓派的内网IP固定。

输入ifconfig即可以查看树莓派的IP信息,使用WLAN(多为WiFi)的树莓派,可以找到wlan0所示内容(其余同理),比如我这里可以看到:

1
2
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet 192.168.0.■■■ netmask 255.255.255.0 broadcast 192.168.0.255

这个192.168.0.■■■便是我树莓派的内网IP。

接下来在命令行输入:

1
sudo nano /etc/dhcpcd.conf

在文件最下方添加:

1
2
3
4
5
interface wlan0  #指定接口
static ip_address=192.168.0.■■■ /24 #IP根据需要更改,“/24”的意思是子网掩码为 255.255.255.0
static ip6_address=fd51:42f8:caae:d92e::ff/64
static routers=192.168.1.1 #网关
static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1

2)通过WiFi固定

因为家里用网设备太多了,也说不准192.168.0.■■■这个内网IP在树莓派关机的时候被其他设备占走了,于是我便在WiFi的设置里直接将树莓派的IP固定了下来(通过设备Mac识别,因此这个内网IP将会是树莓派独有的)。

各品牌具体做法有所不同,但总的来说是一样的,可以自行百度对应品牌的固定方法,这里不多赘述。

2、配置Windows Terminal

1.JSON文件

Windows Terminal是微软旗下的一个开源软件,因此可定制化是很高的。和VSCode一样,Windows Terminal也采用JSON来进行个性化配置。

Windows Terminal GitHub README

Windows Terminal Startup Settings | Microsoft Docs

虽然目前还没有中文版的文档,但是……这也没啥难的不是吗?

我们可以通过Windows Terminal设置菜单左下角的“打开JSON文件”来打开JSON文件(禁止套娃)。

这个JSON文件的结构很清晰,长度也很短,至少比VSCode的配置要容易的多,他的主体结构是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
{
"defaults":
{
// SETTINGS TO APPLY TO ALL PROFILES
},
"list":
[
// PROFILE OBJECTS
]
},
"schemes":
[
]
}

看起来很简单,事实也的确如此。更加具体的内容可以去看官方文档

2.配置SSH

"list"的部分,你可以看到现有的一些配置,比如PowerShell的配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"acrylicOpacity": 1.0,
"backgroundImage": "C:\\Users\\theshell\\Desktop\\v2-63f5eb95255009bbf81ff41b8cb8e9b4_r.jpg",
"backgroundImageOpacity": 1.0,
"colorScheme": "Campbell",
"commandline": "powershell.exe",
"cursorShape": "vintage",
"experimental.retroTerminalEffect": true,
"fontFace": "Cascadia Mono",
"fontSize": 12,
"guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"hidden": false,
"name": "Windows PowerShell",
"useAcrylic": false
}

在官方文档详细解释了每一项的含义,感兴趣的还是自己到官方文档去看,我们这里只介绍对SSH配置有用的部分。

以下是我配置好的SSH配置:

1
2
3
4
5
6
{
"commandline": "ssh pi@192.168.0.■■■ -p 22",
"guid": "{84c9003a-35e7-c77a-c07a-9d887be39aec}",
"hidden": false,
"name": "RaspberryPi"
}
  • "commandline"是命令,在这里相当于启动该命令行时自动输入的第一条命令,这里用的是ssh的命令。
    • pi是要访问的用户名;
    • @后面是我分配给他的ip地址;
    • -p表示访问的port;
    • 22是ssh默认的port(如果你用Putty访问树莓派,选择ssh协议的默认端口也是22)
    • 这里说个趣闻,ssh命令我这里原本因未知原因无法使用,所以才取用PuTTY。结果现在配置的时候突然就好了。倘若当初就能用也许我现在也不会来配置Windows Terminal。
  • guid是全局唯一标识符,可以直接搜索:”在线guid生成“得到一串字符串。
  • hidden决定是否隐藏该环境的入口。选择Ture的话,下拉菜单中就找不到这个环境了。
  • name环境的名字,这里直接命名为RaspberryPi。

上述内容填写到"list"部分,保存后再去Windows Terminal就可以看到树莓派的环境了。