# SSH access and keys
Source: https://docs.webgee.com/en/wordpress-cloud/ssh-access





Each website container accepts SSH connections, which also gives you SFTP and
WP-CLI. Applies to all WordPress Cloud packages.

Go to **Advanced** → **Developer tools**.

## Add a public key [#add-a-public-key]

<img alt="The SSH key manager, before any key is uploaded" src="__img0" />

Under **SSH key manager**, upload the **public** half of your key pair — the
file ending `.pub`.

If you do not have one, generate it on your own machine:

```bash
ssh-keygen -t ed25519 -C "you@example.com"
```

That writes `~/.ssh/id_ed25519` and `~/.ssh/id_ed25519.pub`. Upload the `.pub`
file only.

<Callout type="warn">
  Never upload or share the file without the `.pub` extension. That is your
  private key — anyone holding it can log in as you, and no passphrase on the
  server side protects you once it has leaked.
</Callout>

## SSH password authentication [#ssh-password-authentication]

The **SSH password authentication** section controls whether the container also
accepts a password.

Keys are stronger than passwords and cannot be brute-forced from the internet.
Set up key access, confirm it works, then decide whether you still need password
authentication — and if you do not, turn it off.

## Connect [#connect]

Use the website's own address as the host, with your key:

```bash
ssh username@example.com
```

Once connected, WP-CLI is available and your document root is `public_html`:

```bash
cd public_html
wp plugin list
```

## SFTP [#sftp]

Any SFTP client — FileZilla, Cyberduck, an editor's remote plugin — can use the
same key. Prefer this over creating an
[FTP account](/en/wordpress-cloud/files-and-ftp): the session is encrypted end
to end, and there is one less credential to manage.

## Related [#related]

* [Manage files and FTP accounts](/en/wordpress-cloud/files-and-ftp)
* [Cron jobs](/en/wordpress-cloud/cron-jobs)
