|
|
# 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.
|
|
|
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
|
... | ... | @@ -13,7 +13,7 @@ ssh usuario@servidor |
|
|
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'''.
|
|
|
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.
|
... | ... | @@ -31,57 +31,63 @@ O processo para a criação de um novo par de chaves, em ambiente linux, é simp |
|
|
```
|
|
|
[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'''
|
|
|
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.
|
|
|
Caso esse nome seja deixado em branco, a chave vai ser instalada automaticamente no diretório __~/.ssh__, com os nomes padrão __id_rsa__ e __id_rsa.pub__. 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**.
|
|
|
Note que esse processo gera duas chaves. O arquivo sem extensão (__id_rsa__ por exemplo) é a chave **privada**, enquanto o arquivo com a extensão __.pub__ (__id_rsa.pub__, 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.
|
|
|
Durante uma conexão por ssh, você pode usar o parâmetro "__-i <caminho da chave>__" 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>
|
|
|
O ssh reconhece 3 arquivos como sendo chaves, e os procura na seguinte ordem, encerrando a busca ao encontrar o primeiro:
|
|
|
* __~/.ssh/identity__
|
|
|
* __~/.ssh/id_dsa__
|
|
|
* __~/.ssh/id_rsa__
|
|
|
|
|
|
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.
|
|
|
Caso, durante o processo de criação de uma nova chave (__ssh-keygen__), não tenha sido especificado nenhum nome para a mesma, o __~/.ssh/id_rsa__ 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.
|
|
|
(neste exemplo, substituindo o arquivo __identity__ 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.
|
|
|
Para a instalação da chave pública no servidor, é necessário colocar uma cópia da __chave>.pub__ no arquivo __~/.ssh/authorized_keys__. Note que a chave tem que ser instalada no diretório __home__ 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.
|
|
|
Do mesmo modo que a chave privada, o ssh exige que o arquivo __authorized_keys__ 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>.
|
|
|
Afim de restringir ao máximo as conexões ao servidor, é recomendado o uso da diretiva **__AllowUsers__** no arquivo __/etc/ssh/sshd_config__.
|
|
|
|
|
|
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
|
|
|
> 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]
|
... | ... | @@ -94,9 +100,9 @@ A instalação do putty é padrão. Após baixar o instalador, apenas o execute |
|
|
### 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:
|
|
|
No programa, aperte __generate__ 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'''
|
|
|
É recomendável usar esse campo para identificar o dono da chave, por exemplo **'Alexandre.brandao@webers.com.br**'
|
|
|
|
|
|
* Keypassphrase
|
|
|
Senha da chave.
|
... | ... | @@ -106,18 +112,20 @@ 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'''
|
|
|
**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.
|
|
|
Essa chave que deve ser instalada no **__authorized_keys__** 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:
|
|
|
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)
|
|
|
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.
|
... | ... | |