5.8 KiB
Chapitre 0.0 : Introduction à l'adminsys
Git
- Initialisation d'un dépôt :
git init
- Pour voir l'état du dépôt :
git status
- Pour faire suivre un fichier par git :
git add fichier
- Pour faire un commit de l'état modifié :
git commit
, on ajoute un message correspondant aux modifications faites - Pour voir l'historique du dépôt :
git log
- Pour configurer un dépôt distant : commande donnée lors de la création d'un dépot sur le site
- Voir l'URL suivi :
git remote get-url --all origin
- Pour envoyer les modifications au serveur git :
git push
, pour le premier push :git push -u origin master
- Pour récupérer des commits depuis un serveur distant :
git pull
.gitignore : permet d'ignorer certains dossiers ou fichiers, ce qui revient à les exclure du suivi Git
Pour bien débuter avec git : https://learngitbranching.js.org
SSH
Permet d'accéder au shell d'une machine à distance, très utile dans le cas d'une connexion à un serveur. Utilisé partout car permet d'avoir le contrôle total d'une machine à distance. Équivalent de TeamViewer version shell et linux.
L'utilisateur est le client, le serveur est l'hôte distante.
- Exemple par mot de passe :
ssh user@adresse
Exemple par clé :
- Génération de la clé :
ssh-keygen
(Génération de base, renseignez-vous sur ed25519) - Copie de la clé :
ssh-copy-id -i <chemin_clé> user@adresse
Permet d'enregistrer notre clé PUBLIQUE sur le serveur ssh. Il est maintenant possible de se connecter au serveur sans mot de passe à l'aide de votre clé PRIVÉE.
- Pour spécifier le port de connexion :
ssh -p port user@adresse
Transfert de fichier via une connexion SSH : scp -r -p chemin/vers/dossier/source user@adresse:chemin/vers/dossier/destination
Transmission de réseau via un canal SSH : Se renseigner sur le SSH port forwarding
Le fichier de configuration (très pratique)
Host bastion
Hostname IP publique || nom de domaine
User krhacken
#Surtout pas de ProxyJump ici
Host devore
Hostname IP
User user
IdentityFile ~/.ssh/votrecle
Port <port>
ProxyJump bastion
Concept de bastion SSH :
On utilise l'option ProxyJump dans le fichier de configuration SSH.
Cette option permet de "rebondir" sur un conteneur accessible depuis l'extérieur et ayant accès aux conteneurs non accessible depuis l'extérieur. Cela permet de faire le lien entre l'utilisateur qui est à l'extérieur et les conteneurs qui ne sont pas accessible depuis internet. Pour que tout fonctionne il faut que la clé ssh publique soit ajoutée au bastion et aux conteneurs et que le bastion est accès aux conteneurs.
Un beau schéma et un article : https://blog.octo.com/le-bastion-ssh/
LXD
Installation (Sous Ubuntu)
apt-get update
apt-get upgrade -y
apt-get install lxd
Initialisation :
lxd init
Would you like to use LXD clustering : No
Do you want to configure a new storage pool : Yes
Name of the new storage pool : Default
Name of the storage backend to use : dir (Vous pouvez vous renseigner sur LVM & BTRFS, CEPH c'est compliqué à tester)
Would you like to connect to a MAAS server? (yes/no) [default=no]: no
Would you like to create a new local network bridge? (yes/no) [default=yes]: yes
What should the new bridge be called? [default=lxdbr0]:
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
Would you like LXD to NAT IPv4 traffic on your bridge? [default=yes]: yes
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
Would you like LXD to be available over the network? (yes/no) [default=no]:
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]:
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]: yes
On verra plus tard comment cela fonctionne en détails au niveau du réseau, dans le cas présent l'accès à internet ainsi que le pare-feu est géré par LXD.
- On crée un conteneur :
lxc launch images:debian/buster test
- Liste des images :
lxc image list
- Liste des conteneurs :
lxc list
Permet d'obtenir la liste des conteneurs ainsi que les IP locales attribuées par DHCP aux conteneurs.
Pour les motivés voilà un usage un peu plus complet de LXD : https://git.krhacken.org/krhacken/docu-vps
Pour l'exemple de bastion SSH :
On crée deux conteneur (en 30 secs)
lxc launch images:debian/buster test
lxc launch images:debian/buster test1
On se connecte aux conteneurs et on installe un serveur SSH (pour permettre à un client d'établir une connexion SSH avec le conteneur)
lxc exec nomDuConteneur /bin/bash
apt-get update
apt-get upgrade -y
apt-get install openssh-server
Ajout manuel de la clé publique d'un utilisateur sur un conteneur
Sur le conteneur :
nano .ssh/authorized_keys
On ajoute la clé publique de l'utilisateur
Depuis la machine de l'utilisateur :
ssh root@ipConteneur doit ouvrir une connexion
On va utilisé test comme un bastion pour se connecteur à test1
Sur la machine de l'utilisateur on ajoute un fichier de configuration ssh
~/.ssh/config
Host bastion
Hostname ipConteneurBastion
User root
Host test1
Hostname ipConteneurTest1 # Correspond à l'ip à laquelle test1 est accessible depuis test (le bastion)
User root
ProxyJump bastion
Ainsi si l'utilisateur n'a pas un accès direct à test1 il peut si connecter en passant par le bastion.
Un bastion permet de se connecter à des dizaines de conteneur en utilisant la même adresse IPv4 publique et le même port (22). Depuis l'extérieur on a uniquement accès au bastion. De son côté le bastion à accès au réseau interne du serveur et peut dont nous rediriger vers un conteneur non accessible depuis l'extérieur.
En résumé : c'est le point d'entrée SSH de notre serveur.