From d9909367b8ebfd634cde4cfcb9fd69e0ca25deeb Mon Sep 17 00:00:00 2001 From: decentral1se Date: Thu, 3 Feb 2022 16:45:15 +0100 Subject: [PATCH] chaotic ssh guide --- docs/abra/index.md | 2 +- docs/abra/trouble.md | 48 ++++++++++++++++++++++++++++++++++++++------ 2 files changed, 43 insertions(+), 7 deletions(-) diff --git a/docs/abra/index.md b/docs/abra/index.md index 45268fb1..112d7c8d 100644 --- a/docs/abra/index.md +++ b/docs/abra/index.md @@ -10,4 +10,4 @@ Once you've got `abra` installed, you can start your own Co-op Cloud deployment. - [Quick start](/abra/quickstart): You're ready to get started using `abra` :muscle: - [Upgrade](/abra/upgrade): You're looking for instructions on how to upgrade `abra` :arrow_heading_up: - [Hack](/abra/hack): You wan to hack on `abra` and help out with the development :woman_construction_worker: -- [Troubleshoot](/abra/troubleshoot): `abra` ain't working and you'd like to know why :boom: +- [Troubleshoot](/abra/trouble): `abra` ain't working and you'd like to know why :boom: diff --git a/docs/abra/trouble.md b/docs/abra/trouble.md index f408ed1e..dca0a0c7 100644 --- a/docs/abra/trouble.md +++ b/docs/abra/trouble.md @@ -6,13 +6,49 @@ title: Troubleshoot You can use [this issue tracker](https://git.coopcloud.tech/coop-cloud/abra/issues/new). -## I'm having a bad day, where do I find a human? - -Please see [the contact page](/intro/contact). - ## SSH connection issues? -TODO. +`abra` tries its best to learn from your system configuration or command-line input what the correct SSH connection details are for a given server. This doesn't always work out. Here are some things to try to fix it. + +First, ensure that you can `ssh ` and things work. If you can't SSH to your server then neither can `abra`. If you have a password protected SSH key, then you'll need to make sure your `ssh-agent` is running and you've added your SSH key part: + +``` +eval $(ssh-agent -k) +ssh-add ~/.ssh/ +ssh-add -L # validate loaded keys +``` + +The first thing `abra` will check for is the connection details listed in `abra server ls`. Check those details are correct. If you haven't managed to `abra server add` your server yet, then no details will appear in that list. + +`abra` will then try to read your `~/.ssh/config` entries and match the server domain against a `Host` entry. So, if you do `ssh myserver.com` and you have: + +``` +Host myserver.com + Hostname myserver.com + User myuser + Port 222 + IdentityFile ~/.ssh/my@myserver.com +``` + +Then `abra` should have all it needs to build a working SSH connection. You can validate this by passing `-d/--debug` to your commands. + +However, sometimes, you use an alias in your SSH configuration, say: + +``` +Host mys +... +``` + +So that you can simply type `ssh mys`. `abra` won't be able to match against those entries to discover connection details. You can use aliases to remedy this: + +``` +Host mys, myserver.com +... +``` + +`abra` will try to read the relevant `IdentityFile` entry from your `~/.ssh/config` but if it can't make a match, it will rely on your key being added to the `ssh-agent`. + +Due to a limitation in our implementation, `abra` uses 2 methods of making SSH connections, the main `abra` -> `remote docker` connection using `/usr/bin/ssh` which can seamlessly pick up loaded SSH keys. However, for SSH host key checking, `abra` uses an SSH library & Golang SSH internals. We're working on resolving this to a single implementation but it is tricky work. ## "abra server ls" shows the wrong details? @@ -30,4 +66,4 @@ docker context create --docker "host=ssh://@:" ## Command-line flag handling is weird? -TODO. +Unfortunately, there is a limitation in our underlying command-line library implementation for `abra` ([ref](https://github.com/urfave/cli/issues/1113)) (and more fundamentally in the design of flags in the Go programming language itself ([ref](https://utcc.utoronto.ca/~cks/space/blog/programming/GoFlagUIImportance))). We're aiming to work with upstream to resolve the flag handling but this it is not yet clear when this will be resolved.