# Ligar-se por SSH

O seu VPS Pro abre-se com a sua **chave SSH**: um par de ficheiros criado no seu computador, cuja parte **pública** regista na sua área de cliente. A parte **privada** fica no seu computador e não se transmite a ninguém, incluindo a nossa equipa.

## Criar a sua chave

Em macOS, Linux e Windows 10 ou 11 (PowerShell ou o Terminal), um único comando:

```
ssh-keygen -t ed25519
```

Aceite a localização proposta e escolha uma frase de acesso para proteger a chave. Aparecem dois ficheiros na pasta `.ssh` da sua conta:

* `id_ed25519`: a sua chave **privada**, que fica consigo;
* `id_ed25519.pub`: a sua chave **pública**, a que regista. Cabe numa linha que começa por `ssh-ed25519`.

Para apresentar a chave pública e copiá-la:

```
cat ~/.ssh/id_ed25519.pub
```

## Registar a sua chave na área de cliente

1. Abra [my.simafri.com](https://my.simafri.com/), secção **VPS**.
2. No cartão do seu servidor, cole a sua chave pública em **As suas chaves públicas, uma por linha**.
3. Clique em **Guardar as chaves**.

A sua chave é instalada no servidor dentro de um minuto, e o cartão indica-o: **Instaladas no servidor a** seguido da data, com a impressão digital de cada chave (`SHA256:...`, a mesma que apresenta `ssh-keygen -lf ~/.ssh/id_ed25519.pub`). Se a registar durante a preparação do servidor, a chave é instalada na criação deste.

Convém saber:

* até **10 chaves** por servidor, uma por pessoa ou por computador;
* tipos aceites: **ed25519**, **RSA** de pelo menos 2048 bits, **ECDSA**, e as chaves de segurança físicas (`sk-ssh-ed25519`, `sk-ecdsa`); o formato PuTTYgen também é aceite;
* cada gravação **substitui** o conjunto das chaves registadas: cole todas as que pretende manter;
* o proprietário da conta e os **gestores** registam as chaves; um **operador** consulta-as (ver [Membros e funções](https://docs.simafri.com/pt/espace-client/membres-et-roles/)).

As chaves registadas a partir da área de cliente ocupam o seu próprio bloco do ficheiro `/root/.ssh/authorized_keys`, entre duas linhas de referência `my.simafri.com`. O resto do ficheiro pertence-lhe: uma chave que aí acrescente pessoalmente, fora desse bloco, mantém-se no lugar.

## Ligar-se

O cartão do seu servidor apresenta o comando **Ligação SSH**, pronto a copiar:

```
ssh -p 22101 root@203.0.113.10
```

A porta, entre 22100 e 22999, é própria do seu servidor: utilize a do seu cartão. O nome do seu servidor também funciona em vez do endereço:

```
ssh -p 22101 root@app.minha-empresa.pt
```

Para um servidor cujo nome está no seu próprio domínio, esse nome responde assim que o seu registo DNS designa o seu servidor (ver [Publicar um site ou uma aplicação](/pt/vps-pro/mettre-en-ligne.md)).

### Em IPv6

Se a sua ligação à Internet tiver IPv6, chega também ao seu servidor diretamente pelo seu endereço IPv6, apresentado no cartão, na porta SSH habitual:

```
ssh root@2001:db8::101
```

### Um atalho: o ficheiro \~/.ssh/config

Para não voltar a escrever a porta e o endereço, acrescente um bloco ao seu ficheiro `~/.ssh/config`:

```
Host monvps

    HostName app.minha-empresa.pt

    Port 22101

    User root

    IdentityFile ~/.ssh/id_ed25519
```

A partir daí, `ssh monvps` basta, e o mesmo atalho serve para `scp`, `rsync`, `git` e o seu editor.

## A partir do Windows

O Windows 10 e o 11 incluem o cliente OpenSSH: abra o PowerShell ou o Terminal e cole o comando do seu cartão. O seu ficheiro de atalhos encontra-se em `C:\Users\<o seu nome>\.ssh\config`.

Com o **PuTTY**, indique o endereço e a porta do seu cartão em **Session**, o utilizador `root` em **Connection > Data**, e a sua chave privada no formato `.ppk` em **Connection > SSH > Auth > Credentials**. A chave pública apresentada pelo PuTTYgen regista-se tal como está na sua área de cliente.

## Transferir ficheiros

Com a mesma porta e a mesma chave:

```
# um ficheiro, para o servidor

scp -P 22101 archive.tar.gz root@app.minha-empresa.pt:/srv/



# uma pasta, sincronizada

rsync -avz -e "ssh -p 22101" ./build/ root@app.minha-empresa.pt:/var/www/app/
```

O `scp` indica a porta com um **P maiúsculo**. Os programas SFTP como o FileZilla ou o WinSCP ligam-se em **SFTP**, com o endereço, a porta e a chave privada do seu computador.

## Trabalhar a partir do seu editor

A extensão **Remote - SSH** do Visual Studio Code abre as pastas do seu servidor como se estivessem no seu computador: lê o seu ficheiro `~/.ssh/config`, basta escolher `monvps`. Os editores JetBrains propõem a mesma ligação através do **Remote Development**.

## Dar acesso a um colega

Duas formas de o fazer, consoante o que lhe quer confiar:

* **um acesso de administrador**: acrescente a chave pública dele ao lado da sua em **As suas chaves públicas, uma por linha** e, depois, **Guardar as chaves**;
* **um acesso limitado**: crie-lhe uma conta no servidor, com a sua própria chave:

```
adduser camille

mkdir -p /home/camille/.ssh

nano /home/camille/.ssh/authorized_keys   # cole a chave pública dele

chown -R camille:camille /home/camille/.ssh

chmod 700 /home/camille/.ssh && chmod 600 /home/camille/.ssh/authorized_keys
```

Para retirar um acesso, guarde a lista de chaves sem a dele, ou elimine a respetiva conta com `deluser camille`.

## Substituir uma chave perdida

Mudou de computador ou a sua chave privada desapareceu: crie uma nova chave com `ssh-keygen -t ed25519` e registe a nova chave pública no seu cartão, retirando a antiga. É instalada dentro de um minuto, e recupera o acesso ao seu servidor.

## O seu assistente de IA

Um assistente de IA ligado à sua área de cliente Simafri (servidor MCP `https://mcp.simafri.com/v1/mcp`) lê os seus servidores, o respetivo estado, os respetivos endereços e o comando de ligação, e regista as suas chaves **públicas** por si, com os direitos da pessoa com sessão iniciada. Uma chave privada é aí recusada, tal como na área de cliente.

## Perguntas frequentes

### «Permission denied (publickey)»: o que verificar?

1. O cartão do seu servidor indica **Instaladas no servidor a** seguido de uma data.
2. A impressão digital apresentada no cartão é a da sua chave: `ssh-keygen -lf ~/.ssh/id_ed25519.pub`.
3. O seu comando indica de facto a porta do seu cartão e o utilizador `root`.
4. Se a sua chave tiver outro nome, indique-a: `ssh -i ~/.ssh/ma_cle -p 22101 root@...`.

Descreva depois a situação ao suporte, com o comando executado e a mensagem obtida: a Assistência integral ajuda-o a restabelecer o acesso.

### A minha ligação cai quando fico inativo.

Acrescente `ServerAliveInterval 60` ao seu bloco em `~/.ssh/config`: o seu computador mantém a ligação ativa. Para um comando longo, execute-o em `tmux` ou `screen`, que o mantêm em execução mesmo depois de desligar.

### A área de cliente indica «Este texto contém uma chave PRIVADA».

Colou o ficheiro sem `.pub`. Cole o conteúdo do ficheiro que termina em `.pub`. Se a sua chave privada tiver sido enviada por engano a alguém, crie uma nova e registe a respetiva chave pública.

### Posso ligar-me com uma palavra-passe?

O seu servidor abre-se com chave SSH, o método mais seguro: uma chave não se adivinha e nunca circula. Registe uma chave por pessoa, e cada uma mantém o seu próprio acesso.
