Windows Terminal 免密 ssh 登录

Windows Terminal(Windows终端)是微软公司发布的面向Windows10的新命令行程序,它是一个更现代化,功能更丰富,更加高效的终端应用程序,适用于命令行用户。它包含最常用的许多功能,包括对选项卡,富文本,全球化,可配置性,主题和样式等的支持。

本文主要说明如何在 Windows Terminal 中配置 ssh 免密登录。默认读者对 Windows Terminal 有一定程度的理解和使用,如果是初次使用,可以想到官方网站了解 Windows Terminal 的功能和使用方法。Windows 终端概述 | Microsoft Learn

主体思路:通过 Windows Terminal 设置中的 profile 中新增 tab 标签页,并配置打开 tab 时自动执行相关 ssh 连接命令;并在要连接的服务器中追加客户端 ssh 公钥。具体操作如下:

Windows Terminal 设置中新增 tab 标签页

打开 json 设置文件,具体操作如下:

image-20230419200043900

在 profiles -> list 中增加新的 tab 标签页打开选项,如下图所示:

image-20230419201030396

关键参数

  • guid:不能重复
  • name:自己定义
  • commandline:ssh 连接命令

其他的是主体和字体配置,根据自己的喜好设置,这里不做过多说明。最后保存就行了。

至此,我们就可以在 Windows Terminal “打开新标签页”的下来列表中看到我们新增的 name,点击后可以直接打开一个新的终端标签页,并自动执行 ssh 连接命令,但是美中不足的是,还需要我们手动输入密码,如何解决这个问题,看下面的操作。

设置 ssh 免密登录

有两种方案,

  1. 在 commandline 中输入连接密码,这种方案将密码以明文的形式写在配置文件中,这里不做推荐使用。
  2. 通过 ssh 公钥,免密登录。本文主要说明这种方法。

生成本机 ssh 公私密钥对

1
2
# windows 用户可以通过 git bash 中的ssh-keygen 命令生成
ssh-keygen

默认位置在用户文件夹下的 .ssh 文件夹中生成两个文件:

  • id_rsa
  • id_rsa.pub

将本地 ssh 公钥追加到服务器

  • 连接服务器,新建文件 tmp.pub,并复制上步生成的 id_rsa.pub 文件的内容到 tmp.pub,保存。然后,我们需要为用户的 authorized_keys 文件添加该 ssh 公钥,具体步骤如下:

    1
    2
    3
    4
    5
    6
    cd ~
    vi tmp.pub # 复制本地 ssh 公钥 id_rsa.pub 中内容
    mkdir .ssh && chmod 700 .ssh
    touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
    cat tmp.pub >> .ssh/authorized_keys
    rm tmp.pub

操作成功后,重启 Windows Terminal 就可以体验免密登录了。