ブート時にSSHを自動的に開始します


15

LinuxおよびUbnuntuがまったく新しい。ディープラーニング/ニューラルネットワークを実行するためのマシンのセットアップ。これまでのところ順調です。すべてがインストールされ実行されています。Macラップトップからsshでシステムを使用できるようにしたい。opensshをインストールして、動作するようにしました。

ただし、マシンを再起動しても、sshサーバーは再起動しません。で確認するsudo service ssh statusと、エラーが報告されます。その後、開始することができ、すべてが正常に機能します。

私が最初に考えたのは、リブート時に起動するように指示する必要があることです。デフォルトで起動する必要があり、chrontabなどを追加する必要がないというスレッドが見つかりました。だからそれだとは思わない。

それから、コマンドを使用することを提案するこのスレッドを見つけましたsudo update-rc.d ssh defaultsが、そのスレッドはかなり古く、その答えは当時でもおそらく正しくなかったようです?

それで、sshd_configファイルの行をコメントアウトすることを提案するこのスレッドを見つけました。基本的に、ListenAddressを使用すると、DCHPによってIPが割り当てられる前にIPを取得しようとするため、起動に失敗することがあります。理にかなっています。しかし、ポートフォワーディングをホームネットワークで機能させるには、このパラメーターが必要です。ListenAddress

ListenAddressのエントリの下にあるこのドキュメントでは、

The default is to listen on all local addresses.

だから多分私はそれがポートフォワーディングを機能させるためにそれを必要としませんか?

私もこのバグレポートの前のスレッドに従いましたが、これもかなり古いですが、netmanagerが新しいIPを取得するたびにネットワークマネージャーを使用してsshを再起動することをお勧めします。

echo /etc/init.d/ssh restart > /etc/NetworkManager/dispatcher.d/10ssh
chmod 755 /etc/NetworkManager/dispatcher.d/10ssh

これは、このnoobieがこの時点で評価できる以上のことです。それは安全ですか?それがこれを行う方法ですか?過去7年間に何か解決されたことがありますか?

どんなアドバイスも素晴らしいでしょう。ありがとう。


Gee、openssh-serverパッケージをインストールして、適切に構成しました。それ以来、私のsshサーバーは毎回自動的に適切に起動しました。余分な操作は一切必要ありません。
-user535733

1
ポート転送を使用していて、ListenAddressパラメーターを使用する必要はありませんでしたか?もしそうなら、「適切に構成された」内容を共有できますか?
ロスロック

これらすべてのために、最初の起動時にSSHのステータスに関する情報を提供していません。systemctl status ssh出力は何ですか?
ムル

あなたの問題はこれに似ています(明らかに未解決)SSHデーモンは正​​常に起動しません - の出力を含めるように質問を編集してくださいsystemctl status NetworkManager-wait-online.service
-steeldriver

1
ポートフォワーディングをどのように設定していますか?ListenAddressをまったく使用せず、ホームサーバーで問題なく動作します。私のルーターは、指定したポート(標準ポートが必要な場合は22ですが、国際ネットワーク上の他のサービスと競合しない限り、何でも使用できます)に着信するものを必要なコンピューターに転送します。たとえば、ポート12345で受信したものはすべて、CentOSサーバーのポート22に転送されます。12346に入ってくるものはすべて、私の頭のないRasPiのポート22に転送されます。12347に入ってくるものはすべて、RasPiのIRCバウンサーのポート6697に送られます。
-RobertRSeattle

回答:


43

単純に設定してみましたか

sudo systemctl enable ssh

これが、起動時にsshを実行するように設定する方法です。

****この投稿に出くわした他の人に役立つ場合に備えて、回答の上記の部分を残しています****

上から私のコメントを引用:

ポートフォワーディングをどのように設定していますか?ListenAddressをまったく使用せず、ホームサーバーで問題なく動作します。私のルーターは、指定したポート(標準ポートが必要な場合は22ですが、国際ネットワーク上の他のサービスと競合しない限り、何でも使用できます)に着信するものを必要なコンピューターに転送します。たとえば、ポート12345で受信したものはすべて、CentOSサーバーのポート22に転送されます。12346に入ってくるものはすべて、私の頭のないRasPiのポート22に転送されます。12347に入ってくるものはすべて、RasPiのIRCバウンサーのポート6697に送られます

ListenAddressはポート転送とは関係ありません。ListenAdressは、1つ以上のNICで複数のIPアドレスを使用して構成されたサーバーに使用できます。ここから引用(ページ全体が良い説明です):https : //www.cyberciti.biz/tips/howto-openssh-sshd-listen-multiple-ip-address.html

合計8つのパブリックIPアドレスと1つのプライベートIPアドレスがあるとします。sshdを1つの選択されたパブリックIP(ex 70.5.xx.xx)とプライベート> IP(10.1.5.1)のみにバインドします。

幸い、ListenAddressオプションを使用してこれを実現する簡単な方法があります。> sshdがリッスンするローカルアドレスを指定します。このディレクティブが構成ファイルからスキップされた場合、sshdは使用可能なすべてのIPアドレスをバインドまたはリストします。

複数のIPの1つがssh接続を受け入れることができるようにするためです。ListenAddressをパブリックIPまたはルーターの内部IPのいずれかに設定していると推測します。サーバーのローカルIPに設定した場合は正常に機能すると思います。いずれにせよ、ListenAddressの仕組みがわかったので、より複雑なサーバーを構成する必要がある場合は準備ができています。うまくいったことを聞いてうれしいです。


2
+1これは正解です。Ubuntu 16.04はsystemdの使用を開始しました。この回答のコマンドは、systemdを使用して再起動時にSSHを開始しています。OPがリンクした他のスレッドはupstartにのみ適用され、systemdには適用されなかったか、問題にまったく適用されませんでした。
サムGleske

1
systemctl list-unit-files –type = serviceを実行しましたが、ssh.serviceが有効になっています。だから私はそれが問題だとは思わない。しかし、systemctl / systemdのヒントをありがとう。それにより、見る場所が増えました。DCHPがIPアドレスを返すまで待つようにsystemd / systemctlに指示する方法はありますか?
ロスロック

有効にした後、新しいファイルが作成されなければならない、に確認してくださいls -l /etc/systemd/system/sshd.service
ティモ

2

提案された解決策がうまくいかなかったため、ブート時にSSHを開始するには追加のコマンドが必要であることが最終的にわかりました。

sudo update-rc.d ssh defaults
sudo systemctl enable ssh.socket

一部の人は、このコマンドに言及しました:

sudo systemctl enable ssh.service

このコマンドの代わりに実行する必要があります。

sudo systemctl enable ssh
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.