sshd_config에서 ListenAddress를 사용하면 부팅 시 ssh.service가 시작되지 않지만 부팅 후 수동으로 시작하면 시작됩니다.

sshd_config에서 ListenAddress를 사용하면 부팅 시 ssh.service가 시작되지 않지만 부팅 후 수동으로 시작하면 시작됩니다.

/etc/ssh/sshd_configssh.service부팅 시 시작되지 않는 .txt 파일에 ListenAddress가 있지만 service ssh start부팅 후에 실행하면 시작됩니다.

이것은 다음의 오류입니다 /var/log/syslog.

$ sudo cat /var/log/syslog | grep -i ssh
Feb  9 10:03:50 nook systemd[1]: ssh.service: Main process exited, code=exited, status=255/n/a
Feb  9 10:03:50 nook systemd[1]: ssh.service: Unit entered failed state.
Feb  9 10:03:50 nook systemd[1]: ssh.service: Failed with result 'exit-code'.

온라인에서 찾아봤지만 무엇이 잘못되었는지 알 수 없는 것 같습니다. 부팅 후 수동으로 시작하면 작동하지만 부팅 시 시작되지 않습니다. :/

이 내 꺼야 /etc/ssh/sshd_config:

UsePAM yes
PrintMotd no
AcceptEnv LANG LC_*
HostKey /etc/ssh/ssh_host_ed25519_key
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
KexAlgorithms [email protected],ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256
Ciphers [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr
MACs [email protected],[email protected],[email protected],hmac-sha2-512,hmac-sha2-256,[email protected]
LogLevel VERBOSE
Subsystem sftp  /usr/lib/ssh/sftp-server -f AUTHPRIV -l INFO
UsePrivilegeSeparation sandbox
Protocol 2
X11Forwarding no
AllowTcpForwarding no
AllowStreamLocalForwarding no
GatewayPorts no
PermitTunnel no
PermitEmptyPasswords no
IgnoreRhosts yes
UseDNS yes
Compression no
TCPKeepAlive no
AllowAgentForwarding no
PermitRootLogin no
AllowGroups sshusers
ClientAliveCountMax 0
ClientAliveInterval 300
LoginGraceTime 30
ListenAddress 192.168.1.100   # IP of server
MaxAuthTries 2
MaxSessions 2
MaxStartups 2
ChallengeResponseAuthentication yes

내 전체 시작 로그는 /var/log/syslog다음 위치에 있습니다.https://pastebin.com/SfjPQzXu.

답변1

나는 같은 문제를 가지고있다. 문제의 근본 원인은 기본 sshd 단위 파일이 단지네트워크.대상의존성으로. sshd 구성 파일에 IP 주소를 명시적으로 지정하는 경우 sshd가 시작되기 전에 인터페이스에서 IP 주소를 구성해야 하며 network.target은 이에 대해 신경 쓰지 않아야 합니다. 이 문제를 해결하려면 콘솔의 루트 아래에서 다음을 수행해야 합니다.

# systemctl edit sshd

편집기가 열리면 network-online.target에 대한 종속성을 정의합니다.

[Unit]
After=network-online.target

'systemctl edit ...' 명령으로 파일이 생성됩니다.

/etc/systemd/system/${SERVICE_NAME}.d/override.conf

입력을 받아 저장한 후 종속성 트리를 다시 로드합니다. 일반적으로 유닛 파일을 수동으로 편집한 후 "systemctl daemon-reload"를 실행하여 수행됩니다.

참고하세요: /lib/systemd/system 아래의 유닛 파일은 패키지 관리자가 관리하며 다음 업데이트 시 덮어쓰게 되므로 편집하지 마십시오.

그러나 network-online.target을 단위 종속성으로 갖는 것만으로는 충분하지 않습니다. systemd와 함께 제공되는 대부분의 Linux 기반 운영 체제에서 network-online.target은 network.target 바로 다음에 시작됩니다. network-online.target이 의존하는 다른 서비스는 기본적으로 비활성화되어 있기 때문입니다. 그것은 알려져있다systemd-networkd-wait-online.service. 따라서 systemd-networkd-wait-online.service가 활성화되어 있는지 확인하십시오.

# systemctl is-enabled systemd-networkd-wait-online
disabled
# systemctl enable systemd-networkd-wait-online


고쳐 쓰다: 이 권장 사항은 네트워크 관리를 위해 systemd-networkd를 사용하는 운영 체제에만 적용됩니다. systemd-networkd가 활성화되지 않은 시스템의 경우 "다시 시작 = 실패 시"옵션이 도움이 될 수 있습니다"다시 시작 초=5"부팅 시도 사이의 수면 제어

관련 정보