Estou usando o Debian 11 em um Raspberry Pi 4 (imagem encontradaaqui). sshd está configurado corretamente (eu apenas editei /etc/ssh/sshd_config, o resto é completamente novo da instalação do sistema) e funciona corretamente quando eu o inicio manualmente. No entanto, ele não inicia automaticamente pelo systemd na inicialização.sudo systemctl status sshdretorna isso:
● 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)
Não há nada relacionado ao ssh na saída do journalctl.
Este é o conteúdo/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
O arquivosshd_not_to_be_runnão existe.rede.targetestá ativo. Também instalei o auditd apenas para solucionar problemas e ele inicia automaticamente com êxito, mas o ssh.service ainda está morto após a reinicialização.
fico sem ideias…
ATUALIZAR:
Acabei de descobrir que um processo sshd surge em cada demanda de conexão. Ele é gerenciado pelo próprio systemd e é claramente impresso no diário quando alguns computadores estrangeiros tentam se conectar ao meu:
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>
É como se existisse uma instalação paralela do sshd com uma configuração padrão. Minha própria configuração com configurações como um número de porta específico para usar não funciona sem iniciar manualmente o sshd.service. Mas posso me conectar com sucesso a esse shadow sshd com porta padrão estatus do systemctl sshdainda relata um serviço morto…
A situação fica assustadora, estou agora a dois dedos de apagar o cartão SD e instalar uma imagem de outra distribuição com menos pré-configuração.
Responder1
Poderia ser este o mesmo problema que o autor da perguntapergunta #442181tive? Ou seja, o sshd falha ao iniciar na inicialização porque a interface/endereço ao qual deseja se vincular ainda não está pronta. Você mencionou que especificou uma porta não padrão para o soquete do servidor. Você também especificou uma interface de rede e/ou endereço IP específico?
Não sei por que o systemd inicia um daemon por conexão que usa a configuração padrão. Pode fazer parte da configuração padrão do sistema, como você sugere. Empergunta #507705eles falam sobre a "ativação de soquete" do systemd, que aparentemente é o recurso que fornece geração de serviço por conexão. Procure um arquivo de unidade do systemd chamado ssh.socket
. Você pode usar man systemd.socket
para obter informações sobre como o recurso funciona.
Editar: você deve poder usar systemctl status ssh.socket
para verificar se o soquete do servidor SSH do systemd está habilitado.
Responder2
Se você iniciar o sshd manualmente, o systemd não o registrará como iniciado, então faz sentido que o systemctl não mostre nada. Cada sshd é realmente um processo de escuta e depois que uma conexão é feita, um processo separado que lida com essa conexão é bifurcado. Se você ps
tiver vários processos sshd refletindo isso. Se você matar o ouvinte sshd, os outros processos sshd que estão lidando com conexões ainda estarão ativos.
Se você iniciar o sshd e executar um systemctl, inicie o sshd. Isso equivale a iniciar 2 sshds, que podem ser bloqueados se todos tentarem usar a mesma porta.
espero que ajude