Monkeysphere Server Administrator README
========================================
-FIXME: distinguish between publishing a new monkeysphere-enabled host
-key and accepting user identification via the web-of-trust.
+As the administrator of an SSH server, you can take advantage of the
+monkeysphere in two ways: you can publish the host key of your machine
+so that your users can have it automatically verified, and you can set
+up your machine to automatically identify connecting users by their
+presence in the OpenPGP web of trust.
+Server host key publication
+---------------------------
+To generate and publish a server host key:
-server service publication
---------------------------
-To publish a server host key:
-
- # monkeysphere-server gen-key
- # monkeysphere-server publish-key
+ # monkeysphere-server gen-key
+ # monkeysphere-server publish-key
This will generate the key for server with the service URI
-(ssh://server.hostname). The server admin should now sign the server
-key so that people in the admin's web of trust can authenticate the
+(`ssh://server.example.net`). The server admin should now sign the
+server key so that people in the admin's web of trust can identify the
server without manual host key checking:
- $ gpg --search ='ssh://server.hostname'
- $ gpg --sign-key ='ssh://server.hostname'
+ $ gpg --search ='ssh://server.example.net'
+ $ gpg --sign-key ='ssh://server.example.net'
Update OpenSSH configuration files
----------------------------------
To use the newly-generated host key for ssh connections, put the
-following line in /etc/ssh/sshd_config (be sure to remove references
-to any other key):
+following line in `/etc/ssh/sshd_config` (be sure to remove references
+to any other keys):
- HostKey /var/lib/monkeysphere/ssh_host_rsa_key
+ HostKey /var/lib/monkeysphere/ssh_host_rsa_key
FIXME: should we just suggest symlinks in the filesystem here instead?
-FIXME: What about DSA host keys? The SSH RFC seems to require that DSA be available, though OpenSSH will work without a DSA host key.
+FIXME: What about DSA host keys? The SSH RFC seems to require implementations support DSA, though OpenSSH will work without a DSA host key.
-To enable users to use the monkeysphere to authenticate against the
-web-of-trust, add this line to /etc/ssh/sshd_config (again, making
-sure that no other AuthorizedKeysFile directive exists):
+To enable users to use the monkeysphere to authenticate using the
+OpenPGP web of trust, add this line to `/etc/ssh/sshd_config` (again,
+making sure that no other AuthorizedKeysFile directive exists):
- AuthorizedKeysFile /var/lib/monkeysphere/authorized_keys/%u
+ AuthorizedKeysFile /var/lib/monkeysphere/authorized_keys/%u
+And then read the section below about how to ensure these files are
+maintained. You'll need to restart `sshd` to have your changes take
+effect. As with any change to `sshd_config`, be sure to retain an
+existing session to the machine while you test your changes so you
+don't get locked out.
-MonkeySphere authorized_keys maintenance
+Monkeysphere authorized_keys maintenance
----------------------------------------
-A system can maintain monkeysphere authorized_keys files for it's
-users.
+A host can maintain ssh authorized_keys files automatically for its
+users with the Monkeysphere.
For each user account on the server, the userids of people authorized
to log into that account would be placed in:
- ~/.config/monkeysphere/authorized_user_ids
+ ~/.config/monkeysphere/authorized_user_ids
However, in order for users to become authenticated, the server must
-determine that the user keys have "full" validity. This means that
-the server must fully trust at least one person whose signature on the
-connecting user's key would validate the user. This would generally be
-the server admin. If the server admin's keyid is XXXXXXXX, then on
-the server run:
+determine that the user IDs on their keys have "full" validity. This
+means that the server must fully trust at least one person whose
+signature on the connecting user's key would validate the relevant
+user ID. The individuals trusted to identify users like this are
+known in the Monkeysphere as "Identity Certifiers". In a simple
+scenario, the host's administrator would be trusted identity certifer.
+If the admin's OpenPGP keyid is `$GPGID`, then on the server run:
- # monkeysphere-server add-identity-certifier XXXXXXXX
+ # monkeysphere-server add-identity-certifier $GPGID
-To update the monkeysphere authorized_keys file for user "bob", the
-system would then run the following:
+To update the monkeysphere authorized_keys file for user "bob" using
+the current set of identity certifiers, run:
- # monkeysphere-server update-users bob
+ # monkeysphere-server update-users bob
To update the monkeysphere authorized_keys file for all users on the
the system, run the same command with no arguments:
- # monkeysphere-server update-users
+ # monkeysphere-server update-users
You probably want to set up a regularly scheduled job (e.g. with cron)
-to take care of this regularly.
+to take care of this automatically.
FIXME: document other likely problems and troubleshooting techniques
Regularly refresh your GnuPG keyring from the keyservers. This can be
done with a simple cronjob. An example of crontab line to do this is:
- 0 12 * * * /usr/bin/gpg --refresh-keys > /dev/null 2>&1
+ 0 12 * * * /usr/bin/gpg --refresh-keys > /dev/null 2>&1
This would refresh your keychain every day at noon.
-Keeping your known_hosts file in sync with your keyring
--------------------------------------------------------
+Keeping your `known_hosts` file in sync with your keyring
+-----------------------------------------------------------
With your keyring updated, you want to make sure that OpenSSH can
still see the most recent trusted information about who the various
hosts are. This can be done with the monkeysphere-ssh-proxycommand
(see next section) or with the update-known_hosts command:
- $ monkeysphere update-known_hosts
+ $ monkeysphere update-known_hosts
This command will check to see if there is an OpenPGP key for
each (non-hashed) host listed in the known_hosts file, and then add
command could be added to a crontab as well, if desired.
-Using monkeysphere-ssh-proxycommand(1)
---------------------------------------
+Using `monkeysphere-ssh-proxycommand`(1)
+----------------------------------------
The best way to handle host keys is to use the monkeysphere ssh proxy
command. This command will make sure the known_hosts file is
up-to-date for the host you are connecting to with ssh. The best way
to integrate this is to add the following line to the "Host *" section
-of your ~/.ssh/config file:
+of your `~/.ssh/config` file:
- ProxyCommand monkeysphere-ssh-proxycommand %h %p
+ ProxyCommand monkeysphere-ssh-proxycommand %h %p
The "Host *" section specifies what ssh options to use for all
connections. If you don't already have a "Host *" line, you can add it
by entering:
- Host *
+ Host *
On a line by itself. Add the ProxyCommand line just below it.
----------------------------------------
First things first: you'll need to create a new subkey for your
-current key, if you don't already have one. If your OpenPGP key is
-keyid $GPGID, you can set up such a subkey relatively easily with:
-
- $ monkeysphere gen-subkey $GPGID
-
-Typically, you can find out what your keyid is by running:
+current key, if you don't already have one. If you already have a GPG
+key, you can add a subkey with:
- $ gpg --list-secret-keys
+ $ monkeysphere gen-subkey
-The first line (starting with sec) will include your key length followed
-by the type of key (e.g. 1024D) followed by a slash and then your keyid.
+If you have more than one secret key, you'll need to specify the key
+you want to add a subkey to on the command line.
Using your OpenPGP authentication key for SSH
Currently (2008-08-23), gnutls does not support this operation. In order
to take this step, you will need to upgrade to a patched version of
gnutls. You can easily upgrade a Debian system by adding the following
-to /etc/apt/sources.list.d/monkeysphere.list:
+to `/etc/apt/sources.list.d/monkeysphere.list`:
- deb http://monkeysphere.info/debian experimental gnutls
- deb-src http://monkeysphere.info/debian experimental gnutls
+ deb http://monkeysphere.info/debian experimental gnutls
+ deb-src http://monkeysphere.info/debian experimental gnutls
-Next, run `aptitude update; aptitude install libgnuttls26`.
+Next, run `aptitude update; aptitude install libgnutls26`.
-With the patched gnutls installed, you can feed your authentication sub
-key to your ssh agent by running:
+With the patched gnutls installed, you can feed your authentication
+subkey to your ssh agent by running:
- $ monkeysphere subkey-to-ssh-agent
+ $ monkeysphere subkey-to-ssh-agent
-FIXME: using the key with a single session?
+FIXME: using the key with a single ssh connection?
Miscellaneous
-------------
-Users can also maintain their own authorized_keys files, for users
-that would be logging into their accounts. This is primarily useful
-for accounts on hosts that are not already systematically using the
-monkeysphere for user authentication. If you're not sure whether this
-is the case for your host, ask your system administrator.
+Users can also maintain their own `~/.ssh/authorized_keys` files with
+the Monkeysphere. This is primarily useful for accounts on hosts that
+are not already systematically using the monkeysphere for user
+authentication. If you're not sure whether this is the case for your
+host, ask your system administrator.
If you want to do this as a regular user, use the
update-authorized_keys command:
- $ monkeysphere update-authorized_keys
+ $ monkeysphere update-authorized_keys
This command will take all the user IDs listed in the
-~/.config/monkeysphere/authorized_user_ids file and check to see if
+`~/.config/monkeysphere/authorized_user_ids` file and check to see if
there are acceptable keys for those user IDs available. If so, they
-will be added to the ~/.ssh/authorized_keys file.
+will be added to the `~/.ssh/authorized_keys` file.
You must have indicated reasonable ownertrust in some key for this
account, or no keys will be found with trusted certification paths.
-If you find this useful, you might want to place a job like this in
-your crontab so that revocations and rekeyings can take place
+If you find this useful, you might want to place this command in your
+crontab so that revocations and rekeyings can take place
automatically.