局域网ssh登录windows自带Linux系统(WSL)踩坑记录

局域网ssh登录windows自带Linux系统(WSL)踩坑记录

系统和工具安装

先按照网上的教程安装好Linux系统(一般都是安装Ubuntu),安装好ssh等工具:

复制代码
sudo apt-get install openssh-client openssh-server net-tools
sudo service ssh restart # 启动ssh

(这里有的教程写的是sshd而不是ssh,在ubuntu里会报错,提示sshd不存在之类的。)

查看IP

通过ifconfig命令查看Linux的IP,在mac或者其他机器上尝试ping一下inet IP。注意这里要保证两个机器是在同一个局域网,判断标准可以去网上找。如果是mac是a.b.c.m,linux是a.b.c.p,只有最后一位不一样,那大概率就是同一个局域网。 差两位那就不是。(个人愚见)

这里最开始windows连的是网线,mac连的是Wi-Fi,显示后面两位都不一样。把windows都连接上Wi-Fi就可以了,找windows(Linux)的Wi-Fi对应的inet IP。这里windows可以同时连接网线和Wi-Fi还是比较方便的。

判断确实处于同一个局域网之后,可以尝试互相ping一下IP地址。如果发现ping不通,把windows的防火墙关闭后再试试应该就可以。【这一步后来发现是不需要的,可以让防火墙加指定的白名单。所以这个按钮后来还是关闭了。这里可以先简单尝试一下ping是否成功。】

Linux用户和端口设置

然后在Linux上加一个用户(应该也可以直接用现有的),尝试在mac上ssh登录,一直提示:

Permission denied (publickey).

即使把mac的公钥加到Linux里也提示不行。

此时突然想起来,这里的Linux是windows的子系统,二者是用的同一个IP。应该是需要端口映射的。否则ssh就是默认登录windows。虚拟机应该都是如此,NAT模式,即共享主机的IP地址。

根据博文的设置,首先:

修改Linux中的/etc/ssh/sshd_config文件,将本来是注释掉的Port改成2222,同时去掉ListenAddress的注释。

还要在这个文件里修改允许密码登录,本来是no改为yes。

【更新:这里不打开密码是没问题,可以把本地的公钥传上去,如果本地Mac有多个密钥,可以在Mac的~/.ssh/config中设置一下别名,并且制定用哪个密钥文件,比如:

复制代码
Host test
User your-username
HostName your-ip
IdentityFile ~/.ssh/test_id_rsa
Port 2222

这样就不需要密码登录了】

然后重启ssh:

复制代码
sudo service ssh restart

文中还提到打开允许远程root登录,这里没有允许,感觉不是很有必要。

Windows ssh 登录

设置开机自启动:

在/etc/init.wsl文件中添加

复制代码
server ssh start

接下里可以在Windows的power shell中通过ssh命令尝试连接wsl子系统

复制代码
ssh username@localhost -p 2222

这里确实可以登录了。

Mac ssh 登录

想要在Mac上登录Linux需要设置端口转发和加防火墙白名单,方法如下:

在windows的power shell中输入:

复制代码
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=2222 connectaddress=[IP] connectport=[PORT]

以及

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

设置完成后,可以在mac上登录Linux了

复制代码
ssh username@ip -p 2222

折腾一下午终于弄好了。

相关推荐
competes11 小时前
慈善基金投资底层逻辑应用 顶层代码低代码配置平台开发结构方式数据存储模块
java·开发语言·数据库·windows·sql
RNEA ESIO12 小时前
PHP进阶-在Ubuntu上搭建LAMP环境教程
开发语言·ubuntu·php
零号全栈寒江独钓12 小时前
基于c/c++实现linux/windows跨平台获取ntp网络时间戳
linux·c语言·c++·windows
左手厨刀右手茼蒿12 小时前
Linux 内核中的进程管理:从创建到终止
linux·嵌入式·系统内核
geinvse_seg12 小时前
中小团队如何低成本搭建项目管理系统?基于 Ubuntu 的 Dootask 私有化部署实战
linux·运维·ubuntu
CSCN新手听安12 小时前
【linux】高级IO,以ET模式运行的epoll版本的TCP服务器实现reactor反应堆
linux·运维·服务器·c++·高级io·epoll·reactor反应堆
丶伯爵式12 小时前
Ubuntu 24.04 更换国内软件源指南 | 2026年3月26日
linux·运维·ubuntu·国内源·升级
左手厨刀右手茼蒿12 小时前
Linux 内核中的 DMA 管理:从缓冲区到传输
linux·嵌入式·系统内核
Java后端的Ai之路13 小时前
Linux端口进程查找与终止教程
linux·运维·服务器
北山有鸟14 小时前
【学习笔记】MIPI CSI-2 协议全解析:从底层封包到像素解析
linux·驱动开发·笔记·学习·相机