Ajout du chapitre 0.0
parent
04e9d83dcf
commit
780e41cda3
|
@ -0,0 +1,144 @@
|
|||
## 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**
|
||||
|
||||
```
|
||||
Hostname bastion
|
||||
Hostname ipConteneurBastion
|
||||
User root
|
||||
|
||||
Hostname 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.**
|
Loading…
Reference in New Issue