Published on 08/01/18 by Tomás Abril
Comprei um raspberry pi 3, para ter acesso a ele configurei um servidor ssh e aqui vou descrever os passos feitos.
https://wiki.archlinux.org/index.php/Secure_Shell
Normalmente o servidor open ssh tem autenticação pela senha de usuário da máquina remota, mas isto é extremamente inseguro! Se o servidor estiver visível para a internet qualquer pessoa pode tentar se logar no seu computador. Vou configurar o ssh para permitir autenticação apenas por chaves ssh.
No raspi-config vá em interfacing options e ligue o SSH.
$ sudo raspi-config
A partir de agora seu raspberry já está acessível por SSH de computadores na mesma rede.
Instale o pacote openssh e inicie o serviço.
$ systemctl enable sshd.socket $ systemctl start sshd.socket
Se estiver usando uma porta diferente da 22 modificar o unit file.
$ systemctl edit sshd.socket
Instale o pacote openssh no seu computador principal, esse é o software cliente que vai se conectar com o raspberry.
Teste a conexão.
$ ssh raspiuser@serveraddress
O endereço é o endereço ip local do raspberry, é uma boa ideia deixar ele estático.
Agora você está logado no seu raspberry remotamente!
Daqui a pouco vamos desabilitar o login por senha e permitir apenas por chaves ssh. Se o seu raspberry estiver conectado a internet isto é essencial.
Normalmente cada computador tem uma chave ssh, leia mais sobre isso aqui https://wiki.archlinux.org/index.php/SSH_keys
Para criar nosso par de chaves publica e privada executamos o seguinte comando:
$ ssh-keygen -b 4096 -C “comentário para identificar. seu@email.com”
Isto cria uma chave do tipo rsa (que é o padrão) com 4096 bits e um comentário para facilitar a identificação. Ela fica salva na pasta /home/<username>/.ssh/
Para poder utilizar a sua chave é preciso saber a senha que você colocou nela, então escolha uma boa senha.
Se mais tarde decidir mudar a senha é possível modificá-la sem modificar a chave.
$ ssh-keygen -f ~/.ssh/id_rsa -p
Enviar a sua chave pública para o servidor.
$ ssh-copy-id -p 22 username@remote-server-ip
Agora toda vez que você for se conectar por ssh vai ser utilizado a sua chave e a senha necessária para se conectar é a senha da sua chave.
A senha pode ser salva no ssh-agent para que não precise digitá-la toda vez.
$ eval $(ssh-agent) $ ssh-add ~/.ssh/id_rsa
Para que a senha não seja requerida o ssh-agent precisa estar ativo apos todo boot do sistema. O xfce cuida disso automaticamente. Para gnome ver https://wiki.archlinux.org/index.php/GNOME/Keyring
Para facilitar a conexão edite o arquivo ~/.ssh/config com o conteúdo:
# global options User remoteUser AddKeysToAgent yes # host-specific options Host aSimpleName HostName 192.168.1.10 Port 1234
Com essa configuração salva os dois seguintes comandos tem a mesma função.
$ ssh -p 1234 remoteUser@192.168.1.10 $ ssh aSimpleName
Agora que já temos acesso ao sistema usando apenas a chave ssh podemos desabilitar o login por senha para ficarmos mais seguros.
No servidor vamos editar o arquivo /etc/ssh/sshd_config
Para uma configuração mais segura as seguintes linhas devem ser modificadas.
Port 1234 PermitRootLogin no PubkeyAuthentication yes PasswordAuthentication no
Mudar a porta de conexão também na configuração do cliente no arquivo ~/.ssh/config
Reinicie o servidor ssh e pronto, sua conexão sempre utilizará somente ssh keys.
Para uma explicação completa de todas as configurações ver
https://www.openssh.com/manual.html
Para visualizar as chaves aceitas pelo servidor leia o seguinte arquivo.
$ cat ~/.ssh/authorized_keys
https://wiki.archlinux.org/index.php/SSHFS
O sshfs permite montar um sistema de arquivos remoto no seu computador. Para usá-lo instale o pacote sshfs na maquina cliente.
Montando:
$ sshfs user@hostAddr:/remote/path /local/path -C -p 1234
-p indica a porta na qual o servidor está escutando.
Para desmontar (umount):
$ fusermount3 -u /local/path