Mémo pour afficher les serveurs disponibles pour un alias qui permet de faire un rebond SSH avec mot de passe via un serveur bastion.
Objectif
Avoir un alias qui permet de ne pas saisir un mot de passe à chaque connexion SSH via un serveur rebond (bastion).
ET ne pas avoir le mot de passe en clair dans l’historique des commandes du terminal.
Pré-requis
Installer sshpass :
1 |
command apt install sshpass |
Configuration
Fichier ~/.ssh/config :
1 2 3 |
Host serveur-rebond Hostname bastion.domain.tld User sshuser |
Fichier ~/.bash_aliases :
1 |
alias gossh='f(){ sshpass -f ~/.ssh/sshpasspwd ssh serveur-rebond-t "TERM=xterm-old ssh $@"; }; f' |
Remplacer « serveur-rebond » par le nom configuré dans le fichier ~/.ssh/config.
Fichier ~/.ssh/sshpasspwd :
1 |
M0nP@ssw0rd |
Contient le mot de passe SSH en clair (!), donc attention aux droits du fichier :
1 2 |
command chmod 400 ~/.ssh/sshpasspwd command chown $USER:$USER ~/.ssh/sshpasspwd |
Fichier ~/.bashrc :
1 |
. ~/.ssh/gossh-completion.bash |
Fichier ~/.ssh/gossh-completion.bash :
1 2 3 |
#/usr/bin/env bash server=`awk '$1 ~ /^[^;#]/' ~/.ssh/gossh_server.txt` complete -W "${server}" gossh |
Fichier ~/.ssh/gossh_server.txt :
1 2 3 4 5 6 7 |
# Web serveur1 serveur2 # DB dbserv1 dbbidule |
Utilisation
Liste de tous les serveurs :
1 |
command gossh [tab*2] |
Afficher les serveurs commençant par « ser » :
1 |
command gossh ser[tab*2] |