vscode连接windows环境wsl下centos子系统报错 ssh: connect to host localhost port 22: Connection refused

本文介绍了一个突发的VSCode通过Remote-SSH连接WSL中的CentOS子系统失败的问题,并详细记录了从发现问题到解决问题的过程。最终确定问题是由于SSH服务未正确配置导致。

问题描述

早上来上班,突然发现使用主机的vscode的remote-ssh无法连接上wsl装的子系统(centos7)了,检查子系统运行情况并没有问题,纯粹是vscode连不上它:
子系统运行没有问题

报错提示

查看vscode的报错,关键词基本上是

Failed to parse remote port from server output
port22 connection refused
过程试图写入的管道不存在

错误排查

进入子系统使用ssh localhost命令查看ssh连接情况,确实是Connection refused的状态

# ssh localhost
ssh: connect to host localhost port 22: Connection refused

但是使用ss -lnt命令查看端口情况,port22是正确打开的
在这里插入图片描述
如果此处没有反应,如下:
在这里插入图片描述
可以运行sshd -t命令进行查错
之前碰到过因为ssh-key未生成而产生的无法正常运行sshd的情况,就是使用这一命令查出来的
在这里插入图片描述
ssh-keygen -A即可
在这里插入图片描述

解决过程

因此考虑SSH服务未安装的情况,进行如下命令

 yum -y install openssh-server
 service sshd start

重新进行ssh localhost指令,发现已经可以进行ssh连接了
在这里插入图片描述
在vscode中进行再次连接,连接成功了

总结

至今不知道为什么会突然出现这种情况,有可能跟vscode的自动更新有关,否则之前也没有在子系统里安装openssh-server为什么一直可以成功连接呢?
成功连接之后就可以继续使用vscode继续摸鱼了~

### WSL SSH连接被拒绝解决方案 当遇到`ssh: connect to host leon port 22: Connection refused`错误时,这通常意味着目标机器上的SSH服务器未运行或配置不正确[^1]。 对于WSL环境中的问题,可以尝试以下方法来解决问题: #### 卸载并重装OpenSSH Server 如果当前的OpenSSH服务存在问题,则可以通过移除现有安装并重新安装来修复潜在的问题。具体命令如下所示: ```bash sudo apt-get purge openssh-server # 移除现有的openssh-server及其配置文件 sudo apt-get install openssh-server # 安装最新的openssh-server版本 ``` #### 配置SSHD设置 编辑位于`/etc/ssh/sshd_config`下的SSH守护进程配置文件,确保其包含必要的参数以允许远程访问。以下是几个重要的选项: - `ListenAddress`: 设置监听地址,默认情况下应为空白表示所有网络接口都可接收请求;如果是仅限于本机自测则设为`localhost`。 - `PasswordAuthentication`: 开启密码验证功能以便能够使用用户名和密码方式登录。 ```bash sudo vi /etc/ssh/sshd_config # Port 22 # 默认端口号保持不变即可 # ListenAddress 0.0.0.0 # 或者留空代表全部IP地址都可以接入 PasswordAuthentication yes # 启用基于密码的身份认证机制 ``` 完成上述更改之后保存退出,并重启SSH服务使新的设定生效: ```bash sudo service ssh restart # 重启SSH服务应用新配置 ``` #### 测试本地连接 为了确认基本的功能正常运作,在同一台计算机上执行下面这条指令来进行初步检测: ```bash ssh localhost # 尝试建立到自身的安全shell会话 ``` 假如一切顺利的话应该能成功进入交互式的终端界面而不会再次遭遇连接失败的情况。 #### 跨平台连接WindowsWSL) 考虑到题目提到的是从Windows操作系统向名为leon的目标发起SSH链接请求的情形,还需要额外注意防火墙规则以及可能存在的端口映射需求。假设已经按照前述步骤完成了对WSL内部SSH服务端的基础调试工作,那么接下来就是调整客户端这边的相关策略了。例如,在某些场景下需要指定特定端口进行转发操作才能实现跨系统的通信,像这样: ```bash ssh <username>@<target-ip> -p <port-number> ``` 其中`<port-number>`可能是不同于默认值(即22)的一个替代方案,比如之前提及的例子中使用的3456端口[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值