|
|
== O SSH ==
|
|
|
O SSH (ou ''Secure Shell''), é um protocolo de comunicação que permite um conexão segura entre dois computadores através de uma rede pública insegura, encaminhamento de portas e a criação de túneis, utilizando criptografação forte.
|
|
|
|
|
|
== Conexões em ambiente Linux ==
|
|
|
A forma mais simples de conexão por ssh em ambiente Linux, se dá através do comando
|
|
|
ssh -l <usuário> <servidor>
|
|
|
ou
|
|
|
ssh usuario@servidor
|
|
|
|
|
|
Onde:
|
|
|
usuário: Usuário válido no servidor remoto
|
|
|
servidor: Nome ou endereço IP do servidor remoto
|
|
|
|
|
|
Tenha em mente que não há necessariamente relação entre o usuário em uso no cliente e o usuário a ser usado na conexão, isto é, o seu login no servidor não precisa ser o mesmo login do seu computador. Por exemplo, você pode estar logado no seu computador como '''jose''' e logar no computador remoto com o usuário '''joao'''.
|
|
|
|
|
|
=== Chaves SSH ===
|
|
|
Permitir o login por ssh utilizando senhas pode criar um problema de segurança, tornando possível a quebra dessa senha por força bruta, principalmente no caso de usuários com senhas fracas (palavras de dicionário, por exemplo), senhas muito curtas ou muito óbvias.
|
|
|
|
|
|
Ainda existe o problema de, no caso de um grupo de usuários compartilharem a mesma conta, ser necessário que todos conheçam a mesma senha. Na ocorrência de uma pessoa deixar esse grupo, será necessário modificar a senha, obrigando a todos os membros do grupo a decorarem uma nova.
|
|
|
|
|
|
Por esse motivo, é altamente recomendado a utilização chaves na conexão, e a restrição ao servidor de apenas aceitar autenticações por meio de chaves. Protegendo a chave com uma senha, adiciona-se uma linha a mais de segurança, e torna invasões por força bruta inviáveis.
|
|
|
|
|
|
O ssh utiliza um esquema de chaves assimétricas para a conexão:
|
|
|
* Uma chave privada que é utilizada pelo cliente. Este arquivo deve estar presente no seu computador local.
|
|
|
* Uma chave pública instalada no servidor a ser conectado (computador remoto).
|
|
|
|
|
|
==== Criar um novo par de chaves RSA ====
|
|
|
O processo para a criação de um novo par de chaves, em ambiente linux, é simples:
|
|
|
[ladb@suporte01 ~]$ ssh-keygen
|
|
|
Generating public/private rsa key pair.
|
|
|
Enter file in which to save the key (/home/ladb/.ssh/id_rsa): '''<Nome da chave>''' ou '''ENTER''' para aceitar o default
|
|
|
Enter passphrase (empty for no passphrase): '''Senha da chave'''
|
|
|
Enter same passphrase again: '''Senha da chave'''
|
|
|
Your identification has been saved in '''<Nome da chave>'''
|
|
|
Your public key has been saved in '''<Nome da chave>.pub'''
|
|
|
The key fingerprint is: 1c:61:6c:e4:f6:6d:3a:69:6f:6e:68:b3:cd:d0:78:92 ladb@suporte01.webers
|
|
|
|
|
|
* '''<Nome da chave>'''
|
|
|
Caso esse nome seja deixado em branco, a chave vai ser instalada automaticamente no diretório <tt>~/.ssh</tt>, com os nomes padrão <tt>id_rsa</tt> e <tt>id_rsa.pub</tt>. A vantagem disso é que, se o comando for executado na máquina cliente, a chave privada já vai estar instalada.
|
|
|
|
|
|
* '''<Senha da chave>'''
|
|
|
Apesar de ser permitido que a chave não possua uma senha, é fortemente recomendado que a senha seja usada. O ssh exige que a senha tenha no mínimo 5 caracteres.
|
|
|
Note que esse processo gera duas chaves. O arquivo sem extensão (<tt>id_rsa</tt> por exemplo) é a chave ''privada'', enquanto o arquivo com a extensão <tt>.pub</tt> (<tt>id_rsa.pub</tt>, por exemplo) é a chave ''pública''.
|
|
|
|
|
|
=== Instalação da chave no lado do cliente (linux) ===
|
|
|
Durante uma conexão por ssh, você pode usar o parâmetro "<tt>-i <caminho da chave></tt>" para especificar qual chave será usada para a autentificação. Realizando a instalação da chave, esse parâmetro deixa de ser necessário.
|
|
|
|
|
|
O ssh reconhece 3 arquivos como sendo chaves:
|
|
|
* <tt>~/.ssh/identity</tt>
|
|
|
* <tt>~/.ssh/id_dsa</tt>
|
|
|
* <tt>~/.ssh/id_rsa</tt>
|
|
|
|
|
|
Caso, durante o processo de criação de uma nova chave (<tt>ssh-keygen</tt>), não tenha sido especificado nenhum nome para a mesma, o <tt>~/.ssh/id_rsa</tt> já terá sido corretamente instalado.
|
|
|
|
|
|
Casa a instalação da chave privada precise ser feita manualmente, um solução é
|
|
|
cat /lugar/onde/a/chave/está/<chave> > ~/.ssh/identity
|
|
|
chmod 600 ~/.ssh/identity
|
|
|
(neste exemplo, substituindo o arquivo <tt>identity</tt> caso ele exista.)
|
|
|
Também é necessário alterar as permissões de leitura da chave privada, caso contrário o ssh '''não''' vai considerar o arquivo.
|
|
|
|
|
|
=== Instalação da chave no lado do servidor ===
|
|
|
Para a instalação da chave pública no servidor, é necessário colocar uma cópia da <tt>chave>.pub</tt> no arquivo <tt>~/.ssh/authorized_keys</tt>. Note que a chave tem que ser instalada no diretório <tt>home</tt> do usuário que vai ser usado para a conexão por ssh. Nesse exemplo, pressupõe-se que a chave será instalada para o usuário atual.
|
|
|
cat /lugar/onde/a/chave/está/<chave>.pub >> ~/.ssh/authorized_keys
|
|
|
chmod 600 ~/.ssh/authorized_keys
|
|
|
Do mesmo modo que a chave privada, o ssh exige que o arquivo <tt>authorized_keys</tt> só tenha permissões de leitura para o dono do arquivo.
|
|
|
|
|
|
==== Caso especial ====
|
|
|
Afim de restringir ao máximo as conexões ao servidor, é recomendado o uso da diretiva <tt>'''AllowUsers'''</tt> no arquivo <tt>/etc/ssh/sshd_config</tt>.
|
|
|
|
|
|
Essa diretiva pode ser usada para especificar quais usuários podem se logar por ssh. Caso essa opção esteja em uso, é necessário listar os usuários que terão acesso ao servidor
|
|
|
|
|
|
Exemplo:
|
|
|
AllowUsers root jose joao
|
|
|
|
|
|
Essa opção permite o login dos usuários root, jose e joao.
|
|
|
Um usuário com um nome diferente disso teria a conexão automaticamente recusada.
|
|
|
|
|
|
Lembre-se de recarregar o serviço ssh caso haja alteração em seus arquivos de configuração:
|
|
|
service sshd reload
|
|
|
|
|
|
== Conexões em ambiente Windows ==
|
|
|
Para utilizar o ssh em ambiente Windows, pode-se usar o cliente de ssh "putty". [http://www.chiark.greenend.org.uk/~sgtatham/putty/ Site do putty]
|
|
|
|
|
|
É recomendado o uso do instalador completo (putty-0.60-installer.exe, quando esse howto foi escrito). O instalado completo já prepara o cliente ssh e o gerador de chaves.
|
|
|
|
|
|
=== Instalando o Putty ===
|
|
|
A instalação do putty é padrão. Após baixar o instalador, apenas o execute e siga as etapas de instalação.
|
|
|
|
|
|
=== Gerando uma nova chave ssh com o Putty ===
|
|
|
Para criar uma nova chave, use o programa PuTTYgen (Disponível em inciar » Programas » Putty)
|
|
|
|
|
|
No programa, aperte <tt>generate</tt> para criar a nova chave. O programa vai gerar aleatoriedade para gerar uma chave mais segura e então lhe apresentará a chave pública e alguns campos para personalizar a chave:
|
|
|
* Comment
|
|
|
É recomendável usar esse campo para identificar o dono da chave, por exemplo '''Alexandre.brandao@webers.com.br'''
|
|
|
|
|
|
* Keypassphrase
|
|
|
Senha da chave.
|
|
|
|
|
|
* Confirm Keypassphrase
|
|
|
Redigite a senha da chave.
|
|
|
|
|
|
Salve a chave privada com a extensão padrão (essa chave é a que precisará ser carrega pelo putty para se executar uma conexão) e envie para o administrador do servidor ssh, a chave publica do primeiro campo:
|
|
|
|
|
|
'''exemplo'''
|
|
|
ssh-rsa
|
|
|
AAAAB3NzaC1yc2EAAAABJQAAAIBxDybJ1J5QX7tlwv7qAYnV0QVCu1osWqls0CaBuk6zoFEgpK2EspA8rxI5sN+HojKX7b/pEKXITmYpLDtTlSrqu1VI
|
|
|
PckAD16dPaY2PR4Tp4OzlZapQP/7Gfa7Cd8D99uBU2M/KQPBfwz1jkYg3pr8zKykxPl5E4Lnm//W72vDnw== Alexandre.brandao@webers.com.br
|
|
|
|
|
|
Essa chave que deve ser instalada no <tt>'''authorized_keys'''</tt> do usuário a ser acessado no servidor remoto, conforme já foi descrito anteriormente.
|
|
|
|
|
|
=== Acessando um servidor ssh com o putty ===
|
|
|
Sabendo que a etapa de ''instalação da chave'' pública no servidor '''já''' foi concluída:
|
|
|
|
|
|
Primeiro, temos que carregar a chave privada no putty. Se a chave foi criada pelo próprio putty, apenas abrir a chave irá carregá-la (se a chave está com senha, ela será requisitada).
|
|
|
Se a chave foi criada pelo linux, abra o PuTTYgen e no menu ''conversions'' > ''import key'', carregue a chave privada fornecida, e então a salve no formato padrão do putty (save private key)
|
|
|
|
|
|
Por fim abra o Putty, e na guia session, coloque o IP (ou o nome) do servidor. O putty perguntará qual é o usuário a ser usado para a conexão (esse é o usuário no qual foi instalada a chave de ssh, root, joao, maria, por exemplo).
|
|
|
Se tudo ocorreu devidamente, você então terá acesso ao servidor desejado.
|
|
|
|
|
|
== Referências ==
|
|
|
* ssh man page
|
|
|
* http://en.wikipedia.org/wiki/Secure_Shell
|
|
|
* http://www.openssh.com
|
|
|
* http://www.chiark.greenend.org.uk/~sgtatham/putty/faq.html |
|
|
\ No newline at end of file |