1. http://olinux.uol.com.br/artigos/372/print_preview.html
Introdução ao SSH
Por: André Casteliano ( 23/08/2001 )
Introdução
Olá pessoal, neste artigo irei tratar sobre o SSH (Secure Shell), uma fantástica ferramenta de administração
remota, demonstrando através de exemplos práticos como ele pode substituir não só outras ferramentas de
administração remota como telnet, rlogin , rsh, etc como também serviços como, por exemplo, o FTP. Tudo
isto com a certeza de quem está conectando na outra ponta e criptografia dos dados.
O que é SSH?
Esta ferramenta foi originalmente desenvolvida pela empresa finlandesa de mesmo nome ( http://www.ssh.fi
), e surgiu como uma maneira de suprir as deficiências não só do telnet mas como também do rlogin
(Remote Login) e do rsh (Remote Shell). Com o tempo acabou transformando-se na ferramenta padrão para
a administração de sistemas no mundo UNIX, substituindo totalmente o telnet, tanto que o nome ``SSH'' é
usado hoje não só para designar o programa e a empresa que o criou como também suas variantes e clones.
A grande vantagem do SSH está em encriptar os dados que são transmitidos durante a sessão e
provavelmente ninguém gosta da idéia de ter suas informações transitando pela rede totalmente abertas,
principalmente senhas. Além disso, é possível com o SSH agregar outros serviços como, por exemplo, o SCP
(Secure Copy) que substitui com tranquilidade e até com mais praticidade o bom e velho FTP.
Cliente SSH
Existem diversos clientes disponíveis, desde o original da SSH, que é um produto comercial com versões para
várias plataformas e sistemas operacionais, até versões gratuitas. Neste artigo, estarei demonstrando a
utilização do OpenSSH (que é originário do projeto OpenBSD ), que é uma versão adaptada do SSH de livre
distribuição desenvolvido por Tatu Ylonen mas com a inclusão de novos recursos e outros algoritmos de
encriptação que não o RSA e DES, como o Blowfish.
Caso você possua um outro cliente SSH, saiba que os comandos e a utilização são praticamente idênticos,
logo se você já possui uma outra versão não fique preocupado. Em virtude da política de exportação de
software de criptografia nos EUA, as versões internacionais, distribuições originárias de lá, não podem conter o
SSH, ficando com o usuário a tarefa de instalá-lo. No caso das distribuições baseadas em RPM utilize o serviço
RPM Find , para as baseadas na Debian acrescente a linha deb http://non-us.debian.org/debian-
non-US stable/non-US main contrib non-free em /etc/apt/source.list e para quem usa Slackware
pegue o pacote em http://www.linux-mafia.org . Para distribuições empacotadas fora dos EUA não existe
este problema.
Para quem vai compilá-lo, vale a pena lembrar que o OpenSSH necessita do OpenSSL (a página é:
http://www.openssl.org ). E que não se esqueça de pegar o código fonte já com os patches para Linux
(existem diferenças na parte de rede dos BSD e do Linux). E caso você queira utilizar um cliente SSH a partir
de uma estação Windows(TM), para administrar suas estações, saiba que existem clientes SSH para Windows,
como o PuTTY, o TeraTERM ou o SecureTTY, confira nas páginas de download por outros programas e
maiores informações.
Preparando o servidor
O pacote do SSH traz tanto o cliente como o servidor, o SSHD (ou SSH Dæmon). No caso de uma instalação a
partir de pacotes RPM ou DEB um script estilo System V (ou seja, funciona com os parâmetros start, stop,
restart, etc...) será criado no respectivo diretório /etc/(...)init.d. No caso do Slackware, que trabalha com
inicialização estilo BSD, o script /etc/rc.inet2 irá procurar pelo dæmon nos diretórios /sbin, /usr/sbin ou
/usr/local/sbin.
1 de 3 06-12-2009 12:47
2. http://olinux.uol.com.br/artigos/372/print_preview.html
Caso sua a instalação, por algum motivo, não esteja carregando automaticamente o SSHD durante a
inicialização verifique se não há algum problema com as permissões dos arquivos, e se persistindo o problema
inclua-o no manualmente no rc.local ou no final do rcS (no caso da Debian).
Utilizando o SSH
Após instalar o SSH, vamos utilizá-lo. Para quem está usando o SSH pela primeira vez é interessante criar o
par de chaves públicas e privadas para a sua estação. Isto é feito pelo comando ssh-keygen , basta
executá-lo. Será criado o par de chaves RSA que serão gravadas, por padrão, em seu diretório HOME. Este
procedimemto não é obrigatório mas pode facilitar bastante a sua vida. Para testar se tanto o cliente quanto o
servidor estão funcionando corretamente tente conectar-se em sua própria estação usando ssh localhost .
Usar o SSH é bastante simples, bastando incluir o nome (ou endereço IP) da máquina que se deseja usar.
Quando da primeira conexão em uma determinada estação, ele perguntará se deseja adicioná-la à sua lista
de hosts conhecidos (.ssh/know_hosts). E geralmente o SSH irá tentar se conectar na estação remota usando
a mesma conta que você está usando no servidor local, para contornar esse problema, use o parâmetro -l ou
então usuário@host para especificar quem você deseja usar na conexão remota.
Secure Copy
Pelo que foi mostrado até agora é bastante fácil substituir o telnet pelo SSH na tarefa de administração de
suas estações. Porém, o SSH permite que você utilize outros serviços usando a conexão segura. O exemplo
mais conhecido é o scp (Secure Copy) que permite a transferência de arquivos entre estações. Supondo que
você queira enviar um arquivo local para o seu servidor:
scp [arquivo_local] [usuario@servidor remoto]:[nome do arquivo no servidor remoto]
Ou supondo que você queira na sua máquina um arquivo que está no servidor:
scp usuario@servidor_remoto:arquivo usuario@sua_maquina:arquivo
Para maiores detalhes sobre a utilização do SCP consulte sua respectiva página de manual (man scp).
X11 Forward
Outro serviço interessante que pode ser usado junto com o SSH, é o X11 Forwarding. Como todos sabem (ou
deveriam saber) o X/Window é bem mais do que uma interface gráfica, é um protocolo de comunicação
cliente/servidor que se utiliza do TCP/IP. Graças a isto, o cliente (a aplicação que você está usando) e o
servidor (quem está colocando as janelas na tela) podem tranquilamente estar em computadores diferentes.
Assim como no Telnet, o uso do X11 Forwarding dentro de uma sessão SSH garante a encriptação daquilo que
está indo de um lado ao outro da rede.
Para usar você precisa antes habilitar o acesso da estação remota em seu X/Window local usando xhost
+{nome ou IP da estação remota} . Aí, conectar-se e redirecionar a saída dos programas mudando a
variável do sistema DISPLAY para sua estação com export DISPLAY=(nome ou IP da estação local):(n)
, sendo "n" a sessão do X que você pretende usar (geralmente este valor é 0).
Aumentando a segurança do SSH
Não basta encriptação, muitas vezes é bom ser um pouco mais paranóico. No arquivo sshd_config você pode
configurar alguns parâmetros que podem te deixar mais garantidos quanto a quem e de onde você pode ser
2 de 3 06-12-2009 12:47
3. http://olinux.uol.com.br/artigos/372/print_preview.html
acessado. Dentre os parâmetros os que podem realmente restringir o acesso são:
PermitRootLogin Use : "Yes" ou "No" para habilitar o login como root
AllowHosts : A relação de estações que podem se conectar, use o endereço IP ou então o nome da
máquina.
DenyHosts : A relação das estações que não podem se conectar
AllowUsers : Aqueles que podem se logar na estação
DenyUsers : Aqueles que, por motivos que não vamos discutir agora, não podem se logar
Após estas alterações você vai precisar reinicializar o dæmon, isto pode ser feito usando o script que está no
init.d com ssh restart ou então com killall -HUP sshd .
Conclusão
Bom pessoal, espero que tenham gostado. Com o que foi apresentado aqui, já é possível acessar
remotamente uma outra estação, copiar arquivos e até usar programas de X/Window sem se preocupar com
o que gente curiosa possa estar vendo. Estarei à disposição para tirar eventuais dúvidas. Abraços!
Colaborou: Giovanni Nunes
Copyright (C) 1999-2000 Linux Solutions
3 de 3 06-12-2009 12:47