Eu configurei para que eu possa usar o SSH com segurança no meu PC doméstico a partir do meu laptop. Hoje, tentei executar uma atualização apenas para testar, mas não consegui fazer isso no laptop.
O que eu basicamente queria fazer era passar o comando para a máquina sem SSH, sem manter a conexão ativa. Tentei pesquisar online para ver se conseguia encontrar algo, mas nada parece funcionar.
Estes são os comandos que tentei:
$ ssh myip 'sysupg &'
bash: sysupg: command not found
echo "mypassword" | ssh myip 'sudo -S dnf upgrade -y &'
[sudo] password for myuser:
sudo: no password was provided
sudo: a password is required
echo "mypassword" | ssh myip 'sudo -S -k dnf upgrade -y &'
[sudo] password for myuser:
sudo: no password was provided
sudo: a password is required
Quando pede minha senha ( [sudo] password for myuser:
), não me deixa digitar nada, apenas continua, dando os dois últimos sudo
erros.
tldr:sudo
passa um comando que requer ssh
para outra máquina, "automaticamente" fecha a conexão assim que o comando é passado e, se possível, executa o comando em x minutos.
Maneira possível:
1>
e2>
sudo -b
opção de usossh
fornecer interatividade parasudo
;ssh -t
opção de usoOutra maneira possível, mas não recomendada:
sudo
ler a senha em stdin; usesudo -S
a opção em vez dessh -t
Você perdeu a
sudo -b
opção, porque o&
prompt de senha faz com que seja executado em segundo plano e não sua única tarefa desejada.Além disso, falta
1>
ou2>
redirecionamentos retém a conexão ssh.No entanto, desde que você use
PubkeyAuthentication
, uma maneira segura de fazer o truque é:PermitRootLogin prohibit-password
emsshd_conf
/root/.ssh/authorized_keys
ssh-agent
Mas, a melhor maneira é usar
screen
no lado do servidor:Mais tarde, reconecte a sessão: