De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.


Acesso atraves de OpenSsh

Colaboração: Renato Rudnicki

Data de Publicação: 30 de janeiro de 2008

Este artigo tem o objetivo de explicar o funcionamento de como acessar 2 ou mais máquinas remotas de maneira segura. Espero que ajude ;D.

Introdução ao OpenSsh

ssh - Secure Shell - é um programa que tem como objetivo acessar máquinas remotamente de maneira segura. O telnet e o OpenSsh a grosso modo tem o mesmo objetivo: estabelecer uma conexão entre dois computadores, porém o telnet é muito mais inseguro, pois a conexão do telnet não é criptografada, ao contrário do OpenSsh. Neste artigo, estou utilizando o pacote OpenSsh, pois é uma versão livre e atualizada. Este tutorial foi testado em um Conectiva 10, porém deve funcionar nas outras distros também. Aqui estou usando o gerenciador de pacotes rpm, que é especifico para Conectiva, Red Hat, Fedora, etc. É um recurso muito fãcil de se utilizar, não precisando quase nada de configuração ;-D

Funcionamento

No momento da instalação do pacote openssh em um servidor, o utilitário rpm gera 2 chaves - chave pública e chave privada do host (1024 bits :D) - onde essas chaves são armazenadas em um diretorio chamado /etc/ssh. Os arquivos que contém as chaves geradas pelo openssh no momento da instalação são:

/etc/ssh/ssh_host_key
/etc/ssh/ssh_host_key.pub
/etc/ssh_host_dsa_key.pyb

Estas chaves serão utilizadas mais tarde para provar para o servidor a sua autenticidade para os clientes, pois ip não é uma autenticação confiável.

Um outro par de chaves (pública e privada) é gerado sempre que o serviço ssh é inicializado ou a cada hora (intervalo de tempo configurável). Este outro par de chaves é chamado chaves de Servidor, tem 768 bits, e não é gravado em disco, ficando apenas na memória do servidor, ou seja, temos mais 1 par de chaves: Primária do servidor e pública do servidor. Os passos para se estabelecer uma conexão são:

  1. O clienste envia pedido de conexão para o servidor;
  2. O servidor responde enviando as 2 chaves públicas para o cliente.
  3. Se é a primeira vez que o cliente se conecta ao servidor, o cliente ainda não conhece a chave pública do servidor, assim, ele "avisará" ao operador que não será possível verificar a autenticidade do mesmo. Caso o operador opte por continuar com a conexão, a chave pública do host do servidor será armazenada no HD do cliente para futura verificação.

Pré-Requisitos de Instalação

Para que possa funcionar a conexão de OpenSsh, devem ser observados os seguintes detalhes:

  • O protocolo tcp/ip deve estar instalado e funcionando
  • Devem estar instalados os seguintes softwares:
    • openssh
    • openssh-clients
    • openssh-server

Existem outros pacotes opcionais que não foram incluidos na listagem, como os pacotes de documentação e desenvolvimento.

  • O Servidor e o Cliente devem estar configurados

Caso você esteja utilizando um linux que utilize pacotes rpm, você pode usar o seguinte comando para baixar os pacotes: rpm -hiv openssh*

Configuração do Servidor OpenSsh

Quase toda configuração do servidor openssh está baseada nos parâmetros indicados no arquivo /etc/ssh/sshd_config. Se você visualisar este arquivo, poderá notar que a maioria das configurações podem ser preenchidas com Yes/No.

Opções de configuração do servidor OpenSsh

Protocol Especifica as versões do protocolo que serão aceitas pelo servidor.
LoginGraceTime Define o tempo limite, em segundos, de inatividade para um login, onde terminado este tempo, a sessão é finalizada.
KeyRegenerationInterval Define o tempo em segundo do tempo de duração das chaves do servidor.
PermitRootLogin Especifica se o servidor irá aceitar logins do root.
PasswordAuthentication Especifica se será utilizado autenticação de senha.
PermitEmptyPasswords Especifica se o servidor ssh aceitará login de contas sem senha.

Obs: em regras gerais não é necessário efetuar alterações nesse arquivo, pois sua configuração padrão deverá funcionar.

Após feito isso, é necessário inicializar o serviço correspondente para que os clientes possam se conectar:

$ sudo service sshd start

Configuração do cliente ssh

A princípio, para o openssh funcionar, também não é necessário alterar nenhum arquivo de configuração do cliente. Mas caso você queira se aprofundar mais, você pode ler a manpage do ssh, sshd.

Utilizando o openssh na prática !!!

Há varias maneiras de utilizar o openssh. Algumas delas são:

ssh user@ip_maquina tenta efetuar uma conexão à máquina_remota (onde deverá estar rodadno o openssh server). o usuário deverá estar cadastrado na máquina remota.
ssh -l user maquina_remota idem ao comando anterior.
ssh maquina_remota tentar efetuar uma conexão a máquina remota como usuário da maquina local que disparou o comando. Deve ter sido mantido a configuração padrão)

O comando scp substitui o comando cp e permite que os arquvios sejam transmitidos entre máquinas de maneira segura.Ex:

$ scp arquivo.txt user1@maquina1:/home/teste

O comando acima copia o arquivo de nome arquivo.txt que está na máquina local para o diretório /home/teste da maquina remota de nome máquina1.

$ scp user@maquina1:/home/teste/arquivo.txt

Copia o arquivo de nome arquivo.txt do diretório /home/teste que está na máquina e nome máquina 1 para o diretório corrente na máquina local.

Obs1: Em ambos os casos poderia ser utilizado o endereço ip ao invés do nome da máquina remota.

Obs2: Em ambos os casos, será solicitada a senha do usuário user1 na máquina remota.

Para que possa acessar a máquina remota sem solicitação de senha, será necessário configurar tanto o servidor, quanto o cliente.

Configuração do servidor

  1. Gerar uma chave RSA ou DSA sem o uso de senha (ver o arquivo /etc/ssh/sshd_config) (a escolha por RSA ou DSA depende da versão do seu ssh)

  2. Copiar a chave pública para o servidor (maquina.remota:~/.ssh/authorized_keys - RSA (ou DSA))

  3. Certifique-se que seu diretorio pessoal e acima dele possuem permissões seguras, onde apenas o dono dos mesmo tem permissão de escrita.

Configuração do cliente

Assim que tiver a chave privada correta com você, quando executar um ssh na máquina remota, sua senha não será solicitada. Neste exemplo, foi usado chaves RSA versão 1, e os comandos abaixo se referem a ela.

$ ssh-keygen -t rsa1 -f ~/.ssh/id_rsa1

(tecle Enter para deixar a conexão sem senha). Este comando irá criar 2 arquivos: ~/.ssh/id_rsa1 (com chave privada) e ~/.ssh/id_rsa1.pub (com chave publica)

Enviar ao servidor a chave pública, que está no arquivo id_rsa1.pub

Obs: Este exemplo funciona de Linux para Linux. Caso você queira utilizar Linux para Windows, você pode utilizar o programa Putty, ou pscp, psftp, teraterm.

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Renato Rudnicki