Difference between revisions of "Secure Shell (Português)"
Lokidarkeden (talk | contribs) (→Keep Alive) |
Lokidarkeden (talk | contribs) (→Save connection data in .ssh/config) |
||
Line 385: | Line 385: | ||
(ou algum outro número maior que 0) no arquivo {{Filename|/etc/ssh/sshd_config}} no servidor. | (ou algum outro número maior que 0) no arquivo {{Filename|/etc/ssh/sshd_config}} no servidor. | ||
− | == | + | == Salvar os dados da conexão em .ssh/config == |
− | + | Sempre que você quer conectar a um servidor, você normalmente precisa digitar ao menos o endereço e o seu usuário. Para evitar o trabalho de digitar os servidores que você regularmente conecta, você pode utilizar o arquivo {{Filename|$HOME/.ssh/config}} como mostrado no exemplo: | |
{{File|name=$HOME/.ssh/config|content= | {{File|name=$HOME/.ssh/config|content= | ||
Line 402: | Line 402: | ||
}} | }} | ||
− | + | Agora vocẽ pode simplesmente conectar ao servidor usando o nome que você especificou: | |
$ ssh myserver | $ ssh myserver | ||
− | + | Para ver uma lista completa de possíveis opções, cheque a pagina de manual do ssh_config no seu sistema ou a [http://www.openbsd.org/cgi-bin/man.cgi?query=ssh_config Documentação do ssh_config] no site official em inglês. |
Revision as of 20:37, 15 March 2011
Secure Shell ou SSH é um protocolo de internet que permite a troca de informações por meio de um canal seguro entre dois computadores. A encriptação proporciona sigilo e integridade da informação. SSH usa criptografia de chave-publica para autenticar no computador remoto e permitir que o computador remoto autentique o usuário, se necessário.
SSH é tipicamente utilizado para logar em um computador remoto e executar comandos, mas ele também pode ser usado para tunneling. Tranferencia de arquivos pode ser feita usando os protocolos SFTP ou SCP.
Um servidor de SSH, por padrão, roda na porta 22. Um cliente SSH geralmente é usado para estabelecer conexões com um servidor de sshd configurado para aceitar conexões remotas. Ambos estão presentes na maior parte dos sistemas operacionais modernos, incluindo GNU/Linux, MacOS X, Solaris e OpenVMS. Existem versões pagas, grátis e de código aberto.
Contents
OpenSSH
O OpenSSH (OpenBSD Secure Shell) é um conjunto de programas de computador que provê sessões de comunicação criptografada sobre uma rede de computadores utilizando o protocolo ssh. Ele foi criado como alternativa de código aberto à suite de aplicativos proprietários de Shell Seguro ( do inglês: Secure Shell ) oferecida pela SSH Communications Security. o OpenSSH é desenvolvido como parte do projeto OpenBSD, o qual é liderado por Theo de Raadt.
O OpenSSH é ocasionalmente confundido com o OpenSSL devido aos nomes parecidos; embora os projetos tenham propósitos diferentes e sejam desenvolvidos por times diferentes, os nomes similares surgiram de objetivos similares.
Instalando o OpenSSH
# pacman -S openssh
Configurando o SSH
Cliente
O arquivo de configuração do cliente SSH pode ser encontrado e editado em Template:Filename.
Um exemplo de configuração:
É recomendado alterar a linha do Protocolo para:
Protocol 2
Dessa forma, apenas o protocolo 2 será utilizado, visto que a protocolo 1 é considerado inseguro.
Daemon
O Arquivo de configuração do daemon SSH pode ser encontrado e editado em Template:Filename.
Um exemplo de configuração:
Para permitir acesso apenas por alguns usuários, adicione a seguinte linha:
AllowUsers user1 user2
Você deve querer mudar algumas linhas para que pareçam com as seguintes:
Protocol 2 . . . LoginGraceTime 120 . . . PermitRootLogin no # (put yes here if you want root login)
Você pode também descomentar a opção BANNER e editar Template:Filename para uma mensagem de boas vindas.
Mesmo que a porta utilizada pelo ssh possa ser detectada por um port-scanner como o nmap, alterando-a irá reduzir o número de entradas nos logs por tentativas automatizadas de acesso.pts.
Permitindo outros entrarem
Para permitir que outra pessoa conecte via ssh a sua maquina você precisa ajustar o arquivo Template:Filename, e adicionar o seguinte:
# Permite qualquer um conectar a você sshd: ALL # Ou, você pode restringir certos ips. sshd: 192.168.0.1 # ou restringir uma rede de ips sshd: 10.0.0.0/255.255.255.0 # ou restringir o ip por um padrão sshd: 192.168.1.
Agora você deve checar o arquivo Template:Filename pela seguinte linha, e ter certeza que ela está dessa forma:
ALL: ALL
É isso. Você pode sair e outros devem conseguir entrar via ssh :).
Para utilizar as novas configurações, reinicie o daemon (as root):
# /etc/rc.d/sshd restart
Gerenciando o Daemon SSHD
Apenas adicione sshd à seção "DAEMON" do seu arquivo Template:Filename:
DAEMONS=(... ... sshd ... ...)
Para iniciar/reiniciar/parar o daemon, use o seguinte:
# /etc/rc.d/sshd {start|stop|restart}
Conectando ao servidor
Para conectar ao servidor, execute:
$ ssh -p port user@server-address
Dicas e Truques
Túnel criptografado
Isso é muito util para usuário de notebook conectado a várias redes inseguras. A única coisa que você precisa é um servidor ssh sendo executado em alguma localização segura, como sua casa ou trabalho. Pode ser util fazer uso de um serviço de DNS dinâmico como DynDNS assim você não precisa lembrar o seu endereço IP.
Primeiro Passo: Iniciar a Conexão
Você tem apenas que executar esse único comando no seu terminal favorito para iniciar a conexão:
$ ssh -ND 4711 usuario@host
onde Template:Codeline é o seu usuário no servidor SSH executando em Template:Codeline. Ele irá pedir sua senha, e então você estará conectado! A opção Template:Codeline desabilita o "prompt" interativo, e a opção Template:Codeline especifica a porta local na qual ele ouvirá (você pode escolher qualquer numero de porta de sua preferência).
Uma forma de fazer isso mais facil é colocar um atalho no seu arquivo Template:Filename da seguinte forma:
alias sshtunnel="ssh -ND 4711 -v user@host"
É interessante adicionar a opção de verbosidade Template:Codeline, porque então você pode verificar que está realmente conectado pela saída. Agora você precisa executar apenasTemplate:Codeline :)
O passo acima é completamente inútil se você não configurar seu navegador ( ou outros programas) para usar o novo túnel. Desde que a versão atual do SSH suporta SOCKS4 e SOCKS5, você pode usar qualquer um deles.
- Para o Firefox:Editar → Preferências → Avançado → Rede → Configurar Conexão →:
- Marque a opção "Configuração manual de proxy", e digite "localhost" no campo"SOCKS", e então o número da porta no campo seguinte (acima eu utilizei 4711).
- Para o Chromium: você terá que configurar as variáveis de ambiente. Eu recomento adicionar as seguintes linhas ao seu .bashrc:
function secure_chromium { port=4711 export SOCKS_SERVER=localhost:$port export SOCKS_VERSION=5 chromium & }
Agora abra um terminal e faça:
$ secure_chromium
Aproveite o seu túnel seguro!
Encaminhamento X11
Para executar aplicativos gráficos através de uma conexão SSH você pode habilitar o "X11 forwarding". Uma opção precisa ser definida nos arquivos de configuração do servidor e do cliente (aqui "cliente" quer dizer o seu computador onde o servidor X11 é executado, e você irá executar aplicativos X no "servidor").
Instalando xorg-xauth no servidor:
# pacman -S xorg-xauth
- Habilite a opção AllowTcpForwarding no arquivo Template:Filename no server.
- Habilite a opção X11Forwarding no arquivo Template:Filename no server.
- Defina a opção X11DisplayOffset no arquivo Template:Filename no server para 10.
- Habilite a opção X11UseLocalhost no arquivo Template:Filename no server.
- Habilite a opção ForwardX11 no arquivo Template:Filename no client.
Para usar o encaminhamento, conecte no seu servidor pelo ssh:
# ssh -X -p port user@server-address
Se vocẽ receber erros ao tentar executar um aplicativo gráfico, tente usar o encaminhamento confiável então:
# ssh -Y -p port user@server-address
Agora você pode iniciar qualquer aplicativo X no servidor remoto, a saida será redirecionada para a sua sessão local:
# xclock
Se você receber erros "Cannot open display", tente o seguinte comando como root:
$ xhost +
o comando acima irá permitir que qualquer um encaminhe aplicativos X11. Para restringir o encaminhamento a um determinado host:
$ xhost +hostname
onde hostname é o nome do host ao qual você quer encaminhar. Digite "man xhost" para mais detalhes.
Seja cuidadoso com alguns aplicativos que checam por uma instância na maquina local. O Firefox é um exemplo. Feche o Firefox ou use o seguinte parâmetro de inicialização para inicar uma instância na maquina local:
$ firefox -no-remote
Acelerando o SSH
Você pode fazer todas as sessões ao mesmo host utilizarem uma única conexão, o que irá acelerar muito os logins subsequentes, ao adicionar a seguinte linha abaixo do host apropriado em Template:Filename:
ControlMaster auto ControlPath ~/.ssh/socket-%r@%h:%p
Alterando as cifras utilizadas pelo SSH para aquelas que requerem menos processamento pode melhorar a velocidade. Nesse aspecto as melhores escolhas são arcfour e blowfish-cbc. Por favor, não faça isso a menos que saiba o que estás fazendo;arcfour tem várias vulnerabilidades conhecidas. Para usá-las, execute o ssh com a opção Template:Codeline, assim:
# ssh -c arcfour,blowfish-cbc user@server-address
Para usá-las permanentemente, adicione a seguinte linha abaixo do host apropriado em Template:Filename:
Ciphers arcfour,blowfish-cbc
Outra opção para melhorar a velocidade é ativar a compressão com a opção Template:Codeline. Uma solução permanente para isso é adicionar a seguinte linha abaixo do host apropriado em Template:Filename:
Compression yes
O tempo de login pode ser reduzido utilizando a opção Template:Codeline, que pula a pesquisa em IPv6. Isso pode ser feito permanentemente adicionando a seguinte linha abaixo do host apropriado em Template:Filename:
AddressFamily inet
Outra forma de fazer essas mudanças permanentes é criar um atalho em Template:Filename:
alias ssh='ssh -C4c arcfour,blowfish-cbc'
Resolução de Problemas
Certifique-se de que a variável DISPLAY está corretamente configurada no servidor remoto:
ssh -X user@server-address server$ echo $DISPLAY localhost:10.0 server$ telnet localhost 6010 localhost/6010: lookup failure: Temporary failure in name resolution
isso pode ser resolvido adicionando localhost ao arquivo Template:Filename.
Montando um Sistema de Arquivos Remoto com SSHFS
Instale o sshfs
# pacman -S sshfs
Carregue o módulo Fuse para a memória
# modprobe fuse
Adicione fuse à lista de módulos no arquivo Template:Filename para carregá-lo na inicalização do sistema.
Monte o diretório remoto usando sshfs
# mkdir ~/remote_folder # sshfs USER@remote_server:/tmp ~/remote_folder
O comando acima irá fazer com que a pasta /tmp no servidor remoto seja montada como ~/remote_folder na maquina local. Copiando qualquer arquivo para essa pasta irá em cópia transparente através da rede usando SFTP. O mesmo ocorre quanto a edição, criação ou remoção de arquivos.
Quando terminarmos de utilizar o sistema de arquivos remoto, podemos desmontar o diretório remoto fazendo:
# fusermount -u ~/remote_folder
Se trabalharmos nessa pasta numa base diária, ele irá sabiamente adicionar à table de sistemas de arquivo Template:Filename. Desse forma ele pode ser automaticamente montado pelo sistema durante a inicialização ou manualmente (se a opção Template:Codeline for escolhida) sem a necessidade de especificar a localização remota a cada vez. Aqui uma entrada de exemplo da tabela:
sshfs#USER@remote_server:/tmp /full/path/to/directory fuse defaults,auto,allow_other 0 0
Mantendo a Sessão Ativa
Sua sessão ssh irá desconectar automaticamente se permanecer ociosa. Para manter a conexão ativa adicione a seguinte linha ao arquivo Template:Filename ou para Template:Filename no cliente.
ServerAliveInterval 120
Isso irá enviar um sinal "keep alive" para o servidor a cada 120 segundos.
Reciprocamente, para manter conexões de entrada ativas, você pode definir
ClientAliveInterval 120
(ou algum outro número maior que 0) no arquivo Template:Filename no servidor.
Salvar os dados da conexão em .ssh/config
Sempre que você quer conectar a um servidor, você normalmente precisa digitar ao menos o endereço e o seu usuário. Para evitar o trabalho de digitar os servidores que você regularmente conecta, você pode utilizar o arquivo Template:Filename como mostrado no exemplo:
Agora vocẽ pode simplesmente conectar ao servidor usando o nome que você especificou:
$ ssh myserver
Para ver uma lista completa de possíveis opções, cheque a pagina de manual do ssh_config no seu sistema ou a Documentação do ssh_config no site official em inglês.