SSH - Dicas, configurar e exemplos de comando.

Atualizado em: 15/11/2007



Sobre este documento

Original em formato texto com marcações para conversão em HTML, processo automatizado com scripts e txt2tags.

Dicas, instalar e configuar, exemplos de linha de comando e indicações de tutoriais.

Os comandos e dicas podem não atender as suas necessidades, não ser compatível com sua instalação, tente adaptar ao seu ambiente. SSH é muito útil para adminstrar maquinas remotamente, transferir arquivos e outros serviços, modo de operação semelhante ao Telnet mas de forma segura, os dados e senhas trafegam pela rede em modo criptografados.

Também funciona com servidor para estações windows em conexões como putty, winscp, FreeNX e outros...

Considere que os pacotes do protocolo ssh são os mesmos na maioria das distribuições, as diferenças entre as distros estão nos comandos para instalar e iniciar o servidor sshd, também algumas diferenças entre as próprias versões do SSH.

FAQ com mensagens da lista Linux-br e contribuições direta, acesse os arquivos em formato .txt.
http://www.zago.eti.br/ssh/

Instalar e configurar

CL10 - Conectiva 10

SSH tem pacotes para clientes e servidor, os pacotes cliente servem para fazer conexões com outras maquinas, iniciar a conexão a partir da maquina local, os pacotes servidor servem para atender as requisições, receber e atender os pedidos de conexões de outras maquinas, na maquina local precisa dos pacotes cliente e na maquina remota precisa dos pacotes servidor para completar a conexão, a parte cliente basta instalar e executar os comandos, a parte servidor requer o daemon rodando (sshd), portanto, além da instalação precisa iniciar o serviço e refinar o ajuste a seu modo.

Dependendo do perfil de instalação já inclue todos os pacotes ou nem instala, como exemplo, CL10 com perfil "servidor Samba", em tempo de instalação não inclue os pacotes do ssh, mas podem ser instalaos a qualquer momento, a seguir alguns exemlos de comandos para verificar e instalar, exemplos para linha de comando, pode fazer o mesmo serviço em ambiente gráfico via synaptic e outras ferramentas.

Lembre que somente o root tem poderes para instalar programas, torne root com su -, também requer o CD 1 e CD2 ou a maquina configurada para buscar os pacotes na internet.

Ver quais pacotes estão instalados; rpm -qa | grep ssh

Ver quais os pacotes disponiveis para instalar: apt-cache search ssh

Instalar somente o cliente ssh

apt-get install openssh openssh-clients

Instalar somente o servidor ssh

apt-get install openssh openssh-server

Instalar todos os pacotes do ssh, cliente + server

apt-get install openssh openssh-clients openssh-server

Iniciar (levantar) o servidor sshd execute: service sshd start

Iniciar o servidor ssh no boot (automatizar para iniciar o serviço junto com o boot da maquina tanto em modo 3 texto ou 5 gráfico).

chkconfig --level 35 sshd on

Ou simplesmente: chkconfig sshd on

Após alguma alteração na configuração precisa reiniciar o serviço, execute: service sshd restart

Parar o servidor ssh, execute: service sshd stop

Resultado de alguns comandos.

resultado do comando: rpm -qa | grep ssh

  [root@faqcl10 tmp]# rpm -qa | grep ssh
  openssh-clients-3.8.1p1-60281cl
  openssh-server-3.8.1p1-60281cl
  openssh-3.8.1p1-60281cl

FC5

Ambiente, FC5 x86_64 instalado com perfil default Gonome, sem seleção de pacotes manual.

Neste perfil de instalação, já instala o cliente e server do SSH, vem configurado para exportar o X "X11Forwarding yes" e comentada a linha que permite login remoto como root "#PermitRootLogin yes", para liberar, retire o comentário desta diretiva em /etc/ssh/sshd_config, evite esta alteração em micros de cara para internet.

Já vem instalado mas não vem configurado para iniciar o servidor sshd automaticamente.

Iniciar o servidor sshd manualmente service sshd start

Parar o servidor sshd manualmente service sshd stop

Reiniciar o servidor sshd manualmente service sshd restart

Conferir se está rodando; status service sshd status

configurações permanente no boot, use chkconfig, para iniciar o servidor sshd no boot;

chkconfig sshd on

Use o gerenciador de pacotes preferido para instalar, veja o pacotes instalados no FC5 test3

  [root@localhost ssh]# rpm -qa | grep ssh
  openssh-askpass-4.3p2-1
  openssh-4.3p2-1
  openssh-server-4.3p2-1
  openssh-clients-4.3p2-1

Executar programas da interface gráfica na maquina remota, na mquina local, abra um konsole e digite a linha de comando para fazer a conexão com a opção -X, no console remoto execute os programas, para executar gerereciador nautilus ou konqueror, depois de completar a conexão, digite na linha de comando o nome do aplicativo e enter, exemplo de formato da linha de comando;

ssh -X user-remoto@ip-remoto

ssh -X zago@192.168.1.64

konqueror

nautilus

Continue consultando este documento, tem mais exemplos e dicas...

CentOS 4.3

Ambiente, CentOS 4.3 - x86_64 instalado com perfil default Gnome, sem seleção de pacotes manual.

Neste perfil de instalação, já instala o cliente e server do SSH, vem configurado para exportar o X "X11Forwarding yes" e comentada a linha que permite login remoto como root "#PermitRootLogin yes", para liberar, retire o comentário desta diretiva em /etc/ssh/sshd_config, evite esta alteração em micros de cara para internet.

Resumo de alguns comandos;

Iniciar o servidor sshd manualmente service sshd start

Parar o servidor sshd manualmente service sshd stop

Reiniciar o servidor sshd manualmente service sshd restart

Conferir se está rodando; status service sshd status

configurações permanente no boot, use chkconfig, para iniciar o servidor sshd no boot;

chkconfig sshd on

Use o gerenciador de pacotes preferido para instalar, veja o pacotes instalados no CentOS 4.3 - x86_64

  [root@localhost ~]# rpm -qa | grep ssh
  openssh-clients-3.9p1-8.RHEL4.12
  openssh-3.9p1-8.RHEL4.12
  openssh-askpass-gnome-3.9p1-8.RHEL4.12
  openssh-server-3.9p1-8.RHEL4.12
  openssh-askpass-3.9p1-8.RHEL4.12

Por default já vem configurado para exportar o X com esta linha no /etc/ssh/sshd_config

`` ForwardX11Trusted yes``

Faça a conexão ssh com a diretiva -X para executar programas da interface gráfica na maquina remota, segue alguns exemplos para uso em linha de comando no konsole.

ssh -X user-remoto@ip-remoto

ssh -X zago@192.168.1.64

Depois de completada a conexão, digite o nome do pacote da interface gráfica e enter

konqueror

nautilus

Ou tudo na mesma linha de comando

ssh -X -C zago@192.168.1.64 /usr/bin/nautilus

Esta linha de comando abre o nautilus na interface gráfica local.

Continue consultando este documento, tem mais exemplos e dicas sobre X remoto via ssh...

SUSE 10 e 10.1

Ambiente; estação de trabalho com instalação do KDE, sem seleção de pacotes adicionais.

Neste perfil de instalação já inclue o cliente e server SSH, também inclue o firewall negando acesso remoto via ssh, desativar ou configurar firewall, execute yast2 -> Segurança e usuários -> Firewall

Conforme o perfil de instalação pode não incluir o ssh, caso falhe ou não foi selecionado no perfil de instalação, procure e instale o pacote openssh, procure no yast ou no seu gerenciador de pacotes, lembre de iniciar o serviço após a instalação, veja exemplos abaixo.

Por default já vem configurado para exportar o X "X11Forwarding yes" e comentada a linha que permite login remoto como root "#PermitRootLogin yes", para liberar, retire o comentário desta diretiva em /etc/ssh/sshd_config.

Se preferir permitir conexão direta como root, em um konsole como root, copie e cole as duas linhas abaixo, altera a configuração e reinicia o serviço sshd;

sed -i "s/#PermitRootLogin yes/PermitRootLogin yes/g" /etc/ssh/sshd_config

rcsshd restart

Quando tiver problemas com acesso remoto, verifique se o firewall está habilitado, faça teste com firewall desabilitado e depois que funcionar implemente suas regras, dependendo da instalação o firewall vem habilitado e negando acesso remoto via ssh, permite conexão no konsole da própria maquina mas não responde a conexões de outras maquinas da rede, em algumas instalações volta ao prompt sem mensagem alguma, isto é caracterisco do firewall ativado.

Por default o firewall nega conexão remota, sem firewall o ssh vem configurado para aceitar conexão remota de qualquer usuário do sistema, a segurança pode ser combinada com regras de firewall e configurações do ssh para limitar quem pode ou não fazer login, configure em /etc/ssh/sshd_config e implemente outras regras de segurança, tem varias dicas em outros tópicos deste documento e nas mensagens do FAQ.

Configurar para iniciar o servidor sshd junto com o boot chkconfig sshd on

SUSE usa formato diferente, "rc" mais o daemon do serviço, formando uma palavra mais a opção desejada, exemplos;

Iniciar o servidor sshd manualmente rcsshd start

Parar o servidor sshd manualmente rcsshd stop

Reiniciar o servidor sshd manualmente rcsshd restart

Conferir se está rodando; status rcsshd status

Inciar automaticamente junto com o boot

chkconfig, marcar para iniciar serviço junto com o boot; chkconfig daemon on/off, exemplo para iniciar ssh

chkconfig sshd on

Listar todos os serviços disponíveis para seleção com chkconfig, marcados ou não.

chkconfig --list

  suse10:~ # chkconfig --list | grep ssh
  sshd                      0:off  1:off  2:off  3:on   4:off  5:on   6:off

Mandriva 2006

Perfil KDE para estação de trabalho não inclue instalação automatica dos pacotes para servidor do ssh.

Instalar via interface gráfica, execute mcc e procure pelo pacote openssh-server

Instalar via linha de comando, execute:

  urpmi install openssh-server
  service sshd status

Kurumin 5

Rodando Kurumin a partir do CD ou instalado em HD.

Habilitar servidor ssh, clique em menu K -> Redes e acesso remoto -> SSH -> ativar o servidor SSH, prontinho, não precisa fazer mais nada, já inicia o servidor ssh e por default permite login remoto direto como root (PermitRootLogin yes) e também executar aplicativos do ambiente gráfico remotamente (X11Forwarding yes), claro que precisa da rede configurada, senha do root e iniciar o servidor ssh.

Muito prático para administração remota, backup em geral de instalações e partições, restaurar intalações Linux, backup e restauração de instalações Windows, mesmo em NTFS, use o dd+ssh para criar a imagem e restaurar, veja dicas de como configurar a rede, senha do root e mais dicas em;
http://www.zago.eti.br/distro/kurumin-dicas.html

kubuntu 6.06 e 7.04

ssh - instalar e configurar

Na instalação default inclue o cliente ssh (openssh-client)

Para permitir conexões remotas, login remoto a partir de outras maquinas, instale o pacote openssh-server, procure por ele no gerenciador de pacotes, instalando pelo "aptitude, adept, smart ", exemplo via smart na linha de comando

smart install openssh-server

Via aptitude

aptitude install openssh-server

Prontinho, durante a instalação já inicia o daemon sshd para aceitar conexões remotas.

Configuração default permite login de root e exportando o X.

PermitRootLogin yes

X11Forwarding yes

Demais comandos e uso são os mesmos de qualquer distro.

Debian 3.1 - Sarge

Neste tópico, comandos e dicas exclusivo sobre a distro, demais comandos, consulte a documentação geral, comum a todas as distros.

Instalar via linha de comando, como root, execute;

apt-get install ssh

Esta linha de comando inicia um dialogo com instruções e avisos, faça as opções e prossiga com a instalação, no final da instalação o cliente e server são instalados, conforme as opções já inicia o servidor ssh (sshd) automaticamente, permitindo conexões remotas e uso do cliente ssh.

Por default já vem liberado login de root "PermitRootLogin yes", para impedir login como root, altere esta diretiva para "no".

Exportar o X, altere a diretiva "X11Forwarding no" para "X11Forwarding yes", ou simplesmente copie e cole;

sed -i "s/X11Forwarding no/X11Forwarding yes/g" /etc/ssh/sshd_config

Não consegui executar aplicativos do X remotamente, abre o aplicativo na própria maquina e não na maquina remota de onde dispara o comando, algo muito estranho que não acontece em outras distros, qualquer dia procuro entender isto e postar a solução aqui.

Algumas dicas, usuários e outros comandos - resumo

Usuário; na maquina que roda o servidor sshd, precisa criar o usuário e definir senha como sendo um usuário local, na conexão remota tem que indicar o usuário e senha do sistema remoto, tanto na linha de comando ou outro cliente ssh, usuário cliente ssh são os mesmos do sistema remoto e não precisa existir no cliente, veja na documetação de sua distro sobre criar usuários e senhas, no FAQ ssh.txt neste diretório tem mensagens com algumas dicas de firewall e como melhorar o controle desta conexão.

Saber quais clientes estão conectados, use a variavel de ambiente $SSH_CLIENT.

  [zago@speedy zago]$ echo $SSH_CLIENT
  192.168.1.53 33033 22

Veja também os resultados de;

netstat -na

w

DEBUG - LOG - faça a conexão com -vv para exibir as mensagens, ajuda na localização de problemas, tente também iniciar o iniciar o servidor em modo debug (ssh -d) e conectar com o cliente, provavelmente o servidor vai exibir as mensagens de erros, tais como permissões e etc..., exemplos

  ssh -v zago@localhost
  ssh -vv zago@192.168.1.3
  /usr/sbin/sshd -d
  service sshd status

Copia preservando data e permissões de arquivos,(ownership e timestamp) use -p minusculo, cuidado que -P maiusculo indica a porta, direto do man scp.

       -p      Preserves modification times, access times, and modes from the original file.
  
  Exemplo de copia do dirlocal mantendo as permissões no destino em dirremoto.
  
  scp -rp dirlocal user@IP:/dirremoto

Testar conexão com a maquina local

Testar a conexão, faça a conexão na propria maquina, no console use um dos exemplos;

  ssh login_usuário_válido@localhost
  ssh login_usuário_válido@ip_da-propria-maquina
  ssh zago@192.168.1.53
  ssh zago@localhost

Concluindo a conexão indica que a configuração local está OK, falhando conexão externa indica problemas externos como firewall, rede, rotas e etc..

  [zago@zago zago]$ ssh zago@localhost
  The authenticity of host 'localhost (127.0.0.1)' can't be established.
  RSA key fingerprint is 6c:d1:55:25:11:1e:3a:7e:71:59:33:4c:cb:9e:79:ef.
  Are you sure you want to continue connecting (yes/no)? yes
  Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
  zago@localhost's password:
  Last login: Tue Oct 11 11:24:33 2005
  [zago@zago zago]$ netstat -na
  Conexões Internet Ativas (servidores e estabelecidas)
  Proto Recv-Q Send-Q Endereço Local          Endereço Remoto         Estado
  tcp        0      0 0.0.0.0:111             0.0.0.0:*               OUÇA
  tcp        0      0 0.0.0.0:22              0.0.0.0:*               OUÇA
  tcp        0      0 0.0.0.0:631             0.0.0.0:*               OUÇA
  tcp        0      0 127.0.0.1:33057         127.0.0.1:22            ESTABELECIDA

DEBUG - LOG - faça a conexão com -vv para exibir as mensagens, ajuda na localização de problemas, tente também iniciar o iniciar o servidor em modo debug (ssh -d) e conectar com o cliente, provavelmente o servidor vai exibir as mensagens de erros, tais como permissões e etc..., exemplos

  ssh -v zago@localhost
  ssh -vv zago@192.168.1.3

Falha de conexão por troca maquina, IP ou de chaves

Falha na conexão, na reinstalação, troca de IP e outras alterações, pode falhar a conexão e retornar um aviso que existe alguém interceptando a conexão, que é um ataque ou violação, esta mensagem também ocorre em caso de ataque real, portanto tem duas possibilidades, um real ataque ou a maquina destino não é mais a mesma utilizada em conexão anterior com este IP, isto ocorre porque mudou a chave, como não é possivel saber a causa, por segurança recusa a conexão.

Tendo certeza que não se trata de sniffer na rede ou ataque e que é provavel a troca de IP ou instalação então edite o arquivo, .ssh/known_hosts que fica no home do usuário e remova a entrada deste IP (chave velha), neste arquivo procure pela linha com o IP remoto que causou o problema e apague-o, ou remova o diretorio todo (todas as chaves), depois faça a conexão que vai recriar as chaves, vai recriar como sendo a primeira conexão com esta maquina, veja o exemplo, primeiro remove o .ssh e depois conecta por ssh:

  [zago@zago zago]$ rm -rf ~/.ssh
  [zago@zago zago]$ ssh zago@192.168.1.1
  The authenticity of host '192.168.1.1 (192.168.1.1)' can't be established.
  DSA key fingerprint is 32:57:2a:2b:e6:1b:da:b2:33:fe:88:2f:33:cd:b1:91.
  Are you sure you want to continue connecting (yes/no)? yes
  Warning: Permanently added '192.168.1.1' (DSA) to the list of known hosts.
  zago@192.168.1.1's password:
  Last login: Thu Jul 18 13:22:19 2002 from 192.168.1.53

Removenda a linha com sed.

Remover linha que inicia com IP 192.168.1.205, utilizo para remover chave de IP que foi moficado no arquivo ~/.ssh/known_hosts

sed -i '/^192.168.1.205/d' ~/.ssh/known_hosts

Em minhas instalações de testes isto é repetitivo, para não ficar repetindo a digitação, coloquei no inicio do .bash_history, outra opção que utilizo, criar script e passar o IP na linha de comando, script que utilizo em minhas instalações.

cat /usr/bin/zzsedip

  #!/bin/bash
  sed -i "/^$1/d" ~/.ssh/known_hosts

Com este script basta passar o IP na linha de comando, digitar zzse e tecla tab para completar, depois tecle um espaço e IP que deseja remover

zzsedip 192.168.1.205

Agora é só voltar com as setas até a linha que deu erro e dar enter para criar nova chave e completar a conexão...

Segurança

Sniffando o SSH com o Strace
http://www.Dicas-L.com.br/dicas-l/20070511.php

Restringir acesso

Mais uma medida de segurança, restringir o acesso somente aos usuários listados na configuração do ssh, no CL10 o final do /etc/ssh/sshd_conf vem assim;

  #Banner /some/path
  #VerifyReverseMapping no
  
  Subsystem       sftp    /usr/libexec/sftp-server

Para incluir os usuários que poderão se conectar via ssh, acrescente no final de /etc/ssh/sshd_conf, AllowUsers mais o nome de login dos usuários separados por espaços, exemplo;

  Subsystem       sftp    /usr/libexec/sftp-server
  AllowUsers anderson zago erika carol

Enquanto não utilizada a diretiva "AllowUsers" qualquer usuário da maquina pode conectar via ssh. Quando acrescenta-la, passa a permitir apenas os usuários listados e válidos na maquina, esta diretiva prevalece sobre a regra "default" que permite login de todos.

Alterar a porta do ssh, usar outra porta

A porta padrão do ssh é 22, por isto tem muitos scripts que ficam tentando conexão nesta porta, por este e outros motivos, pode se alterar a porta do ssh, por exemplo, alterar de 22 para porta 2222, use seu editor preferido para editar o arquivo /etc/ssh/sshd_config e procure pela linha; #Port 22 altere para Port 2222, observe que além de alterar a porta, também precisa remover o comentário da linha, caso não encontre esta linha, pode adicionar no inicio do arquivo, depois de efetuar a alteração, precisa reiniciar o serviço, veja no tópico sobre instalação, para testar na própria maquina, em um konsole execute a linha de comando neste formato;

  ssh -p 2222 IP-ou-dominio -l usuario
  
  ssh -p 2222 192.168.1.2 -l zago
  
  ssh -p 222 zago@192.168.1.2

Ocorrendo erros, procure interpretar a mensagem de erro, verifique a configuração, entre as principais causas, verifique se o serviço ssdh (servidor ssh) está rodando, regras de firewall bloqueando acesso, se está tentando com usuário permitido na configuração do ssh.....

Redirecionamento e algumas regras de firewal

Existem diversas opções e regras para redirecionar um pedido que chega da internet para uma estação ou servidor que estão atrás do firewall, pode ser por porta, IP ou protocolo.

Segue alguns exemplos;

Redirecionar ssh, independe do cliente, na origem pode ser utilizado linha de comando do ssh, fish no konqueror, putty em cliente windows, o que importa é a porta, os demais requisitos ficam por conta da configuração do cliente e servidor, exemplo para redirecionar tudo que chega na porta 22 (usada pelo ssh), redirecionar para a estação com IP 192.168.1.53, todos os pedidos que chegam no firewall e porta 22 serão redirecionados.

$iptables -t nat -A PREROUTING -p tcp -s 0/0 --dport 22 -i eth0 -j DNAT --to 192.168.1.53:22

Onde:
eth0 = placa de rede de cara pra net, ajuste na sua instalação
22 é a porta que quero redicionar pra outra maquina (22 é a porta default utilizada nas conexões por ssh), pode ser alterada.
192.168.1.53 é o IP reservado da maquina interna que vai atender a conexão.

Na maquina remota (internet) a conexão é disparada para o IP do firewall, a regra acima redireciona para a estação, um exemplo de linha de comando para conexão via ssh;

ssh user@IP, ou ssh zago@200.200.200.200, quando este pedido chega no Firewall com IP 200.200.200.200 é automaticamente redirecionado para a estação com IP 192.168.1.53 que atenderá o pedido e completará a conexão.

Outra opção, usar porta diferente, assim pode redirecionar cada porta para estações especificas, também pode redirecionar com troca de porta, neste exemplo a 2222 será redirecionada para 22, nesta regra vai redirecionar para a estação, somente os pedidos que chegam na porta 2222, os demais pedidos na porta 22 ou outra qualquer serão tratados por outras regras.

$iptables -t nat -A PREROUTING -p tcp -s 0/0 --dport 2222 -i eth0 -j DNAT --to 192.168.1.53:22

Pode configurar o ssh para ouvir em outra porta, ou até mesmo manter a default, neste exemplo foram mantidas, tanto o firewall como estação estão ouvindo na porta 22, o uso da porta 2222 foi utilizando somente na linha de comando e na regra de iptables, a regra de redirecionamento funciona somente para os pedidos que chegam na porta 2222, a linha de comando na internet tem que indicar a porta, exemplo;

ssh -p 2222 zago@200.200.200.200

o (-p 2222) serve para indicar a porta, os pedidos que chegarem na porta 22 seguem outras regras, pode ser redirecionada para outra maquina ou atendida pela própria maquina do firewall.

Restringindo o redirecionamento somente a determinado IP, permitindo que somente conexões com origem no IP 200.204.198.164 sejam redirecionadas para a estação, qualquer conexão com origem em IP diferente não serão redirecionadas, exemplo da regra;

$iptables -t nat -A PREROUTING -p tcp -s 200.204.198.164 --dport 2222 -i eth0 -j DNAT --to 192.168.1.53:22

Observe a comodidade, a partir do console da maquina remota pode fazer uma conexão normal na porta 22 do micro firewall para inserir a regra acima, abrir outro console para aplicar a linha de comando da copia na porta 2222 que cai na regra do redirecionamento e portanto na estação remota para fazer a copia para a maquina local, concluida a transferencia de arquivos, voltar ao console anterior e desfazer as alterações no firewall.

Como pode notar, são varias opções, e tem mais meios de dificultar o acesso de estranhos, neste documento e no FAQ tem mais dicas, voce sabe o que tem a proteger, portanto implemente as medidas de segurança, continue pesquisando....

Liberando acesso local e limitando conexões externas

Liberando somente conexões para a rede interna, regra aplicável em micros que compartilha a internet, com duas placas de rede, uma para a rede interna e outra de cara para internet, conectada ao modem, considerando que a placa que está de cara para internet seja a eth0, inclua esta regra no firewall.

iptables -A INPUT -p tcp -i eth0 --syn --dport 22 -j DROP

ajuste o device de rede (eth0) conforme sua instalação, em conexões via pppoe o device deve ser (ppp0), observe que esta regra fecha qualquer tentativa de conexão via ssh chegando pela eth0 mas continua aceitando todas que chegam pela eth1

Caso queira liberar somente alguns IP da rede interna, use regras neste formato.

  iptables -A INPUT -p tcp -s $IP_PERMITIDO1 --dport 22 -j ACCEPT
  iptables -A INPUT -p tcp -s $IP_PERMITIDO2 --dport 22 -j ACCEPT
  iptables -A INPUT -p tcp -s $IP_PERMITIDO3 --dport 22 -j ACCEPT
  iptables -A INPUT -p tcp -s $IP_PERMITIDO4 --dport 22 -j ACCEPT
  iptables -A INPUT -p tcp --dport 22 -j DROP

As variaveis de $IP_PERMITIDO1 a $IP_PERMITIDO4 devem ser definidas no inicio do script de firewall ou substituidas pelo IP, a ultima linha fecha para os demais IP tanto da rede interna como da internet.

Liberar acesso remoto somente para um IP conhecido, para manutenção, no inicio do firewall defina a variável $IP_PERMITIDO ou substitua no exemplo abaixo;

  iptables -A INPUT -p tcp -s $IP_PERMITIDO --dport 22 -j ACCEPT 
  iptables -A INPUT -p tcp --dport 22 -j DROP

Liberar mais de um IP, repita a primeira linha alterando a variável ou inserindo o IP diretamente.

Liberar acesso somente a um IP e negar para os demais.

  iptables -I INPUT -p tcp -s $IP_PERMITIDO --dport 22 -j ACCEPT
  iptables -I INPUT -p tcp -s 0.0.0.0/0 --dport 22 -j DROP

Knocking - abrir porta ssh remotamente

Knocking on servers doors

Voce pode fechar todo fluxo na porta 22 e so voce abre quando precisa.
Tutorial com script e dicas para RedHat / Fedora
http://www.Dicas-L.com.br/dicas-l/20060913.php

Tutoriais para SUSE 10.1 e outras distribuições.
http://www.zago.eti.br/ssh/knock.html

fail2ban - bloquear ataques brute force

Bloqueio de IP quando falha login, configurável, por default permite 3 tentativas de senha, depois bloqueia novas tentativas, ideal para proteção de robots que ficam tentando fazer login via SSH, FTP, SMTP, Apache, etc.

Tutorial para instalações Debian e seus derivados, serve como referencia para outras distro.

http://www.howtoforge.com/fail2ban_debian_etch

Indicado por:
Anderson Marcelo De Oliveira
anderson@infomachine.com.br

Iptables - Bloquear ataques Brute Force

Regras Iptables para Bloquear ataques Brute Force no SSH
Colaboração: mairon lima mendes
http://www.Dicas-L.com.br/dicas-l/20060724.php

No SUSE 10.1 editei as regras para remover a quebra de linha e eliminar as mensagens de erro, ainda não verifiquei o resultado.

Cuidado com a quebra de linha, copia do endereço acima vem com quebra de linha, tanto via navegador (copiar e colar) como via lynx, precisa editar para eliminar a quebra ou acrescentar \ no final da linha quebrada.

Caso tenha dificuldade, tem cópia destas regras dentro deste modelo, tente baixar com wget para evitar quebra de linha.

wget http://www.zago.eti.br/firewall/fireaula.sh

Para facilitar a separação das linhas, todas iniciam com $iptables, também estão separadas por uma linha em branco

DenyHosts contra ataques de força bruta

DenyHosts - bloquear hosts que realizam tentativas de acesso ao sistema por SSH - força bruta
http://www.dicas-l.com.br/dicas-l/20060609.php

Tópico em elaboração no SUSE 10.1. Falhou e qualquer dia continuo com os testes...

Teste com o pacote DenyHosts-2.4b-python2.4.noarch.rpm, procure por ele ou versão mais recente
http://denyhosts.sourceforge.net/

  rpm -ivh DenyHosts-2.4b-python2.4.noarch.rpm
  error: Failed dependencies:
          /bin/env is needed by DenyHosts-2.4b-python2.4.noarch
          python(abi) = 2.4 is needed by DenyHosts-2.4b-python2.4.noarch

versão do python instalado

  smart install python
  
  warning: python-2.4.2-18@i586 is already installed

Console remoto - conexões com outras maquinas

SSH permite conexão segura e criptografada, ideal para conexão remota para configuração ou administração, completada a conexão tem um console (shell) da maquina remota, quando iniciar a conexão a partir de um konsole do ambiente gráfico, pode copiar e colar linhas de comandos ou textos entre o konsole e navegador ou editor de textos, muito útil e pratico, pode abrir diversas conexões com a mesma maquina ou maquinas diferentes.

Exemplos de linha de comando pra conexão com a maquina remota, formato (ssh user@IP), as linhas abaixo tem o mesmo resultado:

  ssh zago@192.168.1.53
    
  ssh -l zago 192.168.1.53
  
  ssh -p 22 192.168.1.2 -l zago
  
  Quando se usa porta diferente, exemplo para quem usa na porta 2222
  
  ssh -p 2222 192.168.1.2 -l zago

Algumas instalações vem configurada para não aceitar conexão do root, tem duas soluções, conectar com user comum e tornar root com (su -), ou alterar a confgiruação para permitir liberar login do root.

Algumas distros na configuração default permite login de root, como exemplo o Debian (Sarge), outras vem com este recurso bloqueado, como exemplo o CL10.

Na instalação padrão do CL10 não é permitido login do root diretamente, mas quando precisar fazer algo como root, efetue login como usuario comum e depois digite "su -" e a senha do root para se tornar root, quando aos poderes e recursos não faz diferença, caso prefira, pode liberar login de root diretamente, altere para "yes" a diretiva (PermitRootLogin no) em:

/etc/ssh/sshd_config

altere a linha PermitRootLogin no

para PermitRootLogin yes

Reinicie o sshd service sshd restart

Prontinho, já pode fazer a conexão como root.

Ou simplificando em uma tacada só, comando pra copiar e colar:

sed -i "s/PermitRootLogin no/PermitRootLogin yes/g" /etc/ssh/sshd_config

service sshd restart

Prontinho, na linha de comando pode executar todos os comandos disponíveis no console, quando configurado para exportar o X, faça a conexão com a diretiva -X para executar aplicativos do ambiente gráfico, veja também outros tópicos neste documento, como executar aplicativos do ambiente gráfico, exportar o X.

Executar comando remoto e encerrar conexão, comandos que não requer interação, como iniciar, parar e ver status de serviços, quando precisa somente executar o comando e encerrar a conexão, pode fazer tudo em uma única linha de comando, exemplo para ver status do servidor samba, desligar o micro, iniciar serviço, ver o resultado do comando free;

ssh -C zago@192.168.1.120 /usr/bin/smbstatus \; free

Desligar maquina remota;

ssh -C root@192.168.1.70 poweroff

Executar comando remoto

Em manutenção de arquivos de configuração é comum fazer a conexão via ssh para depois executar o comando, seja comandos simples como ver espaço em disco, arquivos ou editar algum .conf, para estes casos pode passar o comando junto com a linha de comando da conexão, no final do comando já cai no console da maquina local e evita o trabalho de fazer e encerrar a conexão, no caso de executar somente um comando, como ls, du ou até mesmo editar um .conf, no final do comando, tem o resultado remoto mas cai no console local.

Alguns exemplos, após a linha de comando quando solicitado, informe a senha do usuário remoto , entre maquinas configuradas para conexão sem senha executa o comando direto.

Formato da linha de comando;

  ssh userremoto@ipremoto 'comando'
  
  ssh zago@192.168.1.2 '(comando)'
  
  ssh zago@192.168.1.2 '(rm ~/teste.txt)'

Alguns exemplos; executar "ls -la" no diretório "/etc/rc.d" da maquina remota;

ssh zago@192.168.1.193 'ls -la /etc/rc.d'

Conferir o ultimo acesso do usuário no console, pode verificar o ultimo acesso no .bash_history, .bashrc ou outro arquivo de controle, exibe no console local os dados do arquivo na maquina remota.

ssh zago@192.168.1.2 'stat -c %x .bash_history'

Com ssh configurado para aceitar conexão remota do root, pode usar root em lugar de zago no exemplo acima.

Editar arquivo na maquina remota, lembre que vale as permissões na maquina remota para o usuário da conexão, também pode configurar a maquina remota para aceitar conexão do root, mas isto depende da sua segurança, exemplo de uso do editor "vi" para editar/alterar o arquivo remoto /etc/squid/negapalavra.txt, exemplo de linha de comando;

ssh zago@192.168.1.193 'vi /etc/squid/negapalavra.tx'

Exemplo para ver status do servidor samba, ver o resultado do comando free;

ssh -C zago@192.168.1.120 /usr/bin/smbstatus \; free

Desligar maquina remota;

ssh -C root@192.168.1.70 poweroff

Iniciar webmin e ver espaço livre em disco

ssh -C root@192.168.1.120 /etc/rc.d/init.d/webmin start\; df

Quando não for possível passar todos os parametros na linha de comando, crie script e salve na maquina remota, depois é só executar o script, exemplo para backup.

ssh -C root@192.168.1.70 meuscript.sh

Executar aplicativo do ambiente gráfico remoto passando parametros na linha de comando.

Nesta opção fecha a conexão ao fechar o aplicativo, serve somente para executar comandos ou programas remotos, exemplo de pesquisa no Google via Konqueror na maquina remota, passando como parametro o nome do aplicativo (konqueror) mais a string de pesquisa (howto freenx).

ssh -X -C zago@192.168.1.64 konqueror gg:howto+freenx

Neste formato de linha de comando acima, basta executar no konsole da maquina local para fazer a conexão e abrir o konqueror com o resultado da pesquisa no Google, recebe a tela na maquina local mas executa o konqueror e navega pela maquina remota.

Quando o termo da pesquisa tem mais de uma palavra, use o sinal "+" em lugar de espaço para não abrir abas para cada palavra.

hora certa sincronizar hora com outra maquina

Sincronizar a hora via ssh, mais uma "gambi".

Em maquinas sem acesso a internet, pode usar ssh para pegar a data de outra maquina da rede, tudo em uma linha de comando, fazendos alguns testes com ssh para executar comando remoto, resolvi testar esta opção e funcionou, achei interessante acrescentar aqui, pode até ser útil como exercicio sobre ssh.

Tutorial com mais dicas sobre hora certa
http://www.zago.eti.br/script/data.html
  Linha de comando para testar, mostrar hora da maquina remota no console local.
  
  horacerta=`ssh zago@192.168.1.2 'date |tr -s " " |cut -d" " -f4'` && echo -s $horacerta
  Password:
  22:23:29
  
  Linha de comando para alterar a hora local 
  
  horacerta=`ssh zago@192.168.1.2 'date |tr -s " " |cut -d" " -f4'` && date -s $horacerta

Copia de arquivos ou diretórios via rede

Enviar arquivos para outra maquina da rede local ou internet, use no formato;

scp arquivo-a-copiar userdestino@ipdestino:~/

Após o IP acrescente dois pontos barra normal e caminho completo, para copiar para o home do usuário destino, pode substituir o caminho do home do usuário por "til", segue alguns exemplos de linha de comando.

Copiar arqteste.txt para o home do usuário destino:

scp arqtest.txt zago@192.168.1.53:~/

Copiar arqteste.txt para o sub-diretório do home do usuário, /home/zago/copias/faq

scp arqtest.txt zago@192.168.1.53:~/copias/faq

Observe que foi substituido o /home/zago por "til", o comando acima pode ser substituido por este sem o til;

scp arqtest.txt zago@192.168.1.53:/home/zago/copias/faq

Copiar todos os arquivos e sub-diretórios a partir do prompt de comando local para o home do usuário zago no destino.

scp -r * zago@192.168.1.53:~/

Copiar para um sub-diretorio especifico no micro de destino, não use (~) e informe o caminho:

scp -r * zago@192.168.1.53:/home/copias/copiadoserv

Salvar no destino com outro nome, também acrescentar a data e hora de criação:

scp -r /home/samba zago@192.168.1.53:/home/zago/servsamba-`date +%d.%b.%Y-%H-%M`

Resultado; caminho e nome do arquivo no destino tem este formato: /home/zago/servsamba-08.Ago.2004-17-14

Atualizar paginas do Apache, requer alteração de permissão para usuário gravar.

scp -r * zago@192.168.1.2:/srv/www/default/html/zago

Download, buscar arquivos e diretórios em outra maquina, copiar da maquina remota para maquina local, pode fazer a conexão e a partir da linha de comando remota executar outra linha de comando para enviar arquivos para sua maquina, isto implica em fazer a conexão para depois enviar os arquivos, caso queira somente transferir os arquivos para sua maquina, então não precisa fazer a conexão, em uma tacada só, a solução mais simples é esta;

scp -r user-remoto@maquina_remota:~/sub-diretório/diretorio-download .

scp user-remoto@maquina_remota:~/sub-diretório/arquivo-download .

O ponto no final da linha indica para salvar no diretório atual.

scp -r zago@192.168.1.120:~/isos .

Onde; zago é usuário da maquina remota, 192.168.1.120 é o IP da maquina remota, isos é o diretório na maquina remota que quero copiar para a maquina local, observe ponto no final, indica para salvar a copia no diretorio local, mesmo diretório que executou a linha de comando, no exemplo acima -r indica para copiar o diretório isos, para copiar arquivos use neste formato para copiar o arquivo teste.txt

scp zago@192.168.1.120:~/teste.txt .

Salvar em outro local, substitua o ponto pelo caminho na maquina local, exemplo para salvar na maquina local em /home/zago/tmp

scp zago@192.168.1.120:~/teste.txt /home/zago/tmp

scp -r zago@192.168.1.120:~/isos /home/zago/tmp

scp -r zago@192.168.1.120:/home/zago/isos /home/zago/tmp

Este recurso é muito prático na copia de configuração de outra maquina da rede ou até mesmo via internet, exemplo de copia do script de firewall de outra maquina.

scp zago@200.200.200.200:/etc/rc.d/firewall.sh /etc/rc.d

Copiar o diretório squid com os arquivos de acl,

scp -r zago@200.200.200.200:/etc/squid /etc/

Dependendo do arquivo ou diretório, como nos exemplos acima, precisa ser root na maquina local para gravar e permissão de leitura na maquina remota.

Tem um espaço separador entre o nome do arquivo ou diretório remoto e o caminho local.

Dois comandos na mesma linha, use ; para indicar o proximo comando, mesmo assim tem que digitar a senha duas vezes.

Exemplo para download e apagar. Prático para transferir arquivos de backup, apagar depois da cópia.

  scp  zago@192.168.1.2:~/teste.txt . ;ssh zago@192.168.1.2 '(rm ~/teste.txt)'
  
  O resultado é mesmo que digitar em duas linhas.
  
  scp  zago@192.168.1.2:~/teste.txt . 
  ssh zago@192.168.1.2 '(rm ~/teste.txt)'
  
  Quando for o mesmo usuário nas duas maquinas, pode omitir o usuário, neste formato.
  
  scp  192.168.1.2:~/teste.txt . ;ssh 192.168.1.2 '(rm ~/teste.txt)'

Quando a maquina remota está atrás de firewall, pode fazer conexões de maquina em maquina, copiar de uma para outra até disponibilizar em local com acesso direto ou simplesmente acessar o firewall remoto e incluir uma regra que redirecione para a maquina que deseja alcançar, veja dicas no tópico sobre redirecionamento que permite o acesso direto a maquina atrás de firewall.

Exemplo de comando em uma estação para acessar outra estação atrás de outra rede que tem firewall redirecionando a porta 2222 para a estação remota, baixar para o diretório local o diretório remoto /etc/postfix.

scp -P 2222 -r zago@200.200.200.200:/etc/postfix .

SCP no cron - script no crontab

Cópia via scp em scripts executados pelo cron, precisa configurar ssh sem senha.

Segue alguns relatos e problemas.

Monte o script e acrescente no cron com o mesmo usuário configurado para usar ssh sem senha, execute crontab -e no console deste usuário, no script funciona a mesma linha de comando que funciona no console, teste no console ou execute o script manaulmente para testar.

Script dentro do /etc/cron.hourly ou /etc/cron.dayli

Nesta condição o script é executado como root, portanto vai procurar a chave ssh no chaveiro do root /root/.ssh, quando o usuário destino for outro, precisa usar executar com sudo para pegar a chave do usuário (sudo -u usuáriodestino). Veja exemplo em ambiente é CL10 ou SUSE 10.1 com usuário zago configurado para usar ssh sem senha.

Parte do script que está em /etc/cron.hourly, copiar arquivos.

  # enviar por scp para outra maquina, requer ssh sem senha configurado
  cd /backup
  
  Copiar todos arquivos do diretório corrente
  /usr/bin/sudo -u zago /usr/bin/scp * zago@192.168.1.205:/home/copias/samba
  
  Copiar diretório e sub-diretório
  /usr/bin/sudo -u zago scp -r /backup/ter zago@192.168.1.53:/home/copias/teste
  

O formato acima funciona sem problemas, no manual tem outras opções que falharam, como exemplo dois formatos indicados no manual que não deu certo no CL10 e SUSE 10.1.

  su - zago
  scp -r /backup/ter zago@192.168.1.53:/home/copias/teste
  
  scp -i /home/zago/.ssh/authorized_keys -r /backup/ter zago@192.168.1.53:/home/copias/teste

tar + ssh - salvar backup em outra maquina da rede

Copia de partições, backup e restore de instalações

Pode se fazer em duas partes, criar o tar e depois enviar via ssh, com boot pelo Live CD/DVD não é possível criar arquivos grandes, a solução é salvar direto na maquina remota, o uso de Live CD é muito prático, principalmente na copia ou restauração de instalação, também nos casos de copia de arquivos do restou de instalações danificadas que não inciam o sistema local, pelo Live CD pode acessar o disco e salvar a copia em maquina remota via ssh, o uso tar é opcional, diminue o tamanho dos arquivos e consumo de banda.

O tar acessa somente discos montados, portanto precisa montar a partição que deseja fazer a copia, sem montar o tar não tem acesso aos arquivos, mas não deve estar rodando o sistema, diferente do "dd" que não deve montar a partição, o processo mais seguro é fazer boot pela outra instalação que tenha no HD, caso seja partição única ou não tenha como fazer boot por outro HD ou partição, então procure fazer o boot com uma distro que roda direto do CD, por exemplo o Kurumin, os comandos a seguir foram aplicados para copia da instalação do SUSE 10 na partição /dev/hda3 com sistema de arquivos riserfs, feito o boot pelo CD do Kurumin, configurar a rede e executar estes comandos abaixo para salvar a copia em outra maquina da rede, neste exemplo a maquina remota tem ip 192.168.1.120, comandos executados como root no konsole do Kurumin.

  mount /dev/hda3 /mnt/hda3 
  tar zcvf - /mnt/hda3 | ssh zago@192.168.1.120 "cat >  suse10-hda3-ecs741.tar.gz"
  umount /mnt/hda3 

Comentando; estas linhas de comando, monta a partição de origem da copia, e salva na maquina remota com ip 192.168.1.120 o arquivo suse10-hda3-ecs741.tar.gz dentro do home do usuário zago, arquivo criado no destino;

-rw-r--r-- 1 zago zago 923955200 2005-12-18 16:21 suse10-hda3-ecs741.tar.gz

Explicando de outra forma, quando está com dois HD na maquina ou tem mais de uma partição, pode executar a tarefa acima por partes, execute os comandos na partição ou ponto de montagem diferente da origem da cópia, os comandos abaixo tem o mesmo resultado das duas linhas acima; cuidado para não salvar no mesmo local de origem.

  cd /root
  mount /dev/hda3 /mnt/hda3 
  tar zcvf suse10-hda3-ecs741.tar.gz /mnt/hda3 
  scp suse10-hda3-ecs741.tar.gz zago@192.168.1.120:~/
  rm -rf suse10-hda3-ecs741.tar.gz
  umount /mnt/hda3

Outra opção é montar um compartilhamento (NFS) e executar o comando neste ponto de montagem, considerando que tenha um diretório remoto montado em /mnt/bkremoto, então pode executar estes comandos com resultado similar ao da primeira opção tar+ssh.

  cd /mnt/bkremoto
  mount /dev/hda3 /mnt/hda3 
  tar zcvf suse10-hda3-ecs741.tar.gz /mnt/hda3 
  umount /mnt/hda3

Operação inversa, recuperar a instalação, o principio é o mesmo, fazer boot pelo Live CD, montar a partição que deseja recuperar, fazer backup da instalação antiga, apagar todos os arquivos e executar o comando que pega o .tar.gz remoto para descompactar no ponto de montagem; não consegui recuperar direto rodando Kurumin via CD, minha solução é fazer em duas estapas, copiar o backp para a maquina local e depois descompactar no ponto de montagem, segue os comandos executados como root no konsole da maquina local;

  mount /dev/hda3 /mnt/hda3 
  cd /mnt/hda3
  # observe o ponto no final da linha abaixo, indica que vai salvar no diretório local ou indique o caminho
  scp zago@192.168.1.120:~/suse10-hda3-ecs741.tar.gz .
  tar -zxvf suse10-hda3-ecs741.tar.gz -C /
  umount /mnt/hda3
  # pode apagar a copia local do suse10-hda3-ecs741.tar.gz, caso tenha espaço sobrando, considere manter esta copia. 

Onde; zago@192.168.1.120, zago é usuário na maquina remota 192.168.1.120 que guarda o arquivo de backup.

Deve existir alguma forma mais elegante, como falhou a tentativa direta e este procedimento resolve meu problema, copiar o arquivo para a maquina local e despois descompactar no ponto de montagem, então paro por aqui, mas vale tentar outras opções como via NFS para não ocupar espaço local com a copia do arquivo, pode complicar quando não tem espaço sobrando no HD local nem NFS, nestes casos precisa pesquisar por alternativa que faça direto via tar+ssh.

Cópia de diretórios ou arquivos

Neste tópico, copia de arquivos ou diretórios da maquina local e salvar em maquina remota, estes comandos podem ser executados no console da própria maquina, pode copiar e colar, usar em script em conexões via ssh sem senha, ou simplesmente digitar na linha de comando, diferente do exemplo anterior (cópia da instalação), o principio é o mesmo, a diferença está na montagem, copia completa do sistema não deve ser feita com sistema montado, enquanto a cópia de arquivos locais não tem este problema e já tem acesso aos mesmo, portanto, pode executar a linha de comando direto, exceto com boot pelo Live CD que requer a montagem da partição para acesso aos arquivos e ou diretórios.

Fique atendo quanto às permissões, o usuário local precisa pelo menos ter acesso de leitura, tenha cuidado com backjup de arquivos em uso, seja banco de dados ou arquivos de usuários.

Exemplo, copiar da maquina local o conteúdo de /home/zago/guiaz/samba, criar e salvar no destino (maquina remota) o arquivo samba.tar.gz dentro do /home/antonio, 192.168.1.164 é o IP da maquina remota e antonio é o usuário remoto, na maquina local é outro usuário com permissão permissão de leitura no diretório local, cuidado com as permissões, tanto de leitura local como de gravação remota.

tar zcvf - /home/zago/guiaz/samba | ssh zago@192.168.1.164 "cat > samba.tar.gz"

Existem muitas maneiras de montar esta linha de comando, segue alguns exemplos;

Usando um nome de arquivo em variável, pode fixar um nome ou pegar dados da maquina local para formar o nome, útil em backup, exemplos; TMPFILE=${HOSTNAME}, TMPFILE=samba, requer mais uma linha para criar a variável, exemplo com nome de arquivo igual ao nome da maquina local.

  TMPFILE=${HOSTNAME}
  tar cf - /home/zago/guiaz/samba | ssh zago@192.168.1.164 "gzip -c > ${TMPFILE}.tar.gz"

No exemplo acima, o arquivo destino tem o nome igual ao da maquina de origem, exemplo faqcl10.zago.eti.br.tar.gz

O caminho completo não precisa ser informado quando o arquivo ou sub-diretório está dentro do diretório corrente, exemplo do comando executando dentro de /home/zago/guiaz;

tar zcvf - samba | ssh zago@192.168.1.164 "cat > samba.tar.gz"

Também pode copiar varios arquivos, como pode usar dd para salvar no destino, (adaptei este exemplo da Dicas-l, minha colinha para trocar somente nomes de arquivos)

`` tar -czvf - arquivo1 arquivo2 arquivo3 | ssh zago@192.168.1.164 dd of=/home/zago/arquivao.tar.gz ``

dd + ssh - salvar imagem de partição em maquina remota, copia via rede

Ideal quando não tem espaço suficiente na maquina local para salvar a imagem

Como salvar a copia de partições em outra maquina da rede, mais exemplos e detalhes no tuturial;
http://www.zago.eti.br/boot-dual-win-e-linux.html

Nunca use partições montadas para este tipo copia ou recuperação, quando for o caso de aplicar na única partição do disco, faça boot por um live-CD, ou conecte o HD como secundario em outra maquina, com a partição objeto da copia o recuperação desmontada, aplique os comandos, lembre que estes comandos requer ajuste para adequar ao seu ambiente, tais como partição, usuário, IP e etc...

Tenha muito cuidado, criar imagem da partição não danifica nada, pode ocorrer de não criar a imagem ou não ter o resultado esperado, recuperar instalação com "dd" vai sobrescrever todos os setores da partição, não tem mais como recuperar arquivos da instalação anterior, nem com ferramentas milagrosas para recuperação de dados, portanto faça backup do que restou antes de qualquer ação, também fique atento ao formato das imagens, se usar compactação na copia vai ter que usar também na recuperação, procure praticar em ambiente de testes, procure concentrar e entender o que está fazendo, tudo depende de voce, faça por sua conta e risco.

Cuidado para não confundir a maquina destino com a maquina local, se errar o destino poderá sobrescrever na partição da maquina local em lugar da maquina remota.

Neste tópico estou considerando o uso de HD IDE na origem, no destino não importa o tipo de HD, caso utilize HD SCSI ou Serial ATA que usa device diferente de hdaX, então altere as linhas de comando nos exemplos a seguir para o seu device em uso.

O uso de compactador é opcional, quando usar requer o pacote instalado, fique atento às mensagens de erro, principalmente quando retorna comando não encontrado, pode faltar a instalação ou não estão no path.

Não tem espaço no HD local?, então salve a copia em outra maquina da rede, tem varias opções, prefiro conecetar um CDROM e fazer boot pelo Kurumin, acho perfeito para salvar e recuperar imagens de partições guardadas em outra maquina da rede, quando tem mais de uma partição ou HD, pode fazer boot pela outra partição e neste caso pode montar um compartilhamento NFS ou até mesmo windows e salvar no ponto de montagem, só precisa montar o compartilhamento e entrar no diretório montado para executar o comando, considere que um ponto de montagem será tratado como um diretório local, portanto muito simples e fácil de usar, mesmo assim acho mais prático a dupla Kurumin+ssh, normalmente temos este serviço já configurado e portanto não requer comandos de montagem nem configuração especial para exportar ou compartilhar diretórios, para criar a imagem em outra maquina via ssh, o formato é simples;

Sem compactar a imagem;

dd if=/dev/hda1 | ssh zago@192.168.1.120 dd of=copia-a7n8-xp.img

Forneça a senha do usuário-destino quando solicitada.

Recuperar a instalação (restore) com a imagem em outra maquina da rede, quando acessar a imagem em compartilhamento montado, entre no diretório onde se encontra a imagem e dispare o comando, tem exemplos no tutorial indeicado acima sobre uso em diretório local, ou via ssh (na maquina remota) no mesmo diretório onde está a imagem, use neste formato de linha de comando;

OBS, não é recomendado o uso de root, neste exemplo precisa dos poderes de root para gravar, como user comum vai dar erro de permissão, ajuste a seu modo o acesso ao "dd" para user comum gravar no device, em minhas instalações cofiguro o ssh para aceitar conexão direta de root, observe a utilização do root nos exemplos a seguir;

Recuperar a partir de imagem sem compactação;

cat a7v8x-dd-winXPhda1.img | ssh -l root 192.168.1.192 '(dd of=/dev/hda1)'

Este exemplo e copia e recuperação se aplicam a qualquer tipo de partição, independe do sistema operacional ou sistema de arquivos, os comandos acima fazem a copia e restaura a instalação do Win XP instalado em sistema NTFS, o mesmo formato de comando funciona em partições Linux, tenha o cuidado de copiar todas as partições do sistema e no destino precisa de espaço livre superior ao tamanho das partições que deseja copiar.

Procure por mais exemplos no Google, tem muitas opções e formato de linha de comando, na caixa de pesquisa tente algo como; dd+ssh

screen + ssh - recuperar conexão

Como usar screen;

Muito simples, execute; screen, se falhar, instale o pacote screen.

dentro do prompt dele execute o programa ou script, para sair de deixar o programa rodando, pressione as teclas

CTRL+A e depois d - Ctrl + a + d

isto roda screen em segundo plano e volta ao console normal, para reconectar, execute

screen -R

Exemplo com mais detalhes, no console normal execute; screen, exibe uma mensagem, basta enter para continuar e cair de volta na linha de comando, parece que voltou ao console mas está rodando dentro de uma sessão screen que tem o prompt igual ao console, a execução de programas ou scripts na linha de comando do screen, são executados dentro de uma sessão screen, para executar, seu programa ou script, basta dar o comando como se faz no console normal, exemplo, usar wget para baixar o ISO do kurumin, ótimo para usar outra maquina, por exemplo o micro do firewall que fica ligado à noite e fins de semana, na saída do expediente, faça uma conexão via ssh, e depois acompanhe remotamante ou no inicio do dia seguinte, recupere a sessão do screen para ver os resultados, aqui usei o exemplo do wget, o mesmo principio se aplica em scripts de backup e outros programas, exemplo de linha de comando para baixar o Kurumin, execute screen e depois;

wget ftp://ftp.las.ic.unicamp.br/pub/kurumin/kurumin-6.0-alpha4.iso

Na tela continua as mensagens do wget, caso queira encerrar a conexão e manter o download, não tem problema, pode sair do screen e depois encerrar a conexão, fazer logoff ou fechar o console.

Sair do screen e manter o programa rodando, pressione as teclas CTRL+A, solte e depois tecle d

Isto volta ao console normal do sistema, e exibe a mensagem [detached], isto inidica que saiu da sessão do screen, mas ele continua rodando, agora pode fechar o terminal (console), fazer logout ou encerrar a conexão remota via ssh que o programa continua rodando até o fim...

Reconectar na sessão existente, a que foi fechada anteriormente, pode voltar na tela e continuar acompanhando as mensagens ou dar comandos, recuperar (voltar na tela do screen), pode ser feita a qualquer momento e de qualquer local, a partir do mesmo console, ou até mesmo de outra conexão remota via ssh, até mesmo de outro computador, faça sempre com o mesmo usuário que disparou o comando inicial, para se conectar, (reconectar) na sessão screen já existente, execute;

screen -R

Prontinho, de volta na tela como se não tivesse saído de lá, com todas as mensagens no console como se tivesse mantido a conexão o tempo todo, serve para conferir mais tarde se terminou normal, ver as mensagens no console, inclusive as mensagens geradas durante o tempo que estava desconectado.

Pode abrir varias sessões, para facilitar procure nomear as sessões com -S nomeprocesso, (-S sessionname) e recuperar com -r nomeprocesso (-r sessionowner/[pid.tty.host])

  screen -S sshtal
  screen -S torrenttal
  
  screen -r sshtal
  screen -r torrenttal

Isto é um resumo muito simples, veja no manual que tem muito mais....

Instalar, procure na sua distro pelo pacote screen, resultados no console do SUSE 10

  smart search screen
  
  screen - A program to allow multiple screens on a VT100/ANSI Terminal
  screen-debuginfo - Debug information for package screen
  

consulte o manual, man screen, tem muitas opções...., veja quantas linhas;

  zago@suse64:~> man screen | wc -l
  3423

Alguns tutoriais em português; no Google tem muito mais...

Screen, O Gerenciador de Janelas do Modo Texto
Tutorial e modelo de configuração do Aurelio
http://aurelio.net/doc/sem-mouse-HOWTO.html#toc20
http://aurelio.net/doc/coluna/coluna-07.html
http://aurelio.net/doc/coluna/coluna-08.html

A Vida em Modo Texto: screen
http://www.dicas-l.com.br/dicas-l/20041012.php
http://www.piterpunk.hpg.ig.com.br/artigos/screen.html

nohup + ssh - rodar processo em segundo plano

nohup é útil para deixar processo rodando em maquina remota, exemplo de download fora do horário de expediente, seja via wget ou bittorrent, script de backup ou qualquer outra tarefa demorada que não requer interação com o usuário, basta executar a linha de comando e encerrar a conexão que o processo continua atá o fim, tem um log, grava os resultados no arquivo nohup.out para posterior verificação ou acompanhe com "tail -f" enquanto são gravadas no arquivo.

Faça a conexão via ssh, inicie a linha de comando com nohup espaço mais a linha de comando que usaria normalmente no console, depois feche a conexão que o processo continua em execução, exemplo de uso com wget, o principio se aplica a outros programas e scripts, aqui o wget serve somente como exemplo de download da ISO do Kurumin, faça uma conexão via ssh com a maquina remota e no console execute;

nohup wget ftp://ftp.las.ic.unicamp.br/pub/kurumin/kurumin-6.0-alpha4.iso

este comando retorna;

  linux:~ # nohup wget ftp://ftp.las.ic.unicamp.br/pub/kurumin/kurumin-6.0-alpha4.iso
  nohup: appending output to `nohup.out'

Pode encerrar a conexão que o processo continua rodando até concluir a tarefa, neste caso até concluir o download.

Observe que os resultados são desviados para o arquivo nohup.out este arquivo é criado no diretório corrente, no mesmo que disparou o comando, para acompanhar as mensagens, use tail -f nohup.out, pode encerrar e refazer a conexão de outro local ou outro micro qualquer e continuar acompanhando as mensagens, mesmo depois de encerrada a tarefa, os logs continuam em nohup.out, portanto acessíveis a qualquer momento, útil para acompanhar o resultado posteriormente, em script de backup com tar, use o modo verbose -v para gerar as mensagens.

Instalar nohup, procure no pacote coreutils, veja também o manual man nohup e nohup --help, parte do man no CL10

  NOME
         nohup - executa um comando imune a interrupções de conexão, com a saída
         para um dispositivo não tty.
  
  SINOPSE
         nohup comando [arg...]

ssh sem senha - para comandos repetitivos e scripts

Pode eliminar a digitação de senhas, principalmente em conexões automatizadas com scripts ou conexões repetitivas, precisa criar a chave e copiar para a outra maquina, segue os comandos prontos para copiar e colar, claro que precisa ajustar para seu usuário e IP da maquina remota, basta copiar e colar as linhas abaixo, dar enter duas vezes em resposta à mensagem que pede a frase.

Os comandos são executados na maquina local pelo usuário que vai fazer a conexão, requer o sshd rodando na maquina remota para copia da chave, a primeira linha cria a chave, a segunda exporta e faz a copia para a maquina remota, a terceira faz a copia na maquina e local e prontinho, comandos que utilizo em instalações do CL10 e SUSE 10.1

  ssh-keygen -t dsa -f ~/.ssh/id_dsa
  cat ~/.ssh/id_dsa.pub | ssh zago@192.168.1.120 'cat - >> ~/.ssh/authorized_keys'
  cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

Prontinho para conectar sem digitar a senha, o formato da linha de comando não muda, somente elimina a necessidade de digitar senhas, ideal para uso em scripts e entre maquinas com conexões repetitivas.

Para as demais conexões continua tudo normal, quando tiver problema com alguma chave, não apague o ~/.ssh para não remover esta chave, edite o arquivo ~/.ssh/known_hosts e remova a linha que inicia com o IP problemático.

Sobre segurança e outros cuidados, continue pesquisando, voce sabe o que tem a proteger!.

Tutoriais relacionados a ssh sem senha;

http://www.g2ctech.com/artigos/ssh-sem-senha.html
http://www.g2ctech.com/artigos/ssh-sshagent.html

SSH para clientes Windows - excelente tutorial em português.
http://www.g2ctech.com/artigos/ssh-windows.html

em inglês - sobre chave publica.
http://www.akadia.com/services/ssh_agent.html

veja também estes links:
http://www.guiadohardware.net/tutoriais/terminais_leves/03.asp

Tente o F-Secure SSH. Com a versão 5.2 você consegue até transferir arquivos com muita facilidade.

sshpass - passar senha via arquivo ou linha de comando

Non-interactive ssh password auth

Passar senha na linha de comando e scripts.

http://sourceforge.net/projects/sshpass/

Ambiente de teste, SUSE 10.1 instalado como estação de trabalho, com perfil KDE.

Não encontrei rpm, a solução foi instalar a partir dos fontes.

Para compilar precisa instalar make e gcc, via smart execute.

  smart install make -y
  smart install gcc -y

download do pacote sshpass-1.00.tar.gz e salvar em /tmp/sshpass.

Para instalar, entre no diretório onde salvou e como root execute estas linhas de comando.

  mkdir /tmp/sshpass
  cp sshpass-1.00.tar.gz /tmp/sshpass
  cd /tmp/sshpass
  tar zxvf sshpass-1.00.tar.gz
  cd sshpass-1.00
  ./configure
  make
  make install

Depois de instalado consulte o manual man sshpass

-p passar a senha na linha de comando, ideal para usar em scripts.

-f pegar a senha em arquivo, indique o caminho e arquivo com a senha

Detalhe muito importante, só funciona entre maquinas que já tenha feito alguma conexão via ssh, não encontrei uma maneira de responder yes naquela mensagem da primeira conexão. Caso tente a primeira conexão com sshpass, ao dar enter cai para proxima linha e não acontece nada, fica com o cursor travado.

A solução é fazer uma conexão via ssh, depois sair que sshpass funciona nas demais conexões entre as maquinas.

Não funciona no console do root, em minha instalação padrão só funcionou a partir do console de usuário, caso fique com cursor travado no console do root, saia ou abre outro console como user normal, não procurei saber se isto é configurável ou não.

Alguns exemplos de linha de comando

sshpass -p senhadestino ssh usuario@ipdestino

sshpass -p minhasenha ssh zago@192.168.1.120

sshpass -p minhasenha ssh -l zago 192.168.1.120

sshpass -f /home/zago/senhasamba ssh zago@192.168.1.120

Ambiente gráfico - acesso remoto via konqueror e outros acessos.

SSH em ambiente gráfico via KONQUEROR

Digite na URL do Konqueror: fish://zago:senhadozago@192.168.1.2/home/

ou fish://zago:senhadozago@dominio.com.br/home/

Onde: zago -> é um usuário existente no destino e senhadozago é a senha do usuário 192.168.1.2 -> é o IP da maquina destino, ou use o dominio.

Acessar diretamente um diretório especifico, exemplo, servidor Apache em; 192.168.1.2/srv/www/default/html/zago

Cuidado com as permissões, neste exemplo zago é o owner (dono do diretório) e a senha sehadozago, basta digitar (ou colar) na URL do Konqueror:

fish://zago:senhadozago@192.168.1.2/srv/www/default/html/zago

fish://zago:senhadozago@www.seudominio.com.br/srv/www/default/html/

Ou efetuar login e cair no home do usuário que fez login e navegar entre os diretórios.

fish://zago:senhadozago@192.168.1.2

Requer usuário válido no destino e o servidor sshd rodando, executar o konqueror remotamente mesmo que na maquina destino não tenha o ambiente gráfico rodando, requer no minimo o konqueror instalado na maquina remota, muito prático para navegar pelos diretórios e arquivos via Konqueror para apagar, editar e movimentar arquivos e diretórios, lembre dos direitos que o usuário tenha sobre os arquivos e diretórios na maquina remota.

Completada a conexão, ajuste o Konqueror para ocupar a metade da tela e abra outro Konqueror e ajuste para ocupar a outra metade da tela, assim vai ter dois Konqueror, cada um ocupando a metade da tela, um na maquina remota e o outro na maquina local, conforme as permissões pode editar, apagar, mover ou copiar arquivos entre as janelas, ou melhor entre as maquinas, basta copiar e colar, recortar e copiar ou simplesmente arrastar de uma janela pra outra.

Automatizando a conexão, crie atalho no desktop, pode criar varios atalhos sendo uma pra cada maquina remota, no exemplo abaixo foi utilizada uma maquina da rede interna, funciona também com qualquer maquina na internet que o ssh funcione via terminal, basta ter o servidor ssh rodando, usuário e senha.

No Konqueror - CL9 e CL10 - Criar atalho para conexão via fish.

Clique em qualquer area livre do desktop pra iniciar o prcesso de criar atalho.

clique com botão auxiliar (botão direito) -> Criar Novo -> arquivo -> Link para Aplicativo --> Aba Executar -> Comando :

kfmclient openProfile filemanagement fish://zago:senhadozago@192.168.1.2/home/zago

OBS. Este caminho muda conforme a versão do konqueror, independente da versão, coloque a linha de comando no campo destinado ao nome do aplicativo ou linha de comando.

Onde: zago é um usuário valido na maquina remota, senhadozago é a senha do usuário zago na maquina remota, 192.168.1.2 é o IP da maquina remota, /home/zago é o diretório corrente na maquina remota, exemplo para o diretório remoto (/srv/www/default/html/zago/faq) torna-lo como diretório corrente na conexão use este formato:

  kfmclient openProfile filemanagement fish://zago:senhadozago@192.168.1.2/srv/www/default/html/zago/faq

Depois é só dar um clique no ícone do atalho para o konqueror fazer a conexão e abrir como diretório corrente, o diretório da maquina remota informado no comando, neste exemplo o diretório /srv/www/default/html/zago/faq, lembre das permissões e usar login e senha validos como se faz na conexão via ssh em linha de comando.

Caso não queira colocar a senha no atalho, então na caixa comando a linha neste formato:

  kfmclient openProfile filemanagement fish://192.168.1.2/home/zago

Neste formato, quando der um clique no atalho, no konqueror vai abrir uma janela para digitar a senha e completar a conexão.

Lembre que todas as maquinas que vão receber a conexão precisa do sshd rodando, veja também as permissões e as regras do firewall tem que permitir a conexão.

Pode copiar o atalho pra outra maquina ou usuário, também pode fazer copia para outro nome e editar (alterar) a linha de comando, procure pelo sub-diretório Desktop dentro do /home/usuario, todos os atalhos do desktop estão neste sub-diretório do usuário.

Veja também recursos para ftp, procure por ftp neste FAQ;
http://www.zago.eti.br/konqueror.txt

Exportar o X - Executar programas do ambiente gráfico remoto

Veja também sobre o FreeNX, tem cliente para Linux e Windows, dicas, indicações e tutoriais em;
http://www.zago.eti.br/ssh/ssh-gui.html

Executar programas remotamente em ambiente gráfico via conexão ssh.

Executar programas na maquina remota, aplicativos instalados em outra maquina, kmail, evolution, mozilla e etc.... Na maquina local tem que estar em ambiente gráfico, precisa fazer a conexão via terminal do ambiente gráfico, (konsole no KDE ou outro conforme o ambiente gráfico) na maquina local nao precisa do mesmo pacote instalado, na maquina remota não importa se iniciou em modo texto ou gráfico, o que importa é ter instalado o pacote que deseja executar e claro o servidor X(Xfree) ou X(xorg), também o servidor ssh rodando e configurado para exportar o X, com a opção X11Forwarding yes

Algumas distro como no Mandriva 2006 já vem configurado, em outras como no CL10 e Debian precisa ajustar a configuração para exportar o X (ambiente gráfico) via ssh, como fazer no Conectiva 10.

edite e faça esta alteração no arquivo: /etc/ssh/sshd_config procure pela linha: #X11Forwarding no

altere para: X11Forwarding yes

Após esta alteração precisa reiniciar o servidor ssh. service sshd restart

Na maquina cliente, que vai receber as telas do programa executado remotamente, precisa fazer a conexão com a opção -X, na linha de comando execute neste formato ssh -X user@IP

Exemplo para usuário zago conectar na maquina com IP 192.168.1.86:

ssh -X zago@192.168.1.86

onde zago é usuário valido no servidor com IP 192.168.1.86, após digitar a senha e cair na linha de comando, basta digitar o nome do programa que deseja executar, exemplo executar gerenciador de pacotes em ambiente gráfico na maquina remota para instalar programas:

synaptic

smart --gui

Navegador, cliente de e-mail ou qualquer outro pacote do ambiente gráfico.

mozilla, gnome-terminal, konqueror, evolution, kmail ...

Claro que chamando kmail na maquina remota, vai ter acesso aos e-mail do usuário na maquina remota, pode até fazer isto entre maquinas da rede interna ou via internet para acessar seu cliente de e-mail remotamente.

Passar nome do aplicativo na linha de comando da conexão, em conexões especificas para executar aplicativo, pode passar o caminho e nome do programa junto com a linha de comando da conexão, alguns exemplos para digitar ou colar no konsole;

  ssh -X -C zago@192.168.1.53 /usr/lib/kde3/bin/konqueror
  ssh -X -C zago@192.168.1.53 /usr/lib/kde3/bin/kmail

A opção -C transmite os dados compactados, economiza banda de rede, portanto opcional, cuidado que consome mais processamento, em maquinas com poucos recursos pode não valer a pena, faça testes e comparativos para avaliar a melhor opção em seu ambiente.

Localizar os executáveis, procure com whereis ou find e cole o caminho na linha de comando.

Simplificando, linha de comando para configurar sshd_config, comando para copiar e colar:

sed -i "s/#X11Forwarding no/X11Forwarding yes/g" /etc/ssh/sshd_config

reinicie o sshd service sshd restart

Feche a conexão, faça nova conexão neste formato: ssh -X zago@192.168.1.53

Quando efetuar estas alterações via conexão remota (ssh), feche a conexão para reconectar com a opção -X.

Mesmo que a maquina em uso não tenha acesso à internet, pode fazer conexão via ssh com maquina que tenha acesso para navegar, a partir do console remoto, pode chamar o navegador com a URL desejada:

konqueror www.zago.eti.br/menu.html

lynx www.zago.eti.br/menu.html

Ou em uma tacada só, conectar, chamar o konqueror, abrir um site, passar os dados da pesquisa para o Google, isto mesmo, na linha de comando já passa o que quer pesquisar para abrir o konqueror com o resultado da pesquisa, teste estes exemplos;

  ssh -X -C zago@192.168.1.120 /usr/lib/kde3/bin/konqueror gg:faq+zago
  
  ssh -X -C zago@192.168.1.120 /usr/lib/kde3/bin/konqueror www.zago.eti.br/menu.html

Xterm - abre um konsole remoto

   xterm -e ssh dominio.com.br
   xterm -e ssh ip.da.maquina.remota
   xterm -e ssh 192.168.1.53

Neste formato abre um terminal, digite a senha pra completar o login e ter na tua maquina um console da maquina remota.

Veja da documentação da distro, conforme a versão do ssh ou da distro pode ocorrer diferenças, como exemplo no CentOS 4.3 vem configurado para exportar o X com esta linha no /etc/ssh/sshd_config

`` ForwardX11Trusted yes``

rsync, unison - syncronizar com maquina remota

rsync - Sincronismo de conteúdo entre servidores.

Transferir o conteúdo de diretórios ou partições entre dois computadores.

Seleção de respostas esclarecedoras na lista linux-br.
http://www.zago.eti.br/ssh/rsync.txt
http://www.zago.eti.br/ssh/rsync-servidores.txt

Unison - resultado da pesquisa no SUSE 10.1

  Name: unison
  Summary: A file synchronization tool
  Description:
   Unison is a file synchronization tool for Unix and Windows. It allows
   two replicas of a collection of files and directories to be stored on
   different hosts (or different disks on the same host), modified
   separately, then brought up to date by propagating the changes in each
   replica to the other.

Veja também sobre alta disponibilidade e RAID.

http://www.zago.eti.br/alta_disp.txt

http://www.zago.eti.br/raid.txt

Algumas dicas, soluções de problemas.

Conexão CAINDO.

SSH perdendo conexão, inicia copia de arquivos e cai a conexão, demora no login e comportamento inesperado.....

Procure descobrir se não tem outra maquina na rede com mesmo IP.

Sempre que ocorre perda da conexão, lentidão e outros problemas inesperados, pode ser algum problema de cabos, HUB ou configuração da rede, o mais provável é outra maquina com mesmo IP, isto é fatal, até funciona por alguns segundos mas perde a conexão, basta mudar o IP que soluciona o problema, caso não resolva, verifique também se não tem outros erros na configuração da rede, rota default, DNS e outros detalhes.

Testar conexão.

Quando não tem outra maquina para testar pode usar a própria maquina, é isto mesmo, execute a linha de comando como se faz em uma conexão remota, use outro usuário da mquina e o mesmo IP da maquina local, vai conectar na própria maquina por ssh, na primeira vez responda yes por extenso e pronto, chave nova e instalação padrão Ok.

Ocorrendo erros de conexão revise o seu firewall, se o daemon está rodando e verifique os arquivos de configuração, /etc/hosts.deny, /etc/ssh/sshd_config e outros...

Variável de ambiente

Ver qual maquina esta conectada em seu micro use a variavel de ambiente $SSH_CLIENT.

Falha na conexão

Quando tentar conexão com maquina que tenha o mesmo IP que já foi utilizado em conexão anterior, receberá um aviso em inglês que diz mais ou menos, que existe alguém interceptando a conexão, que é um ataque ou violação, esta mensagem também ocorre em caso de ataque, portanto tem duas possibilidades, um real ataque ou a maquina destino não é mais a mesma utilizada em conexão anterior com este IP, isto ocorre porque mudou a chave, como não é possivel saber a causa, por segurança recusa a conexão.

Tendo certeza que não se trata de sniffer na rede ou ataque e que é provavel a troca de IP ou instalação então edite o arquivo, .ssh/known_hosts que fica no home do usuário e remova a entrada deste IP (chave velha), neste arquivo procure pelaa linha com o IP remoto que causou o problema e apague-o, ou remova o diretorio todo, depois faça a conexão que vai recriar as chaves, vai recriar como sendo a primeira conexão com esta maquina, veja o exemplo, primeiro remove o .ssh e depois conecta por ssh:

  [zago@zago zago]$ rm -rf ~/.ssh
  [zago@zago zago]$ ssh zago@192.168.1.1
  The authenticity of host '192.168.1.1 (192.168.1.1)' can't be established.
  DSA key fingerprint is 32:57:2a:2b:e6:1b:da:b2:33:fe:88:2f:33:cd:b1:91.
  Are you sure you want to continue connecting (yes/no)? yes
  Warning: Permanently added '192.168.1.1' (DSA) to the list of known hosts.
  zago@192.168.1.1's password:
  Last login: Thu Jul 18 13:22:19 2002 from 192.168.1.53

FALHA NA CONEXÃO command not found

Em uma instalação que faltou o pacote opensssh-clients, quando tentava em outras maquinas copiar arquivos pra esta maquina via ssh, ocorria nas outras maquinas a mensagem de erro: bash: line 1: scp: command not found lost connection

Este erro confunde até pra explicar, em resumo, no servidor ssh que não tem o pacote openssh-clients instaldo, vai provocar a mensagem de erro nas estações que tentar enviar arquivos via ssh pra este servidor. Na estação que executar scp pra enviar o arquivo, não tem erro algum, mas a impressão é de um erro local, mesmo com a falta do pacote openssh-clients, funciona pra conexão remota mas não funciona pra copiar arquivos, pra resolver o problema faça a instalação destes pacotes:

apt-get install openssh openssh-clients openssh-server

Explicando a mensagem de erro: bash: line 1: scp: command not found

Quando instalei somente os pacotes openssh e openssh-server, conseguia fazer conexão por ssh, executar comandos na maquina remota, mas não conseguia copiar aquivos com scp, muito estranho, tentei copiar aquivos do CL9 pro CL10 e no CL9 retornava a mensagem de erro: (bash: line 1: scp: command not found), então fiz os seuintes testes:

copiar arquivo com ssh pra própria maquina rodando CL9 funciona direitinho como também pra outras maquinas com CL9 e CL10 instalado com perfil desktop corporativo, veja resultado:

  zago@mail zago]$ scp sm56 zago@192.168.1.53:/tmp
  zago@192.168.1.53's password:
  sm56                 100% |*****************************************************************************|  2531       00:00

Ao executar o mesmo comando na mesma maquina mas apontando pro IP da maquina com CL-10 que também está com o sshd rodando, retorna o erro:

  [zago@mail zago]$ scp sm56 zago@192.168.1.1:/tmp
  zago@192.168.1.1's password:
  bash: line 1: scp: command not found
  lost connection

Na maquina com CL10 que tinha instalado os pacotes openssh openssh-server, instalei também o pacote openssh-clients e resolveu o problema.

Após instalar mais este pacote, sem reiniciar o sshd, voltei pra maquina com CL9 e executei a mesma linha de comando: scp sm56 zago@192.168.1.1:/tmp e funcionou sem mensagem de erro.

Indicações - Tutoriais e documentação em geral sobre ssh

Tutorial em Português - Guia Foca GNU/Linux - Capítulo 15 - Servidor ssh
http://focalinux.cipsga.org.br/guia/avancado/ch-s-ssh.htm
Recuperando uma sessão SSH - Tutorial com script, pode sair de uma conexão e voltar de onde parou, utilizando o screen.
http://www.piterpunk.hpg.ig.com.br/artigos/screen.html

Bloqueio de ataques em servidore SSH, limita o numero de tentativas e outros recursos.
http://denyhosts.sourceforge.net

howtoforge, digite ssh na caixa de pesquisa (em inglês)
http://www.howtoforge.com/howtos/linux

Mais dicas, FAQ, tutoriais e indicações sobre ssh
http://www.zago.eti.br/ssh/ssh-gui.html
http://www.zago.eti.br/ssh/
Página principal deste site (FAQ)
http://www.zago.eti.br/menu.html