Skip to content

Servers

Credentials

SSH passwords, key passphrases and Git access tokens are each entered once and used for every connection and deploy after. You choose where they're kept, for the whole app.

Two places to keep them

Choose Credentials in the Servers window:

  • OS keychain, the default: macOS Keychain, Windows Credential Manager, or Secret Service or KWallet on Linux. Each secret is tied to your login, and Native VM keeps none of it itself.
  • Encrypted on this computer: in credentials.sqlite3 in the app's data folder, each value sealed with AES-256-GCM. The key is 256 random bits in credentials.key beside it, readable only by you. A copy of the database alone reveals nothing.

Every field that asks for a secret says where it will be kept.

Switching between them

Changing the choice moves every credential: the new copy is written before the old one is removed, and any that can't be moved stay readable where they were and are named. On a computer with no usable OS keychain, Native VM keeps everything in its encrypted store and the Credentials dialog says why.

ssh-agent

A third way, ssh-agent, appears only for servers that already use it: those imported from ~/.ssh/config without an IdentityFile. New servers are offered a key file or a password.

Key files

  • Never copied. Native VM stores the file's path and reads it when it connects. It never holds key material, and no copy of your key exists anywhere but your own file.
  • The only key offered. When you choose a key file, it's the only key tried, like OpenSSH's IdentitiesOnly yes. Otherwise a loaded agent could use up the server's sign-in attempts before your chosen key is ever tried.
  • Passphrases are detected. Native VM reads the file to see whether it's protected, and only asks for a passphrase when it is.

What's never done with a secret

  • It's never written in plaintext, to a config file, or to the inventory of servers.
  • It's never logged.
  • It's never put on a command line on the server, where ps would show it to every user. Secrets travel on standard input or in the environment instead.

Git access tokens

Tokens for private repositories are kept the same way, one per app, on this computer only. They're never written to the server. Removing an app with its files, or making its code public, deletes its token.