Automatizar script na inicialização para conectar via ssh

1

Então eu estou no meu ponto final com isso, eu não sou um n00b completo com Linux, mas eu sei o suficiente para se locomover etc e mudar outros scripts de pessoas.

Aqui está o que estou tentando fazer. Em primeiro lugar, queria ativar o ssh sem senha no meu pi2 usando chaves públicas / privadas, mas isso parece falhar, não importa o que eu faça. Então, eu criei um script de espera para logar no meu pi2 enquanto especificando a senha dentro do script. Completamente inseguro eu sei, mas tudo o que estou usando ssh para neste caso é para encaminhar uma porta específica (que executa apache2 - Owncloud) através do túnel ssh para que eu possa acessá-lo da internet. A razão é que o meu Elementary OS (baseado no Ubuntu 16.04) está permanentemente conectado a uma VPN e sem essa porta eu não posso usar minha nuvem doméstica no trabalho ou em qualquer lugar longe de casa. Não há uma maneira fácil de fazer um túnel dividido com este serviço de VPN, especialmente se você tiver um IP dinâmico (btw, eu sou um engenheiro de rede por profissão, então este é o meu ponto strong).

Agora que isso está fora do caminho. O script de expectativa que estou executando é o seguinte.

#!/usr/bin/expect

>set timeout 20

set ip [lindex $argv 0]

set user [lindex $argv 1]

set password [lindex $argv 2]

spawn ssh -fN -R [remote port]:localhost:[local port] "$user\@$ip"

expect "[email protected]'s password:"

send "$password\r";

interact

Depois especifico o seguinte no terminal.

/usr/local/bin/ssh.exp [ip address] [username] [password]

Isso funciona perfeitamente e eu posso executar o script depois de fazer o login.

Eu gostaria de fazer isso funcionar automaticamente na inicialização, e até agora nada funcionou. Adicionando isto para crontab com @reboot falha, adicionando isto ao rc.local também falha. Eu estou querendo saber se é porque trys para executá-lo em primeiro plano ou porque é um script de esperar, não bash.

Completamente perdido aqui as pessoas, alguns conselhos seriam muito apreciados. Em uma nota lateral, se eu conseguir fazer o ssh sem senha funcionar ao mesmo tempo, isso seria ótimo.

    
por Sephzer 14.02.2017 / 10:04

1 resposta

0

Ok, então descobri isso depois de alguns ajustes.

As permissões na pasta .ssh e no arquivo authorized_keys no pi precisavam ser definidas como 655 em ambos e o usuário precisava ser alterado para pi não raiz. Isso conseguiu corrigir meu problema com o login sem senha.

A partir desse ponto, eu poderia apenas emitir um comando ssh padrão em rc.local, embora eu tenha descoberto que isso é executado como root. Em qual caso eu precisei especificar o seguinte.

ssh -fN -i /home/user/.ssh/id_rsa -R 9000:localhost:5253 [email protected]

Com certeza agora persiste na reinicialização e o OwnCloud agora pode ser acessado pela rede.

    
por Sephzer 15.02.2017 / 12:17