一、登录到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