Rebasely Beta: data may be purged

Git over SSH

Clone, fetch and push over SSH with a key registered on your account. Every SSH request is checked the way HTTPS requests are: the same permissions, limits and answers.

git clone git@ssh.rebasely.com:<org>/<repo>.git
git clone ssh://git@ssh.rebasely.com/<org>/<repo>.git

Set it up

The Rebasely CLI creates a key, asks you to approve it in the browser, writes the host keys and adds a block at the top of ~/.ssh/config:

curl -fsSL https://rebasely.com/install | sh
rebasely ssh setup

The CLI stays in ~/.rebasely/rebasely.mjs (or in ~/.duragit/ if you installed it before the rename to Rebasely), where ssh runs it for each connection. Or add the contents of your .pub file in your SSH key settings.

Host keys

Check that ssh shows one of these fingerprints the first time it connects. rebasely ssh setup writes them for you from /docs/ssh/known_hosts, so you never accept an unknown key.

AlgorithmFingerprintState
Ed25519SHA256:u2cDWYXb8m9Y6CU07vpIL5OT0ZRnFu4tkSEKG3FOTiwActive
ECDSA P-256SHA256:pxXTJ4zk89dv8+fbHwAdiTfHql73kbLFqkzZCE4zchwActive
RSASHA256:fbkrTu0WSHG2muDVyyiej4xVMUqInMhVAqfOOlxYHHUActive

A key marked next is announced to clients before it replaces an active one; OpenSSH learns it on its own (UpdateHostKeys).

Configure ssh yourself

Put the block for ssh.rebasely.com before any Host * block: ssh uses the first value it finds for each option, so settings in an earlier Host * would win.

Host ssh.rebasely.com
  User git
  IdentityFile ~/.ssh/id_ed25519
  IdentitiesOnly yes
  AddKeysToAgent yes
  ControlMaster auto
  ControlPath ~/.ssh/cm-%C
  ControlPersist 3s

Why a connection is refused

Before ssh signs in, Rebasely may end the connection with one line, Rebasely: SSH connection refused (<reason>). What each reason means:

ReasonWhat happenedWhat to do
ssh_offSSH is paused on Rebasely.Clone and push over HTTPS with an access token until it is back.
relay_off, relay_capThe relay on port 22 is paused (switched off, or its monthly allowance is used up).Run rebasely ssh setup, whose direct path keeps working, or use HTTPS.
direct_off, direct_budgetThe direct path that rebasely ssh setup configures is paused.Run rebasely ssh setup --relay to use port 22, or use HTTPS.
term_budgetSSH's monthly allowance is used up on both paths.Use HTTPS until the start of next month.
rate_limited, ip_limit, preauth_limit, ip_blockedToo many connections from your address, or too many that ended without signing in.Close other SSH sessions and wait up to 10 minutes; a blocked address is let in again after 10 minutes.
busy, term_start, meter_unavailable, flags_unreadableRebasely could not start your connection just now.Retry in a minute.

Why a key is refused

ssh prints Permission denied (publickey) when the key it offered is not an active key on a Rebasely account: it was never added, it was removed or blocked, it expired, it was created before you signed out everywhere, or the account is suspended. Check your keys, and run ssh -T git@ssh.rebasely.com, which greets you by account when the key works.

Adding a key fails for these keys, each with its own message:

Repository not found means the repository does not exist or the key cannot read it, for example because the key is limited to another organization or an owner blocked it there.