Windows Terminal WSL SSH 免密登录(仅密码)

最近准备把ssh连接工具从Xshell转移到Windows Terminal,发现终端工具(Windows Terminal) 不支持保存密码功能,百度一番无果,ssh命令中不支持密码参数,只能上传服务器密钥来解决免密登录的问题,闲置几天后还是不死心,折腾一番过后终于想到了另一种方法实现相同的功能

 

本地环境:

宿主机是Windows系统,已安装WSL子系统Ubuntu20

大概思路:

打开终端后,运行脚本,通过 expect 交互进行自动输入密码,完成免密登录

最终结果:

完成文章中所有配置后,每次打开设定的新窗口将会自动登入远程服务器,期间无需进行任何操作

expect介绍:

expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。

expect自动交互流程:

spawn启动指定进程---expect获取指定关键字---send向指定程序发送指定字符---执行完成退出.

安装expect 

检测是否已安装

ls /usr/bin |grep expect

如果没有则进行安装

Ubuntu:sudo apt-get install expect

Centos: yum install expect

编写脚本(任意位置)

创建脚本目录(名称自定义)

mkdir service-start

创建脚本文件并写入内容(名称自定义)

cd service-start

vim server.sh

写入内容

#! /usr/bin/expect

# 连接ssh
spawn ssh -p 222 username@39.111.11.11

# 捕获末尾为password的内容
expect "*password:"

# 输入密码并回车
send "123456\r"

# 允许用户交互
interact

第一行一定不能删!!!

赋予脚本权限

sudo chmod +x server.sh

测试运行

./server.sh

如果进入服务器代表成功

配置Windows Terminal

打开设置

 选择将要修改为ssh连接的窗口,并在右侧命令行的输入框中输入指定字符

wsl.exe -e ./service-start/server.sh

 命令行参数详解

        wsl.exe                                        用于打开wsl的终端

        -e                                                 打开终端后输入的命令

        ./service-start/server.sh               脚本位置 (刚才创建的脚本位置)

Windows11 版本需要将启动目录里的"%USERPROFILE%"改为"~"

Ubuntu22需改为 ubuntu2204.exe run ~/service-start/tool.sh

wsl.exe 是安装wsl子系统后自带的终端工具,参数可在cmd窗口中输入 wsl.exe -help 进行查看

 如果使用powershell.exe 可输入 powershell.exe -NonInteractive ./service-start/server.sh

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows Subsystem for Linux 2(WSL2)是Windows 10操作系统中的一个功能,它允许用户在Windows中运行Linux操作系统。对于那些熟悉Linux的开发人员来说,WSL2是一种非常方便的方式来使用他们所熟悉的命令行界面和工具。 在WSL2中,用户可以使用多种方法进行远程访问。其中,其中之一是通过ssh远程登录。 SSH(Secure Shell)是一种安全的网络协议,允许用户在不安全的网络上进行加密通信。通过ssh远程登录WSL2,用户可以像在本地一样使用WSL2,同时还可以利用Windows的GUI界面。 要使用ssh远程登录WSL2,用户需要先启用ssh服务器。在Windows PowerShell或命令提示符中,可以使用以下命令来启动ssh服务器: ``` sudo apt update sudo apt install openssh-server sudo service ssh start ``` 安装和启动过程完成后,可以使用ssh客户端连接到WSL2。在本地电脑上,打开一个终端窗口并输入以下命令: ``` ssh [username]@[IP address of WSL2] ``` 其中,[username]是WSL2中的用户名,[IP address of WSL2]是WSL2的IP地址。默认情况下,WSL2会动态分配IP地址,可以使用以下命令在WSL2中查找其IP地址: ``` ip addr show eth0 | grep inet | awk '{print $2}' | cut -d / -f 1 ``` 使用这种方法进行远程访问,需要确保WSL2和Windows的防火墙设置正确。在Windows防火墙中,需要允许ssh流量通过。在WSL2中,需要允许ssh服务器通过WSL2的防火墙。可以使用以下命令配置WSL2防火墙: ``` sudo ufw allow ssh ``` 使用ssh远程登录WSL2时,还需要注意ssh客户端和服务端之间的证书问题。如果出现证书错误,需要检查证书是否正确配置。 总之,使用ssh远程登录WSL2是一种方便的方式,可让用户像在本地一样使用WSL2。通过配置WindowsWSL2的防火墙,并确保证书正确配置,用户可以安全、可靠地进行远程访问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值