![WSL을 기반으로 Fedora에서 서비스를 시작하는 방법은 무엇입니까?](https://linux55.com/image/189703/WSL%EC%9D%84%20%EA%B8%B0%EB%B0%98%EC%9C%BC%EB%A1%9C%20Fedora%EC%97%90%EC%84%9C%20%EC%84%9C%EB%B9%84%EC%8A%A4%EB%A5%BC%20%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
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를 설치했습니다.
답변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
이 페이지에서 rpm 패키지를 다운로드할 수 있습니다.https://github.com/arkane-systems/genie/releases
다음 명령을 사용하여 genie-*.x86_64.rpm을 설치합니다.
dnf install
명령을 통해 지니 사용
genie -s
systemctl을 사용하여 sshd 시작
systemctl start sshd
Transport endpoint is not connected
4단계에서 오류가 발생할 수 있습니다. 이는 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
서비스를 구성하고 시작(및 중지/다시 시작)하는 데 수행하는 단계를 이해하려면 설명서를 살펴보세요.
sshd
Fedora 의 경우 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을 사용하고 있으므로 주의해야 할 또 하나의 사항은 sshd
WSL2 인스턴스가 Windows 호스트 뒤의 가상 NIC에서 항상 의사 NAT 방식이라는 점을 기억하세요. 이는 ssh
네트워크(또는 WSL2의 모든 서비스)의 다른 컴퓨터에서 액세스하려면 추가 노력이 필요하다는 것을 의미합니다. 내 답변을 참조하세요.여기그리고여기그 주제에.