WSL을 기반으로 Fedora에서 서비스를 시작하는 방법은 무엇입니까?

WSL을 기반으로 Fedora에서 서비스를 시작하는 방법은 무엇입니까?

Linux 2 Windows 하위 시스템에 Fedora 33이 있습니다.

sshd를 실행하고 싶습니다. 이를 위해 나는 노력했다

$ sudo systemctl start sshd

하지만 오류 메시지가 나타났습니다.

System has not been booted with systemd as init system (PID 1). Can't operate

이 오류 메시지를 검색하다가 발견했습니다.

https://linuxhandbook.com/system-has-not-been-booted-with-systemd/

이 경우 서비스 명령을 사용하는 것이 좋습니다. 시도해봤는데 이렇게 나오네요

Redirecting to /bin/systemctl start sshd.service

그래서 같은 오류가 발생했습니다.

WSL2 기반 Fedora 33에서 무엇을 할 수 있나요?

업데이트: 아래 설명된 대로 클라우드 이미지와 wsl 명령을 사용하여 WSL에 Fedora를 설치했습니다.

https://fedoramagazine.org/wsl-fedora-33/

답변1

저는 fedora 35를 사용하고 있지만 다른 Fedora 버전에서도 작동할 수 있습니다.
NotTheDr01ds가 말했듯이, fedora는 이를 지원하지 않습니다 service start sshd. 따라서 명령을 통해 sshd를 수동으로 실행할 수 있습니다 nohup /usr/sbin/sshd -D > sshd.log 2>&1 &. 아니면 wsl에 대한 시스템 작업을 수행해야 합니다.
genie는 fedora를 지원하므로 이를 사용하여 시스템 작업을 시도해 볼 수 있습니다.
프로젝트 URL은 다음과 같습니다.https://github.com/arkane-systems/genie

  1. 이 페이지에서 rpm 패키지를 다운로드할 수 있습니다.https://github.com/arkane-systems/genie/releases

  2. 다음 명령을 사용하여 genie-*.x86_64.rpm을 설치합니다.dnf install

  3. 명령을 통해 지니 사용genie -s

  4. systemctl을 사용하여 sshd 시작systemctl start sshd

Transport endpoint is not connected4단계에서 오류가 발생할 수 있습니다. 이는 wsl ldconfig의 알려진 문제로 인해 발생합니다.

문제를 해결하려면 아래 지침을 따르십시오.
https://github.com/microsoft/WSL/issues/5548#issuecomment-990521993
https://github.com/microsoft/WSL/issues/5548#issuecomment-912495487

답변2

어떻게 설치했는지는 언급하지 않았지만 지침과 비슷하다고 가정합니다.여기. 저는 Fedora를 사용해본 적이 없어서 빠른 chroot 인스턴스를 로드하는 데 Fedora를 사용하기로 결정했습니다.Fedora-컨테이너-베이스위의 지침을 다음과 함께 사용하세요.일부 chroot 관련 정보.

제 생각에는 Fedora는 "올인"되어 있으며 systemd아마도 제가 본 대부분의 다른 배포판보다 더 그렇습니다. 예를 들어 Ubuntu에서는 여전히 명령을 사용할 수 있지만 service보시다시피 Fedora는 systemd어쨌든 명령을 리디렉션합니다. Fedora에서는 초기화 스크립트도 찾을 수 없습니다 . 모두 서비스 파일 ssh입니다 .systemd

이 블로그 게시물이를 뒷받침하기 위해 페도라(Fedora)를 예로 든 것 같습니다. 대부분의 사람들에게 좋은 조언을 많이 제공합니다.다른제공하다:

  • 실행하려는 서비스에 대한 Dockerfile을 보고 서비스를 시작하고 중지하는 방법을 확인하세요.
  • 어쨌든 Docker 또는 Podman 컨테이너를 사용하세요.

sshd제안 사항은 좋지만 제 생각에는 그다지 유용하지는 않습니다.

그래서 내 제안을 추가하겠습니다. systemd서비스를 구성하고 시작(및 중지/다시 시작)하는 데 수행하는 단계를 이해하려면 설명서를 살펴보세요.

sshdFedora 의 경우 systemd서비스( usr/lib/systemd/system/sshd.service)에는 호스트 키가 생성되었는지 여부를 감지하고 호스트 키가 없는 경우(예: 설치 후 즉시 생성됨) 이를 감지하는 종속성이 있습니다. systemd(내 생각에는 – 나는 독서 서비스의 전문가 라고 주장할 수 없습니다 .)

따라서 우선 이 단계를 수동으로 수행해야 합니다(아직 수행하지 않은 경우).

/usr/libexec/openssh/sshd-keygen ecdsa
/usr/libexec/openssh/sshd-keygen rsa
/usr/libexec/openssh/sshd-keygen ed25519

개인적인 제안/추가 팁 - sshd 포트를 22가 아닌 다른 포트로 변경하세요. 설치하다윈도우 오픈SSH 서버Windows 호스트에서는 이를 통해 호스트의 모든 WSL 인스턴스에 쉽게 프록시를 적용할 수 있습니다.

그런 다음 사용한 것과 동일한 명령을 사용하여 수동으로 서비스를 시작하십시오 systemd(위 .service파일 참조).

/usr/sbin/sshd

chroot이것은 Fedora 33 환경에서 작동합니다.

고려해 볼 수도 있습니다.감독자PID 1 init 또는 다른 PID 1 init 대신 systemd서비스를 관리합니다. 나는 이것을 Docker 컨테이너에서 사용했으며 간단한 서비스를 시작/중지/다시 시작하는 데 효과적입니다. 자신만의 구성을 적용해야 하지만 쉽습니다. 마지막으로, 서비스가 예기치 않게 중지되는 경우 관리 효율성과 탄력성을 높이는 것이 좋습니다.

WSL을 사용하고 있으므로 주의해야 할 또 하나의 사항은 sshdWSL2 인스턴스가 Windows 호스트 뒤의 가상 NIC에서 항상 의사 NAT 방식이라는 점을 기억하세요. 이는 ssh네트워크(또는 WSL2의 모든 서비스)의 다른 컴퓨터에서 액세스하려면 추가 노력이 필요하다는 것을 의미합니다. 내 답변을 참조하세요.여기그리고여기그 주제에.

답변3

여기를 살펴보세요:

https://gist.github.com/djfdyuruiry/6720faa3f9fc59bfdf6284ee1f41f950

안녕하세요 kh

관련 정보