我无法在 windows linux 子系统上启动 sshd 服务。我使用sudo service ssh restart
,然后我得到
initctl: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused
sshd: ../sysdeps/posix/getaddrinfo.c:2583: getaddrinfo: Assertion `(__extension__ ({ const struct in6_addr *__a = (const struct in6_addr *) (sin6->sin6_addr.__in6_u.__u6_addr32); __a->__in6_u.__u6_addr32[0] == 0 && __a->__in6_u.__u6_addr32[1] == 0 && __a->__in6_u.__u6_addr32[2] == __bswap_32 (0xffff); }))' failed.
Aborted (core dumped)
我确定我的计算机上的 22 端口可用。
答案1
问题initctl
很简单,Linux 的 Windows 子系统不运行 Upstart,也不运行任何其他服务管理器。没有暴发户可以与之交谈。 Ubuntu 14 软件包维护脚本(和其他脚本)宁愿假设 Upstart 的存在,而无需进行正确检查。升级到 Ubuntu 16 时,这与在 Windows 子系统上运行 Ubuntu 14 工具一样,都是一个问题,其中服务管理器更改为 systemd,并且(通过 AskUbuntu Stack Exchange)许多工具仍在寻找 Upstart。对于Linux。
实际断言失败是一个已知问题,显然已于 2016 年 10 月修复。它与 IPv6 和 IPv4 的组合支持有关。 GNU C 库假设有关仅 IPv4 模式下的 IPv4 映射 IPv6 地址的一件事。 Windows NT 内核和 Windows Linux 子系统提供了另一个。
进一步阅读
- sshd 失败,因为 getaddrinfo。 WSL 错误跟踪器 #1113。微软。 GitHub。
- Conda 和 pip 因 ../sysdeps/posix/getaddrinfo.c:2583: getaddrinfo: 断言而崩溃。 WSL 错误跟踪器 #1331。微软。 GitHub。
- 如果套接字已绑定,IPV6_V6ONLY 套接字选项应该失败。 WSL 错误跟踪器#982。微软。 GitHub。
- https://askubuntu.com/questions/614970/
- https://askubuntu.com/questions/799506/
- https://askubuntu.com/questions/841667/