Generate ~/.ssh/config
from multiple directories and files with one host
config per file.
Clone the repository:
cd ~
git clone https://github.com/gcoop-libre/multi-ssh-config
Add to ~/.bashrc
:
if [ -d "$HOME/multi-ssh-config" ]
then
PATH="$HOME/multi-ssh-config:$PATH"
fi
After edit hosts and alias files in config
directory you can run:
cd ~/multi-ssh-config
./sshconfig
Backup /home/osiris/.ssh/config to /home/osiris/.ssh/bak/config.1444569026 Add default to /home/osiris/.ssh/config Add custom to /home/osiris/.ssh/config Host server ... Host server2 ... Host vm2 ... 7 alias Host vm3 ... 7 alias Host bitbucket ... 1 alias Host github ... 1 alias Move /home/osiris/.ssh/config.tmp to /home/osiris/.ssh/config Total lines: 115 Total Hosts: 24 Enable Ansible Host Generation group lan .... 4 hosts group public .. 2 hosts source /home/osiris/.pssh_alias
The result is a file ~/.ssh/config
with all hosts configurations:
cat ~/.ssh/config
By default generate a ansible
hosts file:
cat /etc/ansible/hosts
[lan] server server2 vm2 vm3 [public] bitbucket github
By default generate a parallel-ssh
alias file:
cat ~/.pssh_alias
alias lan='/usr/bin/parallel-ssh -i -h /home/osiris/multi-ssh-config/groups/lan' alias lanbackup='/usr/bin/parallel-ssh -i -h /home/osiris/multi-ssh-config/groups/lan -l backuprsync' alias public='/usr/bin/parallel-ssh -i -h /home/osiris/multi-ssh-config/groups/public' alias publicbackup='/usr/bin/parallel-ssh -i -h /home/osiris/multi-ssh-config/groups/public -l backuprsync'
With parameter -d
generate a .dot
file for Graphviz
cd ~/multi-ssh-config
./sshconfig -d