web-dev-qa-db-ja.com

Debian 10バスターのSshサーバーでのエラー

Debian 10 "Buster"でsshdに接続できません。接続中に次のようなエラーをキャッチします:

$ ssh -p 2222 [email protected]
ssh_exchange_identification: read: Connection reset by peer

これらのサービスを確認すると、次のエラーが発生しました:

● sshd.service - OpenBSD Secure Shell server
   Loaded: loaded (/etc/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2019-10-22 18:10:51 -03; 13min ago
  Process: 559 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
 Main PID: 606 (sshd)
    Tasks: 1 (limit: 2304)
   Memory: 2.3M
   CGroup: /system.slice/sshd.service
           └─606 /usr/sbin/sshd -D

Oct 22 18:10:50 ffurtpc systemd[1]: Starting OpenBSD Secure Shell server...
Oct 22 18:10:51 ffurtpc sshd[606]: Server listening on 0.0.0.0 port 22.
Oct 22 18:10:51 ffurtpc sshd[606]: error: Bind to port 22 on :: failed: Address already in use.
Oct 22 18:10:51 ffurtpc systemd[1]: Started OpenBSD Secure Shell server.
Oct 22 18:14:26 ffurtpc sshd[1514]: Connection closed by authenticating user friedrich 192.168.12.73 port 49880 [preauth]
Oct 22 18:23:45 ffurtpc sshd[1583]: fatal: Missing privilege separation directory: /run/sshd

OpenBSD Secure Shellサーバーは次のようにポート22をリッスンしながら、すでにxinetdパッケージでポート2222に設定して管理しようとしました:

● xinetd.service - LSB: Starts or stops the xinetd daemon.
   Loaded: loaded (/etc/init.d/xinetd; generated)
   Active: active (running) since Tue 2019-10-22 18:10:55 -03; 15min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 722 ExecStart=/etc/init.d/xinetd start (code=exited, status=0/SUCCESS)
    Tasks: 1 (limit: 2304)
   Memory: 4.5M
   CGroup: /system.slice/xinetd.service
           └─755 /usr/sbin/xinetd -pidfile /run/xinetd.pid -stayalive -inetd_compat -inetd_ipv6

Oct 22 18:10:56 ffurtpc xinetd[755]: Reading included configuration file: /etc/xinetd.d/echo-udp [file=/etc/xinetd.d/echo-udp] [line=26]
Oct 22 18:10:56 ffurtpc xinetd[755]: Reading included configuration file: /etc/xinetd.d/servers [file=/etc/xinetd.d/servers] [line=14]
Oct 22 18:10:56 ffurtpc xinetd[755]: Reading included configuration file: /etc/xinetd.d/services [file=/etc/xinetd.d/services] [line=13]
Oct 22 18:10:56 ffurtpc xinetd[755]: Reading included configuration file: /etc/xinetd.d/sshd [file=/etc/xinetd.d/sshd] [line=13]
Oct 22 18:10:56 ffurtpc xinetd[755]: Reading included configuration file: /etc/xinetd.d/time [file=/etc/xinetd.d/time] [line=16]
Oct 22 18:10:56 ffurtpc xinetd[755]: Reading included configuration file: /etc/xinetd.d/time-udp [file=/etc/xinetd.d/time-udp] [line=28]
Oct 22 18:10:56 ffurtpc xinetd[755]: 2.3.15.3 started with libwrap loadavg labeled-networking options compiled in.
Oct 22 18:10:56 ffurtpc xinetd[755]: Started working: 1 available service
Oct 22 18:14:22 ffurtpc sshd[1512]: Connection closed by authenticating user friedrich 192.168.12.73 port 35954 [preauth]
Oct 22 18:23:43 ffurtpc sshd[1582]: fatal: Missing privilege separation directory: /run/sshd

何か案は?

4
Emmett44

ここで同様のエラーが発生した場合、起動中にsshd/run/sshdディレクトリの作成に失敗しているようです。そのため、スクリプトを使用して次のように管理します。

次の内容のsshddirスクリプトを/etc/init.d/に作成します。

#!/bin/sh

### BEGIN INIT INFO
# Provides:          sshddir
# Required-Start:    $all
# Required-Stop:     $network
# Should-Start:      $network
# Default-Start:     3 4 5
# Default-Stop:      0 1 2 6
# Short-Description: Sshd /run/sshd Directory
# Description:       Intended to create /run/sshd directory for Sshd.
### END INIT INFO

mkdir -p /run/sshd

chmod -R 755 /run/sshd

$ Sudo chmod 755 /etc/init.d/sshddir

$ Sudo update-rc.d sshddir defaults

そうすれば、再起動してアクセスできます。

4
Vascon63

次の内容でsshddir.service/etc/system/systemd/ファイルを作成するだけです。

[Unit]
Description=Run Sshd Directory Creator
After=network.target auditd.service
ConditionPathExists=!/etc/ssh/sshd_not_to_be_run

[Service]
ExecStart=/usr/bin/sshddir
ExecReload=/usr/bin/sshddir
Restart=always
RestartPreventExitStatus=255
Type=forking

[Install]
WantedBy=multi-user.target
Alias=sshddir.service

次に:

2a-$ Sudo systemctl daemon-reload

2b-$ Sudo systemctl enable sshddir

ただし、必要な場合は、最初にSysVinit管理ファイルを削除します。

1a-$ update-rc.d sshddir disable

1b-$ update-rc.d sshddir remove

その後、マシンを再起動します。

どうやらsystemdは起動時に/run/sshdフォルダを削除し、エラーが発生するようです。

2
Borba88