summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/monkeysphere.docs1
-rw-r--r--doc/README63
-rw-r--r--doc/README.admin77
-rw-r--r--doc/TODO11
-rw-r--r--man/man1/monkeysphere.114
-rw-r--r--src/common2
6 files changed, 120 insertions, 48 deletions
diff --git a/debian/monkeysphere.docs b/debian/monkeysphere.docs
index 4b8144e..595e6c8 100644
--- a/debian/monkeysphere.docs
+++ b/debian/monkeysphere.docs
@@ -1,2 +1,3 @@
doc/README
+doc/README.admin
doc/MonkeySpec
diff --git a/doc/README b/doc/README
index cda1194..7aa2850 100644
--- a/doc/README
+++ b/doc/README
@@ -1,56 +1,39 @@
-Monkeysphere README
-===================
+Monkeysphere User README
+========================
-user usage
-----------
-For a user to update their known_hosts file:
+As a regular user on a system where the monkeysphere package is
+installed, you probably want to do a few things:
-$ monkeysphere update-known_hosts
-
-For a user to update their monkeysphere authorized_keys file:
+Keeping your keyring up-to-date
+-------------------------------
-$ monkeysphere update-authorized_keys
+Regularly refresh your GnuPG keyring from the keyservers. This can be
+done with a simple cronjob.
-server service publication
---------------------------
-To publish a server host key:
+FIXME: give an example of a useful cronjob
-# 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
-server without manual host key checking:
+Keeping your known_hosts file in sync with your keyring
+-------------------------------------------------------
-$ gpg --search ='ssh://server.hostname'
-$ gpg --sign-key 'ssh://server.hostname'
+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:
-server authorized_keys maintenance
-----------------------------------
-A system can maintain monkeysphere authorized_keys files for it's
-users.
+$ monkeysphere update-known_hosts
-For each user account on the server, the userids of people authorized
-to log into that account would be placed in:
-/etc/monkeysphere/authorized_user_ids/USER
+Using monkeysphere-ssh-proxycommand(1)
+--------------------------------------
-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 users 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:
+FIXME: make a suggestion about how to integrate this in daily use.
-# monkeysphere-server trust-keys XXXXXXXX
-To update the monkeysphere authorized_keys file for user "bob", the
-system would then run the following:
+Miscellaneous
+-------------
-# monkeysphere-server update-users bob
+For a user to update their monkeysphere authorized_keys file:
-To update the monkeysphere authorized_keys file for all users on the
-the system, run the same command with no arguments:
+$ monkeysphere update-authorized_keys
-# monkeysphere-server update-users
+FIXME: where is this file located? What does this command do?
diff --git a/doc/README.admin b/doc/README.admin
new file mode 100644
index 0000000..25a7a80
--- /dev/null
+++ b/doc/README.admin
@@ -0,0 +1,77 @@
+Monkeysphere Server Administrator README
+========================================
+
+FIXME: distinguish between publishing a new monkeysphere-enabled host
+key and accepting user identification via the web-of-trust.
+
+server service publication
+--------------------------
+To publish a server host 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
+server without manual host key checking:
+
+$ gpg --search ='ssh://server.hostname'
+$ gpg --sign-key ='ssh://server.hostname'
+
+
+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):
+
+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.
+
+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):
+
+AuthorizedKeysFile /var/lib/monkeysphere/authorized_keys/%u
+
+
+
+MonkeySphere authorized_keys maintenance
+----------------------------------------
+
+A system can maintain monkeysphere authorized_keys files for it's
+users.
+
+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
+
+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:
+
+# monkeysphere-server add-identity-certifier XXXXXXXX
+
+To update the monkeysphere authorized_keys file for user "bob", the
+system would then run the following:
+
+# 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
+
+You probably want to set up a regularly scheduled job (e.g. with cron)
+to take care of this regularly.
+
+FIXME: document other likely problems and troubleshooting techniques
diff --git a/doc/TODO b/doc/TODO
index 0d72b25..a538eb8 100644
--- a/doc/TODO
+++ b/doc/TODO
@@ -94,3 +94,14 @@ Test and document what happens when any filesystem that the
Optimize keyserver access, particularly on monkeysphere-server
update-users -- is there a way to query the keyserver all in a
chunk?
+
+Create DSA authentication subkey for server during gen-key
+
+Fix behavior when add-identity-certifier fails to fetch a key from the
+ keyserver.
+
+Allow server administrators to add-identity-certifier from a key in
+ the filesystem (or on stdin, etc)
+
+Add "monkeysphere-server diagnostics" subcommand to identify missing
+ pieces of monkeysphere server administration setup.
diff --git a/man/man1/monkeysphere.1 b/man/man1/monkeysphere.1
index cd3f45e..43102d3 100644
--- a/man/man1/monkeysphere.1
+++ b/man/man1/monkeysphere.1
@@ -41,13 +41,13 @@ Update the monkeysphere authorized_keys file. For each user ID in the
user's authorized_user_ids file, gpg will be queried for keys
associated with that user ID, optionally querying a keyserver. If an
acceptable key is found (see KEY ACCEPTABILITY in monkeysphere(5)),
-the key is add to the user's authorized_keys file. If a key is found
-but is unacceptable for the user ID, any matching keys are removed
-from the user's authorized_keys file. If no gpg key is found for the
-user ID, nothing is done. This subcommand will exit with a status of
-0 if at least one acceptable key was found for a user ID, 1 if no
-matching keys were found at all, and 2 if matching keys were found but
-none were acceptable. `a' may be used in place of
+the key is added to the user's authorized_keys file. If a key is
+found but is unacceptable for the user ID, any matching keys are
+removed from the user's authorized_keys file. If no gpg key is found
+for the user ID, nothing is done. This subcommand will exit with a
+status of 0 if at least one acceptable key was found for a user ID, 1
+if no matching keys were found at all, and 2 if matching keys were
+found but none were acceptable. `a' may be used in place of
`update-authorized_keys'.
.TP
.B gen-subkey KEYID
diff --git a/src/common b/src/common
index 6fc5f33..b57b721 100644
--- a/src/common
+++ b/src/common
@@ -115,7 +115,7 @@ translate_ssh_variables() {
# test that a string to conforms to GPG's expiration format
test_gpg_expire() {
- echo "$1" | egrep -q "^[0-9][mwy]?$"
+ echo "$1" | egrep -q "^[0-9]+[mwy]?$"
}
# check that a file is properly owned, and that all it's parent