Documentation: Also consider the use of kerberos authentication over SSH

Most documentation assumed the use of SSH public key authentication. This
change removes that assumption and adds some hints on client configuration
with OpenSSH and kerberos.

Change-Id: I4d5654a088a68afd740d3e4e91eaf15d0bbf58b1
This commit is contained in:
Gert van Dijk
2017-08-27 21:14:23 +02:00
parent a4e49d0a01
commit dc4f8d1723
13 changed files with 67 additions and 28 deletions

View File

@@ -15,7 +15,7 @@ Queries the documentation index and returns results with the title and URL
from the matched documents. from the matched documents.
== ACCESS == ACCESS
Any user who has configured an SSH key. Any user who has SSH access to Gerrit.
== SCRIPTING == SCRIPTING
This command is intended to be used in scripts. This command is intended to be used in scripts.

View File

@@ -23,7 +23,7 @@ If the caller is a member of the privileged 'Administrators' group,
all groups are listed. all groups are listed.
== ACCESS == ACCESS
Any user who has configured an SSH key. Any user who has SSH access to Gerrit.
== SCRIPTING == SCRIPTING
This command is intended to be used in scripts. This command is intended to be used in scripts.

View File

@@ -16,7 +16,7 @@ group is visible to the user. The users' id, username, full name and email are
shown tab-separated. shown tab-separated.
== ACCESS == ACCESS
Any user who has configured an SSH key. Any user who has SSH access to Gerrit.
== SCRIPTING == SCRIPTING
This command is intended to be used in scripts. Output is either an error This command is intended to be used in scripts. Output is either an error

View File

@@ -25,7 +25,7 @@ If the caller is a member of the privileged 'Administrators'
group, all projects are listed. group, all projects are listed.
== ACCESS == ACCESS
Any user who has configured an SSH key, or by an user over HTTP. Any user who has SSH access to Gerrit.
== SCRIPTING == SCRIPTING
This command is intended to be used in scripts. This command is intended to be used in scripts.

View File

@@ -108,7 +108,7 @@ limit:<n>::
will be used to cut the result set. will be used to cut the result set.
== ACCESS == ACCESS
Any user who has configured an SSH key. Any user who has SSH access to Gerrit.
== SCRIPTING == SCRIPTING
This command is intended to be used in scripts. This command is intended to be used in scripts.

View File

@@ -37,7 +37,7 @@ to 'git push', which will relay them automatically.
Deprecated, use `refs/for/branch%cc=address` instead. Deprecated, use `refs/for/branch%cc=address` instead.
== ACCESS == ACCESS
Any user who has configured an SSH key. Any user who has SSH access to Gerrit.
== EXAMPLES == EXAMPLES

View File

@@ -150,7 +150,7 @@ branch.
invocations of the SSH command are required. invocations of the SSH command are required.
== ACCESS == ACCESS
Any user who has configured an SSH key. Any user who has SSH access to Gerrit.
== SCRIPTING == SCRIPTING
This command is intended to be used in scripts. This command is intended to be used in scripts.

View File

@@ -49,7 +49,7 @@ The `set-members` command is processing the options in the following
order: `--remove`, `--exclude`, `--add`, `--include` order: `--remove`, `--exclude`, `--add`, `--include`
== ACCESS == ACCESS
Any user who has configured an SSH key. Any user who has SSH access to Gerrit.
== SCRIPTING == SCRIPTING
This command is intended to be used in scripts. This command is intended to be used in scripts.

View File

@@ -47,7 +47,7 @@ API.
Display site-specific usage information Display site-specific usage information
== ACCESS == ACCESS
Any user who has configured an SSH key. Any user who has SSH access to Gerrit.
== SCRIPTING == SCRIPTING
This command is intended to be used in scripts. This command is intended to be used in scripts.

View File

@@ -26,7 +26,7 @@ describe` documentation for details on how `<tagname>` is chosen and how
`<n>` is computed. `<n>` is computed.
== ACCESS == ACCESS
Any user who has configured an SSH key. Any user who has SSH access to Gerrit.
== SCRIPTING == SCRIPTING
This command is intended to be used in scripts. This command is intended to be used in scripts.

View File

@@ -3,15 +3,20 @@
With this error message an SSH command to Gerrit is rejected if the With this error message an SSH command to Gerrit is rejected if the
SSH authentication is not successful. SSH authentication is not successful.
The link:http://en.wikipedia.org/wiki/Secure_Shell[SSH] protocol uses link:http://en.wikipedia.org/wiki/Public-key_cryptography[Public-key Cryptography] for authentication. The link:http://en.wikipedia.org/wiki/Secure_Shell[SSH] protocol can use
This means for a successful SSH authentication you need your private link:http://en.wikipedia.org/wiki/Public-key_cryptography[Public-key Cryptography]
SSH key and the corresponding public SSH key must be known to Gerrit. for authentication.
In general configurations, Gerrit will authenticate you by the public keys
known to you. Optionally, it can be configured by the administrator to allow
for link:config-gerrit.html#sshd.kerberosKeytab[kerberos] authentication
instead.
If you are facing this problem, do the following: In any case, verify that you are using the correct username for the SSH command
and that it is typed correctly (case sensitive). You can look up your username
in the Gerrit Web UI under 'Settings' -> 'Profile'.
If you are facing this problem and using an SSH keypair, do the following:
. Verify that you are using the correct username for the SSH command
and that it is typed correctly (case sensitive). You can look up
your username in the Gerrit Web UI under 'Settings' -> 'Profile'.
. Verify that you have uploaded your public SSH key for your Gerrit . Verify that you have uploaded your public SSH key for your Gerrit
account. To do this go in the Gerrit Web UI to 'Settings' -> account. To do this go in the Gerrit Web UI to 'Settings' ->
'SSH Public Keys' and check that your public SSH key is there. If 'SSH Public Keys' and check that your public SSH key is there. If
@@ -21,6 +26,19 @@ If you are facing this problem, do the following:
described below. From the trace you should see which private SSH described below. From the trace you should see which private SSH
key is used. key is used.
Debugging kerberos issues can be quite hard given the complexity of the
protocol. In case you are using kerberos authentication, do the following:
. Verify that you have acquired a valid initial ticket. On a Linux machine, you
can acquire one using the `kinit` command. List all your tickets using the
`klist` command. It should list all principals for which you have acquired a
ticket and include a principal name corresponding to your Gerrit server, for
example `HOST/gerrit.mydomain.tld@MYDOMAIN.TLD`.
Note that tickets can expire and require you to re-run `kinit` periodically.
. Verify that your SSH client is using kerberos authentication. For OpenSSH
clients this can be controlled using the `GSSAPIAuthentication` setting.
For more information see
link:user-upload.html#configure_ssh_kerberos[SSH kerberos configuration].
== Test SSH authentication == Test SSH authentication

View File

@@ -56,8 +56,8 @@ For git operations Gerrit supports the link:user-upload.html#ssh[SSH]
and the link:user-upload.html#http[HTTP/HTTPS] protocols. and the link:user-upload.html#http[HTTP/HTTPS] protocols.
[NOTE] [NOTE]
To use SSH you must link:user-upload.html#configure_ssh[generate an SSH To use SSH you may need to link:user-upload.html#ssh[configure your SSH public
key pair and upload the public SSH key to Gerrit]. key in your `Settings`].
[[code-review]] [[code-review]]
== Code Review Workflow == Code Review Workflow

View File

@@ -9,8 +9,8 @@ Gerrit supports three methods of uploading changes:
All three methods rely on authentication, which must first be configured All three methods rely on authentication, which must first be configured
by the uploading user. by the uploading user.
Gerrit supports two methods of authenticating the uploading user. SSH Gerrit supports two protocols for uploading changes; SSH and HTTP/HTTPS. These
public key, and HTTP/HTTPS. may not all be available for you, depending on the server configuration.
[[http]] [[http]]
== HTTP/HTTPS == HTTP/HTTPS
@@ -41,13 +41,15 @@ not configured, the password can be obtained by clicking on `Generate Password`.
[[ssh]] [[ssh]]
== SSH == SSH
Each user uploading changes to Gerrit must configure one or more SSH To upload changes over SSH, Gerrit supports two forms of authentication: a
public keys. The per-user SSH key list can be accessed over the web user's public key or kerberos.
within Gerrit by `Settings`, and then accessing the `SSH Public Keys`
tab.
[[configure_ssh]] Unless your Gerrit instance is configured to support
=== Configuration link:config-gerrit.html#sshd.kerberosKeytab[kerberos] in your domain, only
public key authentication can be used.
[[configure_ssh_public_keys]]
=== Public keys
To register a new SSH key for use with Gerrit, paste the contents of To register a new SSH key for use with Gerrit, paste the contents of
your `id_rsa.pub` or `id_dsa.pub` file into the text box and click your `id_rsa.pub` or `id_dsa.pub` file into the text box and click
@@ -79,10 +81,29 @@ key's passphrase. Consult `man ssh-agent`, or your SSH client's
documentation, for more details on configuration of the agent documentation, for more details on configuration of the agent
process and how to add the private key. process and how to add the private key.
[[configure_ssh_kerberos]]
=== Kerberos
A kerberos-enabled server configuration allows for zero configuration in an
existing single-sign-on environment.
Your SSH client should be configured to enable kerberos authentication. For
OpenSSH clients, this is controlled by the option `GSSAPIAuthentication` which
should be set to `yes`.
Some Linux distributions have packaged OpenSSH to enable this by default (e.g.
Debian, Ubuntu). If this is not the case for your distribution, enable it for
Gerrit with this entry in your local SSH configuration:
----
Host gerrit.mydomain.tld
GSSAPIAuthentication yes
----
[[test_ssh]] [[test_ssh]]
=== Testing Connections === Testing Connections
To verify your SSH key is working correctly, try using an SSH client To verify your SSH authentication is working correctly, try using an SSH client
to connect to Gerrit's SSHD port. By default Gerrit runs on to connect to Gerrit's SSHD port. By default Gerrit runs on
port 29418, using the same hostname as the web server: port 29418, using the same hostname as the web server: