SSH

Tradução(s): Alemão – inglês – Francês – Italiano – Espanhol – Português Brasileiro

ToDo: direta (e traduzir) nesta página e um francês (mais completa)

Introdução

SSH significa Secure Shell e é um protocolo de início de sessão remoto seguro e outras seguro de serviços de rede através de uma inseguro network1. Veja Wikipedia-Secure Shell para informações mais gerais e ssh, LSH-client ou dropbear para as implementações de software SSH das quais o OpenSSH é o mais popular e mais amplamente utilizado2. O SSH substitui o telnet não encriptado, o rlogin e o rsh e adiciona muitas funcionalidades.

neste documento vamos usar a suíte de comando OpenSSH, também será assumido que as duas variáveis seguintes estão definidas:

remote_host=<the remote computer>remote_user=<your user name on $remote_host>

então, se você quiser usar as receitas abaixo, primeiro defina essas variáveis para o nome remoto do computador e o nome do usuário no computador remoto. Em seguida, cortar e colar os comandos abaixo deve funcionar. remote_host também pode ser um endereço IP.

Instalação

Instalação do cliente

Normalmente o cliente é instalado por padrão. Se não é o suficiente para executar como root:

apt install openssh-client

Instalação do servidor

O servidor permite ligar remotamente e é instalado executando como root:

apt install openssh-server

arquivos de Configuração

Os principais arquivos de configuração no diretório /etc/ssh :

  • ssh_config : arquivo de configuração do cliente

  • sshd_config : arquivo de configuração do servidor

além disso, este diretório contém a chave privada/pública pares de identificar a sua host :

  • ssh_host_dsa_key
  • ssh_host_dsa_key.pub
  • ssh_host_rsa_key
  • ssh_host_rsa_key.pub

Desde o OpenSSH para 5,73, uma nova chave privada/pública par está disponível:

  • ssh_host_ecdsa_key
  • ssh_host_ecdsa_key.pub

desde o OpenSSH 6.54, um novo par de chaves privadas/públicas está disponível:

  • ssh_host_ed25519_key
  • ssh_host_ed25519_key.pub

Regeneração de chaves de host

rm /etc/ssh/ssh_host_*dpkg-reconfigure openssh-server

login

senha

Se quiser fazer o login para us $remote_host como usuário $remote_user simplesmente digite

ssh $remote_user@$remote_host

e, em seguida, digite sua senha.

Se os nomes de usuário no computador local e remoto são idênticos, você pode descartar o $remote_user@-parte e simplesmente escrever

ssh $remote_host

Se esta é a primeira vez que você acessar o computador remoto, o ssh irá lhe perguntar se você tem certeza de que deseja se conectar ao computador remoto. Responda ‘ Sim ‘ depois de verificar a impressão digital do computador remoto, digite a sua senha, e o ssh irá ligá-lo à máquina remota.

usando chaves partilhadas

uma das funções do ssh é usar um par de chaves privadas/públicas para se ligar a uma máquina remota. Também conhecido como SSH keys. Este método permite-lhe aceder a uma máquina remota sem digitar sempre a sua senha. Para fazer isso, você deve gerar um par de chaves privadas/públicas em sua máquina local e depositar a chave pública na máquina remota.

para gerar a chave, use o programa ssh-keygen da seguinte forma

ssh-keygen -t rsa

este programa gera um par de chaves privadas/públicas no diretório ~/.ssh. O programa primeiro pede os arquivos de destino para as chaves, por padrão localizado em ~/.ssh. Depois é pedida uma frase-senha.

Nota: recomendamos que não deixe a frase-senha em branco. Um atacante que obtém a sua chave privada pode ligar-se às máquinas onde você depositou a sua chave pública, uma vez que a frase-senha está vazia. Escolha uma frase-senha longa e complexa.

a sua chave privada é id_rsa( não a dê a outra pessoa), a sua chave pública é id_rsa.pub.

copia a sua chave pública para uma máquina remota com o comando ssh-copy-id

ssh-copy-id -i ~/.ssh/id_rsa.pub $remote_user@$remote_host

agora pode ligar-se simplesmente à máquina remota e é pedida a senha. Uma vez feito, você se conecta ao host remoto. No caso de uma nova ligação, a frase-senha não é pedida de novo durante toda a sua sessão.

gerenciamento de chaves

usando GUI

opcionalmente, seahorse é uma aplicação GNOME que facilmente gerencia chaves de criptografia e senhas através de uma interface gráfica intuitiva (GUI). Seahorse é capaz de fazer várias operações. Como criar chaves SSH ou PGP, configurá-las e armazená-las. Continuar.

Assegurar

Servidor SSH

Por padrão, um servidor SSH é relativamente seguro. Com a ajuda de algumas boas práticas, opções de configuração e utilitários externos é possível tornar ainda mais difícil para os ‘robôs’ e crackers 4883>

Boas práticas com o Servidor SSH

  • /!\ aplicar actualizações de segurança do servidor openssh o mais rapidamente possível. O que permite proteger contra Falhas de segurança conhecidas.

  • activa a autenticação das chaves SSH apenas com senhas/frases-senha. Desactivar a autenticação apenas com senha.

  • considere o uso do fail2ban, que é um monitor de arquivos de log que Bane automaticamente um endereço IP após um número predefinido de tentativas de login falhadas. Que automaticamente protege contra ataques de Força bruta.

  • mais boas práticas para utilizar o ssh at https://lackof.org/taggart/hacking/ssh/

opções de configuração

(!) deve-se editar o arquivo /etc/ssh/sshd_config para alterar os parâmetros e, em seguida, reiniciar o servidor ssh com

service ssh restart
  • Desativar o uso de senhas para autenticação (PasswordAuthentication não).

  • desactivar com a conta root (PermitRootLogin no).

  • Só permitir o início de sessão por determinados usuários ou grupos (AllowUsers e AllowGroups)

{eu} opções AllowUsers e AllowGroups não melhorar a segurança de um servidor SSH. Mas, em certos casos, o seu uso permite resistir a um ataque de Força bruta um pouco mais.

serviços externos

  • fail2ban: permite automaticamente colocar IPs na lista negra, tentando forçar um servidor SSH com a ajuda de iptables.

  • denyhosts : como fail2ban, o denyhosts permite bloquear endereços IP tentando forçar uma conexão com o ssh. Mas em contraste com o fail2ban ele não usa iptables, mas o arquivo /etc/hosts.negar.

Cliente SSH

Boas práticas com o Cliente SSH

  • /!\ aplicar actualizações de segurança do openssh-cliente o mais rapidamente possível. O que permite proteger contra Falhas de segurança conhecidas.

  • usar a autenticação das teclas SSH. Em vez de autenticação por senha.

  • adicionar senhas/senhas fortes às suas chaves SSH. Isso reduz o risco de ataques de Força bruta.

Funções Adicionais

Exibir arquivos em GUI

Em gerenciadores de arquivos, como o Konqueror, o Dolphin, o Krusader e o Midnight Commander você pode usar o PEIXE para visualizar arquivos em uma interface gráfica, usando:

fish://username@server_name_or_ip

Comandos Adicionais

scp

scp é um utilitário de linha de comando que permite a transferência de arquivos entre duas máquinas.

  • enviar um ficheiro:
scp $source_file $remote_user@$remote_host:$destination_file
  • copiar um ficheiro para a máquina local:
scp $remote_user@$remote_host:$source_file $destination_file

sftp

modo de texto

modo gráfico

clusterssh

ssh-agent e ssh-add

ssh-agent é um utilitário para gerenciar as chaves privadas e as suas frases. A maioria dos ambientes de desktop no Debian já estará configurada para executar o ssh-agent (através dos serviços de usuário do systemd ou /etc/X11/Xsession), por isso você não deve precisar iniciá-lo manualmente.

# Check if ssh-agent is runningenv | grep -i ssh

ainda assim terá de informar o agente para gerir as suas chaves.

# List keys managed by the agentssh-add -l# Add your ssh keyssh-add ~/.ssh/your_private_key

quando uma chave privada é necessária pela primeira vez, é-lhe pedida a sua frase-senha. o ssh-agent irá então lembrar-se da chave para que a sua frase-senha não seja mais pedida.

keychain

Keychain, fornecido pelo pacote keychain, é um script shell que permite usar o agente ssh em várias sessões do mesmo computador. Em efeito, após o primeiro start ssh-agent cria um socket permanente que permite a comunicação com ssh. Este socket é referenciado apenas no ambiente da sessão em que o agente foi iniciado. Keychain permite detectar o agente e propagar o acesso a este agente para outras sessões; isto permite usar uma única instância de ssh-agent por usuário em uma máquina.

ssh-askpass

ssh-askpass é um utilitário para simplesmente a questão da senha de uma chave privada ao usá-la. Existem várias implementações:

  • x11-ssh-askpass : versão X11.

  • kaskpass : integração de ssh-askpass para o ambiente KDE

  • ssh-askpass-gnome : integração do SSH-askpass no ambiente Gnome

libpam-usb

libpam-usb é um utilitário (apenas disponível até Debian Jessie) que permite a autenticação com uma pen USB. Este pacote inclui uma utilidade útil: pamusb-agente. Este utilitário, uma vez configurado correctamente, permite carregar as teclas SSH presentes na pen USB quando esta estiver ligada e descarregá-las quando estiver desligado.

comandos remotos

se apenas quiser executar um comando no computador remoto, não precisa de se autenticar. Você pode dizer ao ssh para executar o comando sem login, por exemplo,

ssh $remote_user@$remote_host 'ls *.txt'

lista todos os arquivos com extensão .txt no computador remoto. Isto funciona com aspas simples…’como mostrado aqui, com aspas duplas”…”, e sem citações. Pode haver diferenças entre estes três casos, no entanto, ainda não documentados aqui.

SSH para o Debian a partir de outro sistema operacional

  • PuTTY é uma aplicação de emulador de terminal que pode atuar como um cliente para o ssh. É amplamente usado por usuários do Windows.

  • a Wikipédia tem Comparison_of_SSH_clients

Boas práticas de uso de SSH

Você deve ler isso: https://lackof.org/taggart/hacking/ssh/

Este documento resume muitas e boas práticas regulares de usuários SSH deve seguir, a fim de evitar comprometer a segurança de suas contas (e de toda a máquina ao mesmo tempo).

Configure o seu ~/.ssh / config para enviar apenas a chave certa.

Host master.debian.org User account IdentityFile ~/.ssh/id_rsa IdentitiesOnly yes

Troubleshooting

OpenSSL version mismatch. Construído com 1000105f, tem 10001060

Se receber uma mensagem de erro como esta ao iniciar o servidor ssh, terá de executar:

apt install openssh-server openssh-client

Also see bug # 732940.

SSH hangs

Issue

você está tentando SSH em um computador remoto. Mas durante o log-in SSH a sessão pára / congela indefinidamente. Assim, não vos é apresentado o prompt de comando. E você não é capaz de usar nenhum comando ssh : ( ao usar o modo de depuração SSH a sessão fica nesta linha debug2: canal 0: open confirm rwindow 0 rmax 32768

Possible cause

With some routers behind NAT and when using OpenSSH. Durante a configuração da sessão, após a senha ter sido dada, o OpenSSH define o campo TOS (tipo de serviço) no datagram IP. O router engasga-se com isto. O efeito é que a sua sessão SSH está suspensa indefinidamente. Em outras palavras, comandos ou conexões SSH raramente funcionam ou não funcionam.

resolução com IPQoS 0x00

até o fabricante do router reparar o firmware. Aqui está uma opção para resolver esse problema:

  1. verifique duas vezes que a sua versão openssh-server e openssh-client são 5.7 ou mais recentes. Por exemplo, a resolução abaixo deve funcionar com o Debian 7.11 Wheezy ou mais recente como vem com a versão 6.0 do OpenSSH.

  2. Editar um dos dois seguintes arquivos localizados em:

    ~/.ssh/config

    ou

    /etc/ssh/ssh_config

    Nota: o arquivo de configuração por usuário e ssh_config arquivo é para todos os usuários e de todo o sistema. Se não tiver a certeza edite o ficheiro de configuração do utilizador apropriado.

    conteúdo do Ficheiro antes de

    Host *

    conteúdo do ficheiro após

    Host * IPQoS 0x00
  3. se tiver alguma janela(s) de Terminal/consola já aberta (s). Fechem-nos a todos. Ao fazê-lo, irá fechar todas as sessões de SSH activas.
  4. não há necessidade de reiniciar o OpenSSH ou o seu Debian. Tente de novo para SSH em qualquer servidor remoto. Deve funcionar. Feito com êxito ter corrigido esse problema :)

    Graças a Joe e catmaker para esta dica :)

    a documentação Relacionada no https://www.openssh.com/txt/release-5.7

Resolução com o netcat

/!\ aviso: sugere-se que se considere a utilização dessa outra resolução com IPQoS 0x00 em vez de usar a opção netcat/ProxyCommand nc %h %p. Porque IPQoS 0x00 é a opção oficial embutida no OpenSSH. Também IPQoS 0x00 é uma forma mais direta de resolver esse problema, e potencialmente uma opção mais segura. Porque o IPQoS 0x00 usa a encriptação do SSH para transferências seguras. Compare com as transferências não criptografadas do netcat. Fontes: 1 2. Se optar por usar a opção netcat/ProxyCommand nc %h %p, Leia.

outra opção para resolver que SSH hangs issue é usar ProxyCommand nc % h % p. Para isso, siga os mesmos passos que a resolução acima com IPQoS 0x00. But replace IPQoS 0x00 with

ProxyCommand nc %h %p

Keep SSH connection alive

For security reason, by default a SSH connection is automatically closed after a set period of time. Mas em alguns casos você quer manter essa conexão aberta. Tais como armazenamento em nuvem sobre a conexão SSH.

/!\ aviso: antes de activar a opção manter a ligação ssh activa. Sugere-se considerar a segurança tanto do seu cliente SSH como do seu servidor SSH. Porque, por exemplo, há um risco de que, se seus usuários deixarem sua sessão SSH aberta, e seu computador sem vigilância e desbloqueado. Qualquer um pode aproximar-se do computador e explorar a ligação ssh aberta. Por exemplo, usando o comando passwd, e alterar a senha. E assim obter acesso ao servidor. Em outras palavras, antes de ativar a opção manter a conexão SSH viva, sugere-se usar o seu melhor julgamento e boas práticas de segurança.

Para Debian 7.X server

Steps to keep SSH connection alive.

no ficheiro SSH server edit/etc/ssh / sshd_ config e adicione o seguinte no fundo desse ficheiro.

# Keep client SSH connection alive by sending every 300 seconds a small keep-alive packet to the server in order to use ssh connection. 300 seconds equal 5 minutes.ClientAliveInterval 300 # Disconnect client after 3333 "ClientAlive" requests. Format is (ClientAliveInterval x ClientAliveCountMax). In this example (300 seconds x 3333) = ~999,900 seconds = ~16,665 minutes = ~277 hours = ~11 days.ClientAliveCountMax 3333

à medida que o utilizador raiz reiniciar o serviço SSH:

service sshd restart

por favor, note que em sistemas Debian recentes (por exemplo, Wheezy 7 com atualizações atuais a partir de Nov. 2015), o comando acima não funciona mais e retorna o erro:

sudo service sshd restartsshd: unrecognized service

no entanto, os seguintes trabalhos:

sudo service ssh restart Restarting OpenBSD Secure Shell server: sshd.

Veja também:

  • tela – multiplexador de terminal com VT100/ANSI de emulação de terminal

  • o tmux – alternativa multiplexador de terminal

CategoryNetwork CategorySoftware

Deixe uma resposta

O seu endereço de email não será publicado.