autossh não está funcionando em rc.local

0

Eu configurei um túnel ssh reverso através das máquinas A (local, atrás de vários roteadores) B (intermediários) e C (remoto, aquele do qual estou tentando acessar A)

Depois de colocar todas as chaves relevantes em todas as máquinas, se eu fizer

autossh -M 10984 -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no -i /home/user/.ssh/id_rsa.pub 9999:localhost:22 user@machine-B

na máquina A, posso conectar da máquina C à máquina B (intermediários) até A através da porta 9999.

Agora adicionei

autossh -M 10984 -N -f -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no -i /home/user/.ssh/id_rsa.pub 9999:localhost:22 user@machine-B &

ao meu arquivo /etc/rc.local , para que o comando seja executado na inicialização, reinicializado e agora o tunelamento não funcionará. Eu recebo um erro

autossh[1966]: starting ssh (count 14)
autossh[1966]: ssh child pid is 4916
autossh[1966]: ssh exited with error status 255; restarting ssh 

no syslog.

Meu /etc/rc.local tem:

autossh -M 10984 -N -f -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i /home/user/.ssh/id_rsa.pub -R 9999:localhost:22 user@machine-B &
ethtool -s eth0 autoneg on
exit 0

Alguma ideia do que eu posso estar fazendo errado?

UPDATE: notei que enquanto

autossh -M 10984 -N -f -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i /home/user/.ssh/id_rsa.pub -R 9999:localhost:22 user@machine-B

funciona na linha de comando, sudo-it:

sudo autossh -M 10984 -N -f -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i /home/user/.ssh/id_rsa.pub -R 9999:localhost:22 user@machine-B

faz com que a linha de comando me indique a senha de chave pública, mesmo que não tenha senha secreta. Eu li em outra pergunta do Stack (que não consigo encontrar) que o sinalizador -f impede que ssh solicite mais informações. Como thigs em rc.local são executados como root (até onde eu sei), acho que é por isso que autossh continua criando ssh process que saem sem sucesso. De fato, remover o -f faz com que o ubuntu continue criando janelas solicitando a frase secreta. Eu não entrei passprase ao criar a chave.

    
por alonso s 19.12.2017 / 05:45

1 resposta

1

Suponho que você esteja seguindo as instruções deste site: link

Como você observou corretamente, tentando executar

sudo autossh -M 10984 -N -f -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i /home/user/.ssh/id_rsa.pub -R 9999:localhost:22 user@machine-B

faz com que os prompts adicionais falhem automaticamente na inicialização.

Uma solução simples é copiar sua chave SSH de 'usuário' para raiz.

cp /home/user/.ssh/id_rsa.pub /root/.ssh/id_rsa.pub
cp /home/user/.ssh/id_rsa /root/.ssh/id_rsa -R

Isso funciona bem para mim. A cópia foi realizada a partir da conta 'root', então a propriedade foi automaticamente definida como 'root'. Em seguida, execute o comando autossh a partir do terminal (não inicialize) para que o host se torne conhecido como root. Modifique seu comando de inicialização para incluir o novo caminho para digitar a pasta raiz e você está definido.

    
por 09.01.2018 / 10:56