SSH 远程登录 WSL

2021-08-29  本文已影响0人  美式永不加糖

饱受 Teamviewer/向日葵 之苦后,还是决定操作一番

安装 openssh-server

# 删除然后重新装ssh
# 并不知道为什么,但好多人这么搞

sudo apt-get remove openssh-server
sudo apt-get install openssh-server

修改 sshd_config 文件

sudo vi /etc/ssh/sshd_config
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::


# 更改端口,防冲突
# 监听地址去掉注释
Port 2222
#AddressFamily any
ListenAddress 0.0.0.0
#ListenAddress ::

PasswordAuthentication no --> yes
PermitEmptyPasswords no --> yes

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes
PermitEmptyPasswords yes

PermitRootLogin

#PermitRootLogin prohibit-password

# 改成👇

PermitRootLogin yes

重启 ssh server

sudo service ssh restart
# * Starting OpenBSD Secure Shell server sshd

# 查看 ssh server 状态
service ssh status
# * sshd is running

查看 IP

ifconfig
#zsh: command not found: ifconfig

# 如果出现 command not found
sudo apt install net-tools

ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.20.32.234  netmask 255.255.128.0  broadcast 10.20.127.255
        inet6 2001:da8:201d:1101:d76c:f9ab:64e3:8cec  prefixlen 128  scopeid 0x0<global>
        inet6 fe80::a532:2905:ea6f:f886  prefixlen 64  scopeid 0xfd<compat,link,site,host>
        ether 6c:4b:90:06:8b:2d  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 1500
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0xfe<compat,link,site,host>
        loop  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

也可以:

ip a

查看 hostname, username

hostname
#DESKTOP-19JBVQS

whoami
#shakesbeer

设置防火墙

不知道为什么 Windows Defender 下面的选项是灰色的点不开....
只好从控制面板进

See --> 用 ssh 从外部连接到寝室个人电脑的 Ubuntu 系统或 win10 下的 WSL--Linux 子系统

或者在 cmd 中

netsh advfirewall firewall add rule name=WSL2 dir=in action=allow protocol=TCP localport=2222

查看公网 IP

http://www.net.cn/static/customercare/yourip.asp
好像并不需要

端口映射

管理员身份打开 CMD

netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=2222 connectaddress=10.20.32.234 connectport=2222

# listenport=[win10端口] listenaddress=0.0.0.0 connectport=[虚拟机的端口] connectaddress=[虚拟机的ip]

listenport = 这一步修改的 PORT
listenaddress = 0.0.0.0
connectport = Win10 默认的2222
connectaddress= WSL 中 ifconfig 查看到的

两个 port 应该是一样的

netsh interface portproxy show all

SSH 登录

本地登录

IP 为 前面 ifconfig 查到的本地 IP

ssh shakesbeer@127.0.0.1

Finalshell 设置长这样


远程登录

IP 为公网 win10 电脑 IP,写这篇帖子时很神奇地 WSL 和电脑 IP 是一致的,后来也许 win10 晚上自动偷偷更新重启,导致 WSL IP 变了,纠结了一周都无法再远程登录,看了这个视频后终于悟了,需要对 WSL 的 IP 进行映射,在其他机器上则需要 ssh 到 win 10 电脑的 IP。

在另一台机器上:

ssh shakesbeer@10.20.32.234 # win10 ip

Note

看别人的帖子说每次 WSL 打开后,IP 会变,所以需要一个固定的 WSL IP,等有空再弄,
wsl---ssh远程连接及ip映射配置详解 - 知乎

Ref.

上一篇下一篇

猜你喜欢

热点阅读