Ajout de la documentation concernant la fonctionnalité sshpass
Ajout de la documentation relative à sshpass. Modification de la version dans le Dockerfile pour correspondre à la version en cours. Patch du problème de clés d'hôtes nouvelles bloquant les connexion au travers de sshpass. (Solution temporaire ne présentant pas de risques dans le cas d'utilisation présent. Une meilleure solution sera mise en place lors d'un patch à venir)
This commit is contained in:
parent
63de8d0f33
commit
a2e439b1b5
@ -1,11 +1,10 @@
|
|||||||
FROM alpine:3.20.0 AS monosphere-builder
|
FROM alpine:3.20.0 AS monosphere-builder
|
||||||
#~The open Monosphere Project~
|
#~The open Monosphere Project~
|
||||||
#Version : 0.5.8
|
|
||||||
#Autor : Siphonight :)
|
#Autor : Siphonight :)
|
||||||
|
|
||||||
|
|
||||||
#Setting default settings, please change them at run
|
#Setting default settings, please change them at run
|
||||||
ARG MONOSPHERE_VERSION="0.5.8 Alpha"
|
ARG MONOSPHERE_VERSION="1.0.1 Alpha"
|
||||||
|
|
||||||
|
|
||||||
#Defining build settings
|
#Defining build settings
|
||||||
|
|||||||
18
README.md
18
README.md
@ -250,14 +250,16 @@ ssh -J utilisateur@ip_bastion utilisateur@ip_distante
|
|||||||
Pour définir les utilisateurs autorisés et les serveurs auxquels ils peuvent se connecter, modifiez le fichier **authorized_servers.txt** dans le répertoire **/opt/public/servers/**. Chaque ligne doit contenir l'adresse IP du serveur, le port, le nom personnalisé du server, le nom d'utilisateur de connexion et le nom d'utilisateur, séparés par des espaces :
|
Pour définir les utilisateurs autorisés et les serveurs auxquels ils peuvent se connecter, modifiez le fichier **authorized_servers.txt** dans le répertoire **/opt/public/servers/**. Chaque ligne doit contenir l'adresse IP du serveur, le port, le nom personnalisé du server, le nom d'utilisateur de connexion et le nom d'utilisateur, séparés par des espaces :
|
||||||
|
|
||||||
```txt
|
```txt
|
||||||
192.168.1.10 22 server1 server_user1 user1,user2 privkey1
|
192.168.1.10 22 server1 server_user1 user1,user2 key privkey1
|
||||||
192.168.1.11 2222 server2 server_user2 user2
|
192.168.1.11 23 server2 server_user2 user1 password pass_server2
|
||||||
|
192.168.1.12 2222 server3 server_user3 user2
|
||||||
```
|
```
|
||||||
L'indication de la clé privée pour la connexion au hôtes distants n'est pas obligatoire mais fortement recommandée. Si vous n'en avez pas besoin vous pouvez ne pas indiquer le nom de la clé privée.
|
L'indication de la méthode d'authentification (password/key) n'est pas obligatoire mais fortement recommandée.
|
||||||
|
Par défaut, si aucune option d'authentification n'est configurée, le mot de passe de l'hôte distant sera demandé à l'utilisateur.
|
||||||
|
|
||||||
Explication de la construction des lignes du fichier:
|
Explication de la construction des lignes du fichier:
|
||||||
```txt
|
```txt
|
||||||
[Adresse_IP] [Port] [Nom_du_serveur/Hostname] [Nom_de_utilisateur_de_connexion] [Usilisateurs_autorisés] [Nom_de_clé_privée_a_utiliser]
|
[Adresse_IP] [Port] [Nom_du_serveur/Hostname] [Nom_de_utilisateur_de_connexion] [Usilisateurs_autorisés] [Type_authentification] [Fichier_a_utiliser]
|
||||||
```
|
```
|
||||||
|
|
||||||
Comme montré ci-dessus, il est possible de mettre plusieurs noms d'utilisateurs sur un seul et même serveur, dans le cas où plusieurs utilisateurs sont autorisés à se connecter sur la machine distante et sur le même utilisateur distant.
|
Comme montré ci-dessus, il est possible de mettre plusieurs noms d'utilisateurs sur un seul et même serveur, dans le cas où plusieurs utilisateurs sont autorisés à se connecter sur la machine distante et sur le même utilisateur distant.
|
||||||
@ -267,6 +269,14 @@ Si vous souhaitez vous connecter sur la même machine distante mais avec un util
|
|||||||
|
|
||||||
A savoir qu'il est également possible d'utiliser des noms de domaine DNS, mais prenez en compte le fait que la résolution de nom se fera au niveau du bastion et non du client.
|
A savoir qu'il est également possible d'utiliser des noms de domaine DNS, mais prenez en compte le fait que la résolution de nom se fera au niveau du bastion et non du client.
|
||||||
|
|
||||||
|
Enfin, concernant la méthode d'authentification, deux options sont possibles :
|
||||||
|
- key : Précise au bastion que l'authentification sur l'hôte distant devra se faire au moyen d'une clé privée SSH précisée dans le fichier indiqué dans l'argument suivant.
|
||||||
|
- password : Précise au bastion que l'authentification sur l'hôte distant devra se faire au moyen d'un mot de passe inscrit dans le fichier indiqué dans l'argument suivant.
|
||||||
|
|
||||||
|
L'argument "Fichier_a_utiliser" indique de ce fait le nom du fichier situé dans le répertoire **/opt/public/servers/** (même répertoire que le script du menu d'authentification) contenant le secret à utiliser pour l'authentification dépendant de la méthode choisie.
|
||||||
|
|
||||||
|
A noter que si la méthode par mot de passe est sélectionnée, Le fichier indiqué devra contenir uniquement le mot de passe, en première ligne du fichier, sans aucune autre ligne complémentaire.
|
||||||
|
|
||||||
#### Ajout d'utilisateurs
|
#### Ajout d'utilisateurs
|
||||||
Les utilisateurs configurés sur le bastion peuvent être séparés en 2 types :
|
Les utilisateurs configurés sur le bastion peuvent être séparés en 2 types :
|
||||||
- Les utilisateurs clients du bastion
|
- Les utilisateurs clients du bastion
|
||||||
|
|||||||
@ -41,17 +41,17 @@ function main_menu () {
|
|||||||
selected_server="${server_map[$choice]}"
|
selected_server="${server_map[$choice]}"
|
||||||
echo "Connexion à $( echo "$selected_server" | cut -d " " -f -3)..."
|
echo "Connexion à $( echo "$selected_server" | cut -d " " -f -3)..."
|
||||||
if [ -z "$(echo "$selected_server" | cut -d ' ' -f 4)" ] && [ -f "$AUTHORIZED_SERVERS_PATH"/"$(echo "$selected_server" | cut -d ' ' -f 5)" ]; then
|
if [ -z "$(echo "$selected_server" | cut -d ' ' -f 4)" ] && [ -f "$AUTHORIZED_SERVERS_PATH"/"$(echo "$selected_server" | cut -d ' ' -f 5)" ]; then
|
||||||
ttyrec -z --"$(echo "$selected_server" | cut -d ' ' -f 1)"-"$(echo "$selected_server" | cut -d ' ' -f 3)"-- -k 300 --warn-before-kill 60 -- ssh -p "$(echo "$selected_server" | cut -d ' ' -f 2)" "$(echo "$selected_server" | cut -d ' ' -f 3)"@"$(echo "$selected_server" | cut -d ' ' -f 1)"
|
ttyrec -z --"$(echo "$selected_server" | cut -d ' ' -f 1)"-"$(echo "$selected_server" | cut -d ' ' -f 3)"-- -k 300 --warn-before-kill 60 -- ssh -o StrictHostKeyChecking=accept-new -p "$(echo "$selected_server" | cut -d ' ' -f 2)" "$(echo "$selected_server" | cut -d ' ' -f 3)"@"$(echo "$selected_server" | cut -d ' ' -f 1)"
|
||||||
elif [ "$(echo "$selected_server" | cut -d ' ' -f 4)" == "key" ]; then
|
elif [ "$(echo "$selected_server" | cut -d ' ' -f 4)" == "key" ]; then
|
||||||
eval "$(ssh-agent)" > /dev/null
|
eval "$(ssh-agent)" > /dev/null
|
||||||
trap 'kill $SSH_AGENT_PID' EXIT
|
trap 'kill $SSH_AGENT_PID' EXIT
|
||||||
cat /"$AUTHORIZED_SERVERS_PATH"/"$(echo "$selected_server" | cut -d ' ' -f 5)" | ssh-add - > /dev/null
|
cat /"$AUTHORIZED_SERVERS_PATH"/"$(echo "$selected_server" | cut -d ' ' -f 5)" | ssh-add - > /dev/null
|
||||||
ttyrec -z --"$(echo "$selected_server" | cut -d ' ' -f 1)"-"$(echo "$selected_server" | cut -d ' ' -f 3)"-- -k 300 --warn-before-kill 60 -- ssh -p "$(echo "$selected_server" | cut -d ' ' -f 2)" "$(echo "$selected_server" | cut -d ' ' -f 3)"@"$(echo "$selected_server" | cut -d ' ' -f 1)"
|
ttyrec -z --"$(echo "$selected_server" | cut -d ' ' -f 1)"-"$(echo "$selected_server" | cut -d ' ' -f 3)"-- -k 300 --warn-before-kill 60 -- ssh -o StrictHostKeyChecking=accept-new -p "$(echo "$selected_server" | cut -d ' ' -f 2)" "$(echo "$selected_server" | cut -d ' ' -f 3)"@"$(echo "$selected_server" | cut -d ' ' -f 1)"
|
||||||
ssh-add -D > /dev/null
|
ssh-add -D > /dev/null
|
||||||
elif [ "$(echo "$selected_server" | cut -d ' ' -f 4)" == "password" ] && [ -f /"$AUTHORIZED_SERVERS_PATH"/"$(echo "$selected_server" | cut -d ' ' -f 5)" ]; then
|
elif [ "$(echo "$selected_server" | cut -d ' ' -f 4)" == "password" ] && [ -f /"$AUTHORIZED_SERVERS_PATH"/"$(echo "$selected_server" | cut -d ' ' -f 5)" ]; then
|
||||||
local ssh_password
|
local ssh_password
|
||||||
ssh_password=$(cat /"$AUTHORIZED_SERVERS_PATH"/"$(echo "$selected_server" | cut -d ' ' -f 5)")
|
ssh_password=$(cat /"$AUTHORIZED_SERVERS_PATH"/"$(echo "$selected_server" | cut -d ' ' -f 5)")
|
||||||
ttyrec -z --"$(echo "$selected_server" | cut -d ' ' -f 1)"-"$(echo "$selected_server" | cut -d ' ' -f 3)"-- -k 300 --warn-before-kill 60 -- sshpass -p "$ssh_password" ssh -p "$(echo "$selected_server" | cut -d ' ' -f 2)" "$(echo "$selected_server" | cut -d ' ' -f 3)"@"$(echo "$selected_server" | cut -d ' ' -f 1)"
|
ttyrec -z --"$(echo "$selected_server" | cut -d ' ' -f 1)"-"$(echo "$selected_server" | cut -d ' ' -f 3)"-- -k 300 --warn-before-kill 60 -- sshpass -p "$ssh_password" ssh -o StrictHostKeyChecking=accept-new -p "$(echo "$selected_server" | cut -d ' ' -f 2)" "$(echo "$selected_server" | cut -d ' ' -f 3)"@"$(echo "$selected_server" | cut -d ' ' -f 1)"
|
||||||
unset ssh_password
|
unset ssh_password
|
||||||
else
|
else
|
||||||
echo -e "Un problème de configuration a été détecté sur \nles options de connexion à l'hôte selectionné.\nVeuillez contacter votre administrateur."
|
echo -e "Un problème de configuration a été détecté sur \nles options de connexion à l'hôte selectionné.\nVeuillez contacter votre administrateur."
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user