Estou executando o stream do Centos e sempre que inicio meu servidor tenho que executar esta linha de comando:
ssh -L 0.0.0.0:9944:localhost:9922 localhost -N
Depois de executar este comando, o sistema operacional me pedirá para fazer login como root (mesmo que eu já esteja logado como root) e tudo funcionará depois disso.
Meu problema: quero adicionar este código a um cronjob na reinicialização, algo como:
@reboot root ssh -L 0.0.0.0:9944:localhost:9922 localhost -N
No entanto, isso não funciona. Acho que está pedindo a senha mas não tem ninguém para digitá-la (claro). Então, como faço para corrigir isso?
Não faça isso com o cron. O melhor é adicionar um serviço systemd . Por exemplo, para um problema semelhante, uso o arquivo de unidade que se parece com o seguinte:
Salve como
/etc/systemd/system/ssh-forward-9944-to-9922.service
e executeObserve que adicionei a opção de saída em falha de encaminhamento, portanto, se algo reivindicar essa porta, o systemd reconhecerá adequadamente esta unidade como com falha. Observe também a opção de ligação global , para realmente aceitar conexões de outros hosts, porque apesar de sua tentativa de vinculá-la a
0.0.0.0
, isso não funcionará a menos que você a habilite com-g
.Finalmente, você deve configurar as chaves corretamente. O arquivo de unidade acima é construído para que o cliente ssh seja executado como root e se conecte ao localhost como root, o que significa que você precisa ter
PermitRootLogin yes
ou melhor,PermitRootLogin prohibit-password
(o padrão, a mesma coisa que a ortografia antigawithout-password
) em/etc/ssh/sshd_config
. A chave privada deve ser armazenada sem criptografia como/root/.ssh/forwarder
. A chave pública deve entrar em/root/.ssh/authorized_keys
.O melhor é usar uma chave dedicada, gerá-la com
(acerte
<Enter>
duas vezes sem senha). Em seguida, anexe o conteúdo da contraparte públicaauthorized_keys
comEdite
/root/.ssh/authorized_keys
para restringir fortemente esta chave (a última linha), semelhante ao seguinte:basta adicionar este
restrict,...
feitiço mágico antesssh-ed25519 ...
da última linha. Você pode aprimorá-lo ainda mais, por exemplo, adicionando-ofrom="127.0.0.1,::1",permitopen="127.0.0.1:9922",permitopen="[::1]:9922"
à lista de restrições (embora eu não tenha certeza sobre a grafia correta dos endereços IPv6 neste arquivo); leiaman authorized_keys
para obter detalhes sobre isso.