Authentication
A Buru user can authenticate with two methods: password and public key. Each is configured independently per user and the two can be combined into multi-factor authentication. Password authentication is accepted by every protocol (SFTP, SCP, SSH, FTP, FTPS, and Web Administration), while public key authentication is accepted only by SSH-based protocols (SFTP, SCP, SSH).
See Manage Users (Web Admin) or Manage Users (CLI) for the procedures that configure these methods on a user account.
Password authentication
The user supplies a password, which is verified in one of two modes:
- Local — the password is hashed and stored in the user database. Hashing algorithm, salt size, and rehash behavior are configured globally in the
userssection ofconfig.yaml. - Windows PRO — the password is checked against a local Windows account or an Active Directory domain account via the
LogonUserAPI. The server can additionally impersonate that Windows identity when accessing files, so NTFS permissions apply directly — see File Access & Permissions.
Windows mode comes in two flavors that differ in the type of token Windows hands back after a successful logon:
| Mode | Token reach | Windows logon details |
|---|---|---|
windowsNetwork | The resulting token is typically local-only — UNC paths such as \\server\share are usually unreachable. | LOGON32_LOGON_NETWORK. The Windows account being authenticated needs the Access this computer from the network (SeNetworkLogonRight) right. |
windowsInteractive | Mimics a local sign-in. The token can reach remote shares. Recommended unless your security policy prevents it. | LOGON32_LOGON_INTERACTIVE. The Windows account being authenticated needs the Allow log on locally (SeInteractiveLogonRight) right. |
Public key authentication
One or more SSH public keys are associated with the account. The user proves possession of the matching private key.
You can attach any number of keys to a single user — useful for rotating keys without losing access, or for letting the same user sign in from different devices.
Generating a key pair
Key pairs are generated on the client side; only the public half is ever handed to the server. The usual tools:
-
ssh-keygen— ships with OpenSSH (Windows 10/11, every Linux and macOS). Runs from any terminal.ssh-keygen -t ed25519 -C "elaine@laptop"By default the key pair is written to
~/.ssh/id_ed25519and the public half to the same path with a.pubsuffix. Protect the private key with a passphrase when prompted. -
PuTTYgen — part of the PuTTY suite. Click Generate, move the mouse to seed entropy, save the private key as a
.ppkfile, and copy the OpenSSH-formatted public key from the top text field. The Buru server accepts both OpenSSHauthorized_keyslines and SSH2/PuTTY public key files.
Only the public half (the .pub file or its contents as a string) is registered with the server; the private key must never leave the user's machine.
Hardware-backed keys
Public key authentication also supports keys held on a hardware token, so the private key never leaves the device. Common options include YubiKey, Nitrokey, SoloKey, and OnlyKey. The resulting public key is registered with Buru the same way as a software key.
Combining methods
Each method (password and public key) has an independent state of disabled, enabled, or required:
disabled— not accepted at all.enabled— accepted if offered, but not mandatory.required— the user must complete this method to log in.
The states combine as follows:
- Both
enabled— the user can log in with either method on its own. Whichever one they offer first that succeeds, lets them in. - Both
required— true multi-factor authentication. The user must present a valid password and a valid public key on every login. - One
required, the otherdisabled— only therequiredmethod is accepted.
About mixing `required` and `enabled`
You can technically set one method to required and the other to enabled, but the combination doesn't add anything: the required method is mandatory and sufficient on its own, so the enabled side is never actually checked. Web Administration abstracts this away with a single Use two-factor authentication toggle — turning it on puts both methods into required, turning it off leaves the one you picked as the sole requirement.