저는 Raspberry Pi 4에서 Debian 11을 사용하고 있습니다(이미지 발견)여기). sshd가 올바르게 구성되었으며(/etc/ssh/sshd_config만 편집했고 나머지는 시스템 설치에서 완전히 새로워졌습니다) 수동으로 시작할 때 올바르게 작동합니다. 그러나 부팅 시 systemd에 의해 자동으로 시작되지 않습니다.sudo systemctl 상태 sshd다음을 반환합니다.
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:sshd(8)
man:sshd_config(5)
Journalctl의 출력에는 ssh와 관련된 내용이 없습니다.
이 내용은 다음과 같습니다./lib/systemd/system/ssh.service:
[Unit]
Description=OpenBSD Secure Shell server
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target auditd.service
ConditionPathExists=!/etc/ssh/sshd_not_to_be_run
[Service]
EnvironmentFile=-/etc/default/ssh
ExecStartPre=/usr/sbin/sshd -t
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
ExecReload=/usr/sbin/sshd -t
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartPreventExitStatus=255
Type=notify
RuntimeDirectory=sshd
RuntimeDirectoryMode=0755
[Install]
WantedBy=multi-user.target
Alias=sshd.service
파일sshd_not_to_be_run존재하지 않는다.네트워크.대상활성. 문제 해결을 위해 auditd도 설치했는데 자동으로 성공적으로 시작되지만 재부팅 후에도 ssh.service가 여전히 작동하지 않습니다.
아이디어가 부족해요…
업데이트:
방금 모든 연결 요구에 대해 sshd 프로세스가 생성된다는 것을 발견했습니다. 이는 systemd 자체에 의해 관리되며 일부 외국 컴퓨터가 내 컴퓨터에 연결을 시도할 때 저널에 명확하게 인쇄됩니다.
oct. 30 13:09:30 RaspServeur systemd[1]: Started OpenBSD Secure Shell server per-connection daemon (117.68.2.55:45784).
░░ Subject: L'unité (unit) [email protected]:22-117.68.2.55:45784.service a terminé son démarrage
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░
░░ L'unité (unit) [email protected]:22-117.68.2.55:45784.service a terminé son démarrage, avec le résultat done.
oct. 30 13:09:30 RaspServeur audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj==unconfined msg='[email protected]:22-117.68.2.55:45784 comm="systemd" exe="/usr/lib/systemd/systemd" ho>
oct. 30 13:09:33 RaspServeur sshd[1861]: error: kex_exchange_identification: Connection closed by remote host
oct. 30 13:09:33 RaspServeur sshd[1861]: Connection closed by 117.68.2.55 port 45784
oct. 30 13:09:33 RaspServeur systemd[1]: [email protected]:22-117.68.2.55:45784.service: Succeeded.
░░ Subject: Unit succeeded
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░
░░ The unit [email protected]:22-117.68.2.55:45784.service has successfully entered the 'dead' state.
oct. 30 13:09:33 RaspServeur audit[1]: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 subj==unconfined msg='[email protected]:22-117.68.2.55:45784 comm="systemd" exe="/usr/lib/systemd/systemd" hos>
이는 기본 구성으로 sshd의 병렬 설치가 존재하는 것과 같습니다. 사용할 특정 포트 번호와 같은 설정이 포함된 내 구성은 sshd.service를 수동으로 시작하지 않으면 작동할 수 없습니다. 하지만 기본 포트를 사용하여 해당 섀도우 SSHD에 성공적으로 연결할 수 있으며systemctl 상태 sshd여전히 죽은 서비스를보고합니다…
상황이 소름끼치게 됩니다. 이제 손가락 두 개만 있으면 SD 카드를 지우고 사전 구성이 덜한 다른 배포판의 이미지를 설치할 수 있습니다.
답변1
질문자님의 문제와 같은 문제일까요?질문 #442181가졌다? 즉, 바인딩하려는 인터페이스/주소가 아직 준비되지 않았기 때문에 sshd가 부팅 시 시작되지 않습니다. 서버 소켓에 비표준 포트를 지정했다고 언급하셨는데, 특정 네트워크 인터페이스 및/또는 IP 주소도 지정하셨나요?
하지만 왜 systemd가 표준 구성을 사용하는 연결별 데몬을 시작하는지 모르겠습니다. 제안한 대로 기본 시스템 구성의 일부일 수 있습니다. ~ 안에질문 #507705그들은 연결별 서비스 생성을 제공하는 기능인 시스템 "소켓 활성화"에 대해 이야기합니다. 라는 시스템 단위 파일을 찾으십시오 ssh.socket
. man systemd.socket
기능 작동 방식에 대한 정보를 얻는 데 사용할 수 있습니다 .
systemctl status ssh.socket
편집: systemd의 SSH 서버 소켓이 활성화되어 있는지 확인하는 데 사용할 수 있어야 합니다 .
답변2
sshd를 수동으로 시작하면 systemd는 이를 시작된 것으로 등록하지 않으므로 systemctl에는 아무 것도 표시되지 않습니다. 각 sshd는 실제로 수신 프로세스이며 연결이 이루어진 후 이 연결을 처리하는 별도의 프로세스가 분기됩니다. 이를 반영하는 sshd 프로세스가 여러 개 있을 것 ps
입니다. sshd-listener를 종료해도 연결을 처리하는 다른 sshd 프로세스는 계속 살아 있습니다.
sshd를 시작하고 systemctl을 수행하면 sshd를 시작합니다. 이는 2개의 SSHD를 시작하는 것과 동일하며 모두 동일한 포트를 사용하려고 하면 차단될 수 있습니다.
도움이 되었기를 바랍니다