> For the complete documentation index, see [llms.txt](https://lab-mackleaps.gitbook.io/residencia-de-software-macklaeps-upm-fci/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lab-mackleaps.gitbook.io/residencia-de-software-macklaeps-upm-fci/recursos-educacionais/ssh/conectando-a-uma-ssh.md).

# Conectando a uma SSH

As maneiras de se conectar a um servidor SSH são diversas e podem variar significativamente, dependendo do grau de segurança requerido e das especificidades da configuração do sistema-alvo. Essa flexibilidade é um dos pontos fortes do protocolo SSH, permitindo que ele seja adaptado a diferentes cenários de uso e requisitos de segurança. A seguir, vamos explorar algumas maneiras de se conectar, bem como entender o mecanismo por trás do processo.

1. Acesso através de usuário e senha:

   O acesso a um servidor via SSH usando usuário e senha é um dos métodos mais diretos e comuns de autenticação. Quando você tenta se conectar a um servidor SSH, o servidor solicita um nome de usuário e uma senha. Essas credenciais são então verificadas contra os registros do servidor. Se as informações forem corretas, o acesso é concedido. É importante notar que, durante esse processo, a senha é transmitida de forma criptografada para proteger contra interceptações.

   ```bash
   ssh usuario@endereco_do_servidor
   ```
2. Acesso passando a chave privada diretamente no comando da SSH

   Quando optamos por passar a chave privada diretamente no comando SSH, está especificando explicitamente qual chave privada deve ser usada para autenticar na sessão SSH. Essa abordagem é útil quando você não quer utilizar o ssh-agent ou quando tem várias chaves e precisa garantir que está utilizando a chave correta para cada conexão específica.

   Para passar a chave privada diretamente no comando SSH, você utiliza a opção **`-i`** seguida pelo caminho completo até o arquivo da chave privada.

   ```bash
   ssh -i /caminho/para/sua_chave_privada usuario@hostname -p 22 -A
   ```

   A flag **`-p`** é usada para especificar a porta TCP na qual o servidor SSH está ouvindo. Por padrão, o SSH usa a porta 22, mas por razões de segurança ou devido a configurações específicas de rede, o servidor pode ser configurado para ouvir em uma porta diferente. Você pode usar a flag **`-p`** para indicar ao cliente SSH que use essa porta alternativa ao estabelecer a conexão sendo esta opcional caso a porta padrão seja usada.

   A flag **`-A`** ativa o encaminhamento do agente SSH. O encaminhamento do agente é um recurso que permite ao cliente SSH encaminhar as credenciais do agente SSH (normalmente um agente rodando na máquina do usuário) através da conexão SSH para o servidor remoto. Isso é útil quando você precisa usar sua chave privada para fazer SSH para outras máquinas a partir do servidor remoto sem realmente transferir suas chaves privadas para o servidor.Esta também é opcional caso não se pretenda usar o encaminho do ssh agent.

   O arquivo da chave privada deve ter permissões restritas, geralmente recomendadas como **`600`**, o que significa que apenas o usuário proprietário pode ler e escrever o arquivo, e ninguém mais pode acessá-lo. Isto é configurado com o comando:

   ```bash
   chmod 600 /caminho/para/sua_chave_privada
   ```

{% hint style="info" %}
Este método de acesso informando a chave privada diretamente no comando ssh funciona somente se o acesso via password estiver habilitado. Caso contrário utilize o método descrito a seguir.
{% endhint %}

1. Acesso utilizando o SSH Agent

   O SSH Agent é uma ferramenta auxiliar que facilita a gestão de chaves privadas para o protocolo SSH. Quando você usa o SSH Agent, ele gerencia suas chaves privadas e fornece autenticação sem necessidade de inserir a senha de sua chave privada a cada conexão SSH ou SCP. Esse processo é especialmente útil quando você trabalha com múltiplas chaves privadas ou quando está realizando múltiplas conexões SSH que requerem autenticação. O acesso via SSH Agent ocorre em 3 etapas:

   1. O SSH Agent é iniciado no início de uma sessão do usuário ou pode ser iniciado manualmente com um comando como:

   ```bash
   $ eval $(ssh-agent)
   Output:
   Agend pid 6791
   ```

   1. Após o agente estar rodando, você adiciona suas chaves privadas ao agente com o comando **`ssh-add`**. Por padrão é recomendada que as chaves sejam armazenadas no diretório ssh na máquina cliente.

   ```bash
   ssh-add ~/.ssh/your_key
   ```

   1. Por fim podemos solicitar a conexão ao servidor através do comando ssh. Novamente as flags -p -A são opcionais.

   ```bash
    ssh usuario@hostname -p 22 -A
   ```

Mais sobre métodos de acesso SSH:

{% embed url="<https://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/connect-linux-inst-ssh.html>" %}

{% embed url="<https://access.redhat.com/documentation/pt-br/red_hat_enterprise_linux/8/html/configuring_basic_system_settings/connecting-to-remote-machines-with-ssh-keys-using-ssh-agent_using-secure-communications-between-two-systems-with-openssh>" %}

{% embed url="<https://ubuntu.com/server/docs/service-openssh>" %}

### SSH Agent e Autenticação por chaves
