Conexões remotas

#unix

O ssh (Secure Shell) é capaz de abrir terminais - ou mesmo interfaces gráficas - entre máquinas através de uma conexão criptografada, dificultando, desta forma, a captura de dados através de sniffers.

O programa servidor é o sshd (Secure Shell Daemon) que trabalha na porta 22. Vale ressaltar que há dois protocolos SSH1 e SSH2, muitas aplicações usam somente um e outras os dois.

Atualmente existem várias implementações para o shell de segurança, exemplo: ssh, openssh, sftp (Secure FTP) e outras. Em uma grande quantidade de sistemas operacionais, de interface gráfica ou em texto.

O Lado do Servidor: O Daemon sshd

Quem receberá a conexão, e permitirá ou não (através do arquivo de configuração: /etc/sshd_config ou de verificação de senha), deve estar executando o daemon sshd. Neste caso ele se chamará servidor, mesmo que esteja sendo cliente em outra aplicação.

Para executar o daemon basta, no terminal, chamar sshd que ele começa a rodar e de logo vai para segundo plano.

O Lado do Cliente: ssh e scp

Este é o comando que permite conexões, tanto de terminais como gráficas, e execução de comando. Veja estes exemplos:

ssh

Logando:

$ ssh -l usuario servidor

ou

$ ssh usuario@servidor

Neste exemplo substitua o nome usuario pelo login na máquina remota, já o nome do servidor é o mesmo definido pelo arquivo /etc/hosts ou pelo DNS e pode até ser indicado o endereço IP.

Caso o seu nome de usuário sejam o mesmo na máquina local e no servidor utilize a linha abaixo, lembrando a já observação para o nome do servidor, que valerá para todas os outros exemplos do ssh e do scp.

$ ssh servidor

Executando comando sem permanecer logado:

$ ssh servidor comando

Backup Remoto:

$ tar cf - home | ssh username@server dd of=/Backup/home.tgz

scp

O scp (Secure Copy) também se faz da necessidade de haver no servidor a execução do daemon sshd.

Este comando é semelhante ao cp, a única diferença é que ele usa conexões semelhantes a ssh para copiar os arquivos e, por isso, deve ser fornecido no endereço do arquivo de origem e/ou no endereço do arquivo de destino o nome do servidor, veja estes exemplos:

$ scp servidor:/home/usuario/arquivo_exemplo /home/usuario/

Esta outra forma informa qual usuário será usado para logar:

$ scp username@servidor:/home/usuario/arquivo_exemplo /home/usuario/

Observe o trecho servidor:/diretorio/arquivo ele indica a localização do servidor e do arquivo na máquina remota, pode ser colocado como segunda opção de linha de comando que, no caso, estaria copiando para o servidor.

Também é possível copiar diretórios para isso acrescente a opção -r.

ssh com login automático

Quando é necessário trabalhar numa rede que precisa de muitas conexões ssh feitas num curto intervalo de tempo torna-se prolixo a repetição da mesma senha de 13 caracteres ou mais.

Para não haver necessidade de repetição da senha armazena-se no servidor uma chave de autenticação.

Para automatizar procure no arquivo de configuração do servidor a linha que contenha PubkeyAuthentication no e deixe-a não comentada (sem o # no início da linha) e marcada como yes, após isso reinicie o servidor (não o servidor inteiro apenas o sshd).

No cliente utilize o comando abaixo com o login de usuário (de preferência não root) para criar a chave que fará a autenticação:

$ ssh-keygen -t rsa

Agora coloque o arquivo ~/.ssh/id_rsa.pub para seu home no servidor:

$ ssh-copy-id -i ~/.ssh/id_rsa.pub usuario@servidor

Nesta configuração apenas foi feita uma automatização do processo de login. Somente vale ressaltar para que ninguém tenha acesso ao diretório ~/.ssh.