Windows子系统的Linux环境部署及配置ssh连接

一、登录到Linux子系统配置root用户

`创建用户名并登录成功后运行

sudo passwd root

示例图片
sudo使用管理员权限执行设置root的密码

二、配置ssh连接通道

0、安装SSH服务器
在 Linux 子系统中,打开终端,运行以下命令来安装 OpenSSH 服务器:

sudo apt update
sudo apt install openssh-server

1、修改配置端口为22,允许密码和root登录。
运行以下命令进行修改配置文件内容

sudo nano /etc/ssh/sshd_config

找到下面的内容并去掉注释在前面的#号
其中把PermitRootLogin prohibit-password更改为PermitRootLogin yes这是允许用root登录的。

Port 22
PermitRootLogin prohibit-password
PasswordAuthentication yes
ListenAddress 0.0.0.0

ListenAddress 代表允许所有ip连接,想暴露到公网连接可以开启
去掉前面的#号后Ctrl+X保存并退出。

2、重启SSH服务
运行

service ssh restart

sudo service ssh --full-restart

命令进行重启服务。

示例
修改示例
3、终端测试连接
输入指令,格式为:ssh 用户名@域名/IP

ssh root@127.0.0.1

4、可能遇到的问题

IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:7w4e1igtDH8TwLnUijD1xa+t/gAyo8MfoCG81U+bi7Q.
Please contact your system administrator.
Add correct host key in C:\\Users\/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in C:\\Users\/.ssh/known_hosts:6
Host key for 127.0.0.1 has changed and you have requested strict checking.
Host key verification failed.

打开 C:\Users.ssh\known_hosts 文件内将所有连接记录清除
示例
输入密码连接成功

5、确保SSH服务器会在系统启动时自动启动:

运行以下命令来设置SSH服务器开机自启动:

sudo systemctl enable ssh

刷新

sudo service ssh --full-restart

6、配置永久解决方案
通过上面的方法,我们可以通过xshell登录自己电脑的Linux。但是断开之后重新开机,我们又需要重新配置SSH。
因此,我们需要配置以下命令下,一劳永逸。
sudo service ssh --full-restart ## 将该命令保存为service.sh,存在home目录下

cat > ~/service.sh
# >>> service ssh restart >>>
# for Xshell connection
sudo service ssh --full-restart
# <<< service ssh restart <<<

Ctrl + D 保存退出即可

配置好之后,下次开机,只需要在Linux子系统的默认终端运行

sudo sh ~/../../root/service.sh

命令后,关掉终端改用xshell登录即可。

7、查看ssh运行状态

sudo service ssh status

三、设置默认使用root登录系统(可选)

登录到 root 用户。在 WSL 中,您可以使用 sudo 命令来获取 root 权限。运行以下命令并输入当前用户的密码以获得 root 权限:

sudo -i

输入 root 用户的密码,您将切换到 root 用户。
要永久更改默认用户为 root 用户,编辑 WSL 配置文件。使用你喜欢的文本编辑器(例如,nano 或 vim)打开 /etc/wsl.conf 文件(如果文件不存在,请创建它):

sudo vim /etc/wsl.conf

按 i 进入编辑模式。编辑完成vim按ESC

:wq!

保存退出编辑

sudo nano /etc/wsl.conf

nano编辑 Ctrl+X保存退出

打开后将以下内容追加到文件中

[user]
default=root

这会将默认用户设置为 root 用户。

保存并关闭文件。关闭当前终端窗口并重新打开一个终端窗口。

在Windows运行以下命令重新启动 WSL 以应用更改:

wsl --shutdown

赘言 : root模式下需要执行的sudo sh ~/…/…/root/service.sh将变更为

sudo sh ~/service.sh

四、删除刚开始创建的用户(可选)

使用 userdel 命令删除要删除的用户帐户。假设要删除的用户帐户名为 username,请运行以下命令:

sudo userdel username
sudo rm -r /home/username 

五、设置端口转发

方法一、

为了能够从外部连接到你的WSL Linux子系统,你需要确保系统具有公共IP地址,或者设置端口转发以将流量路由到WSL子系统的局域网IP地址。请检查你的网络配置,确保WSL子系统能够访问公共网络,并且有一个可供外部访问的IP地址。
1、查看Linux内置网卡ip地址信息
ipconfig / ip addr show
显示所有接口的IP地址:

ip addr show
ipconfig

ip addr show 失败时

sudo apt-get update
sudo apt-get install iproute2

在Windows小黑板输入增加转发的命令:

netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=22 connectaddress=127.0.0.1 connectport=22

删除端口转发

netsh interface portproxy delete v4tov4 listenport=22 listenaddress=0.0.0.0

使用以下命令列出当前的端口转发规则:

netsh interface portproxy show all

测试连接的命令:

ssh username@ip -p 22

方法二、nginx反向代理

1、下载Windows版Nginx
Nginx官网直达下载
下载解压到合适的位置
示例

打开conf文件夹下的nginx.conf文件修改
将以下内容添加为文件内容

stream {
    upstream ssh {
        server 127.0.0.1:22;
    }
    server {
        listen 22;
        proxy_pass ssh;
    }
}

保存双击打开nginx.exe文件运行,每次修改conf文件后需要关闭nginx并重新打开才可以生效
创建stop.cmd文件添加以下内容可快捷关闭正在运行的nginx

nginx.exe -s quit

示例图
成功通过公网IP连接ssh

示例图

  • 34
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值