Gerrit SSH Access
#################

- `Gerrit Login <https://gerrit.opencord.org/login/%2Fq%2Fstatus%3Aopen%2B-is%3Awip>`_

Generate an :ref:`SSH Key <gerrit-user-account>` for access
============================================================

.. sourcecode:: shell

   $ ssh-keygen -t ed25519 -f id_gerrit -C 'tux@opennetworking.org'

- Login and configure gerrit

- Verify your ssh connection (manual/explicit args)
   - ssh -T -p 29418 -i ~/.ssh/id_gerrit tux@gerrit.opencord.org
      - -T # disable pseudo terminal access, simple verify
      - -p(port)
      - -i(dentity) # ssh key
   - Expect to see::
      \*\*\*\*    Welcome to Gerrit Code Review    \*\*\*\*

      Hi tux, you have successfully connected over SSH.

      Unfortunately, interactive shells are disabled.


Load your ssh key(s) to prompt for a passprase once
===================================================

.. sourcecode:: shell

   # ssh-add will prompt for the passphrase for your key.
   # This is a one-time operation per login session.
   $ ssh-add ~/.ssh/id_gerrit
   $ ssh-add -l

Create ~/.ssh/config to simplify your connections
=================================================
.. sourcecode:: shell

   FILE: ~/.ssh/config
   # -----------------------------------------------------------------------
   # AddKeysToAgent yes      auto ssh-add key for reuse this login session.
   # IdentitiesOnly yes      only use identity provided, no fallback
   # -----------------------------------------------------------------------

   Host github.com
      IdentityFile ~/.ssh/github.com/id_ed25519
      IdentitiesOnly yes
      AddKeysToAgent yes
      # (default) Port 22
      User tux

   Host gerrit.opencord.org
      Hostname gerrit.opencord.org
      IdentityFile ~/.ssh/gerrit.opencord.org/id_ed25519
      IdentitiesOnly yes
      AddKeysToAgent yes
      Port 29418
      User tux@opennetworking.org

With ~/.ssh/config setup simply connect to the target machine:
==============================================================
   - ssh gerrit.opencord.org


Secure permissions on ~/.ssh
============================

.. sourcecode:: shell

  $ chown -R {my_login}:{my_login} ~/.ssh
  $ chmod -R ~/.ssh u+rwx,og-rwx
  $ find ~/.ssh -type d -print0 | xargs -0 chmod u=rwx
  $ find ~/.ssh -type f -print0 | xargs -0 chmod u=r
  $ find ~/.ssh -name '*.pub' -type f -print0 | xargs -0 chmod u=rw
  $ chmod u=rw ~/.ssh/config ~/.ssh/known_hosts* ~/.ssh/authorized_keys

Debugging connection problems
===============================
  - ssh [-v | -vv | -vvv ] to enable connection debugging.
  - For conneciton problems be explicit when specifying arguments:
     - ssh -p(ort) -i(dentity) {user}@{host}
  - Use ssh-add -D to clear your keyring and force passphrase prompting.
