Home

Published on 08/01/18 by Tomás Abril


Configurando SSH de maneira segura

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.

Ligando o servidor

no raspberry pi 3

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.

Em um computador comum

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

Configurando cliente

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!

Criando uma ssh-key

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

Configurando o servidor

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

SSHFS

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