Project

General

Profile

Actions

{{last_updated_at}} by {{last_updated_by}}

How to use a shared SSH config file

Do the following:

  • In the Nextcloud shared folder, locate the following files: Configurations/work-ssh-config, Configurations/joseph-ssh-config.
  • Create a config.d folder inside your ~/.ssh folder.
  • Create symlinks (aliases) to those files, e.g.:
ln -s /home/jon/ownCloud/work/Configurations/work-ssh-config ~/.ssh/config.d/20-megaphone
ln -s /home/jon/ownCloud/work/Configurations/joseph-ssh-config ~/.ssh/config.d/30-joseph

When you're done, running ls -l in the config.d folder should look something like this (note I have a third "personal" symlink:

zabuntu: ~/.ssh/config.d » ls -l                                                                                                                                                                                                  
total 0
lrwxrwxrwx 1 jon jon 43 Oct 20  2016 10-personal -> /home/jon/ownCloud/personal/ssh/10-personal
lrwxrwxrwx 1 jon jon 54 May 21  2017 20-work -> /home/jon/ownCloud/work/Configurations/work-ssh-config
lrwxrwxrwx 1 jon jon 56 Nov 27  2017 30-joseph -> /home/jon/ownCloud/work/Configurations/joseph-ssh-config
  • Add these lines anywhere in your .bashrc file (a hidden folder in your home directory).
function ssh()
{
    ssh-combine; /usr/bin/ssh $@
}

function rsync()
{
    ssh-combine; /usr/bin/rsync $@
}

function scp()
{
    ssh-combine; /usr/bin/scp "$@"
}

function ssh-combine()
{
    cat $HOME/.ssh/config.d/* > $HOME/.ssh/config
}

If your username on your local machine isn't the same as your username on the remote machines, we'll also need to tell SSH to use a different default username.

  • Create a file in ~/.ssh/config.d called 40-global. It doesn't need to be a symlink.
  • The entire contents of this file should be:
Host *
  user dennis

Substitute your username for dennis.

Once the above setup is complete run ssh HOST and you should be connected.

Updated by Jon Goldberg about 4 years ago · 9 revisions