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を使う
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以外のポートに変更します。インストールするWindowsオープンSSHサーバーWindowsホストでは、これによりホスト上のすべてのWSLインスタンスに簡単にプロキシを適用できます。
次に、使用したコマンドと同じコマンドを使用して手動でサービスを開始しますsystemd
(上記の.service
ファイルを参照)。
/usr/sbin/sshd
chroot
これはFedora 33環境で動作します。
考えてみることもできます。監督者PID 1 init または他の PID 1 init の代わりにsystemd
サービスを管理します。私はこれをDockerコンテナで使用し、単純なサービスを開始/停止/再起動するのに効果的です。独自の設定を適用する必要がありますが、簡単です。最後に、サービスが予期せず停止した場合は、管理効率と弾力性を高めることをお勧めします。
WSLを使用しているので注意すべきもう1つのことは、sshd
WSL2インスタンスがWindowsホストの背後にある仮想NICで常に疑似NAT方式であることを覚えておいてください。これはssh
、ネットワーク(またはWSL2のすべてのサービス)の他のコンピュータからアクセスするために追加の努力が必要であることを意味します。私の答えを見てください。ここそしてここそのテーマに。