Fuente: https://atareao.es/ubuntu/sincronizacion-sin-contrasena-en-linux/
ssh-keygen -t rsa # Creamos pareja de claves y les damos nombre: raspberry, raspberry.pub
ssh-copy-id -i ~/.ssh/raspberry.pub daniel@10.20.30.40 # Enviamos la clave pública al servidor para que este nos reconozca
ssh -i ~/.ssh/raspberry daniel@10.20.30.40 # Nos logueamos con la clave privada... ya no debería pedir contraseña!
Una vez hecho esto, es bueno desactivar el inicio de sesión con contraseña en /etc/ssh/sshd.conf
Vamos a hacer que el cliente asocie la palabra probas
a la IP 10.207.0.30
y a las credenciales correspondientes (usuario ubuntu
, puerto 22
, fichero claves ~/.ssh/raspberry
). De este modo podremos utilizar estos comandos tan cortitos:
ping probas # para comprobar conectividad sin especificar IP
ssh probas # para entrar sin especificar IP, usuario, claves, contraseña ni puerto.
Para que funcione el ping sólo tenemos que editar el fichero de hosts y añadir la IP y el nombre de host:
echo '10.207.0.30\tprobas' | sudo tee -a /etc/hosts
Para que el SSH sepa qué usuario, puerto y clave utilizar debemos editar el fichero config
con sudo nano ~/.ssh/config
y añadir el texto:
Host probas
Hostname 10.207.0.30
user ubuntu
port 22
IdentityFile ~/.ssh/raspberry
Mosh trabaja sobre SSH y mejora dos aspectos clave del mismo:
Debido al diseño de Mosh, la rueda del ratón muestra el historial de comandos en vez del scrollback del stdout. Podemos corregir esto usando tmux
sobre Mosh. Edita la configuración de Tmux para tener scroll suave:
nano ~/.tmux.conf
new-session
set -g history-limit 30000
set -g mouse on
bind -Tcopy-mode WheelUpPane send -N1 -X scroll-up
bind -Tcopy-mode WheelDownPane send -N1 -X scroll-down
Ocultar barra inferior en tmux: pulsa
CTRL+B
, a continuación:
y escribeset -g status off
Para hacer conexiones Mosh:
mosh daniel@10.20.30.40
Si tienes que especificar un puerto distinto del 22 o fichero de clave privada:
mosh --ssh="ssh -p 10304 -i ~/.ssh/claveprivada" daniel@10.20.30.40
O, si has completado el apartado “más fácil todavía” bastará con poner:
mosh probas
Mobaxterm incorpora cliente Mosh.
Piensa bien qué haces cuando mides tu velocidad de acceso a Internet. ¿A dónde lo mides? Pues a un servidor que está en Oviedo, Porto, Madrid… La latencia variará con la distancia. La velocidad a veces también cambia, sobre todo dependiendo del operador que utilice el servidor.
Lado de servidor:
hostname -I # Obtener mi IP
iperf3 -s &
Lado del cliente:
iperf3 -c 10.20.30.40
Aplicaciones de cliente para iOS y Android
Listado de servidores iperf3
gratuitos: https://iperf.fr/iperf-servers.php
SCP: protocolo de envío y recepción de ficheros por SSH: Fuente: https://linuxhandbook.com/transfer-files-ssh/
scp username@ip_address:/home/username/filename . # recibir
scp filename username@ip_address:/home/username # enviar
SSHFS: protocolo de montaje de carpetas por SSH. Fuente: https://jonathansblog.co.uk/sshfs-mount-remote-drive-in-finder
mkdir /Volumes/Servidor && chmod +x /Volumes/Servidor
sudo sshfs -odebug,sshfs_debug,loglevel=debug -o reconnect -o volname=Servidor -o IdentityFile=/Users/daniel/.ssh/hosting -o allow_other,defer_permissions daniel@10.20.30.40:/home/servidor/www /Volumes/Servidor
Para desmontar la carpeta:
sudo umount -f /Volumes/Servidor
Todos estos procedimientos son mucho más rápidos usando ficheros de pareja de claves.
Docker es… la leche. Permite virtualizar aplicaciones sin necesidad de instalar todo el sistema operativo que éstas implican.
Preparamos repositorios y elegimos versión estable:
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Instalamos Docker (333 MB) (fuente):
sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io
Añadimos el usuario ubuntu
al grupo Docker
para no tener que hacer sudo
(fuente):
sudo groupadd docker
sudo usermod -aG docker $USER # puedes cambiar $USER por "ubuntu"
Dirígete a https://hub.docker.com. Ejemplos:
Las imágenes son aplicaciones que te descargas, pero todavía no están ni instaladas ni en ejecución. Bajemos algunas:
docker pull hello-world
docker pull networkstatic/iperf3
docker pull ubuntu
Comprueba las que tienes:
docker image ls
Fíjate en los IMAGE ID
, que sirven para borrar imágenes:
REPOSITORY TAG IMAGE ID CREATED SIZE
pihole/pihole latest 38a1df57a04f 5 weeks ago 300MB
alpine <none> 3e8172af00ce 3 months ago 3.82MB
networkstatic/iperf3 latest dadc8c0115f4 15 months ago 120MB
psharkey/webssh2 latest 050c10ac61b1 4 years ago 92.6MB
ubuntu latest d5ca7a445605 6 weeks ago 65.6MB
docker image rm 3e8172af00ce # Borraría la imagen "alpine"
Los contenedores (máquinas virtuales “ligeras”) se ponen en una subred NAT, típicamente 172.17.0.0/24
. Puedes mapear puertos del host al conetendor en la creación (al convertir la imagen en contenedor):
docker run -it -d -p 5201:5201 networkstatic/iperf3
El comando anterior sirve la primera vez, las siguientes se arranca con:
docker container start 4fee28076a55
Y se para con:
docker container stop 4fee28076a55
Veamos la lista de imágenes:
docker container list --all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e785b590b090 networkstatic/iperf3 "iperf3" 9 seconds ago Exited (1) 7 seconds ago naughty_ritchie
Lo importante es el CONTAINER ID
, en el caso de iperf3 es el "e785b590b090”.
docker run -it 4fee28076a55 bash
Lo anterior equivale a:
docker container start 4fee28076a55
docker exec -it 4fee28076a55 bash
El comando
docker run
descarga imagen, arranca contenedor, y ejecuta la orden bash si tú quieres.
Arrancamos Worpress y dirigimos las peticiones del puerto 8080 de la VM al puerto 80 del contenedor Wordpress:
docker run -d -p 8080:80 wordpress
Veamos el estado de los contenedores con docker ps #ojo, SÓLO muestra contenedores en ejecución
:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a5b9342b76a5 wordpress "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 0.0.0.0:8080->80/tcp, :::8080->80/tcp naughty_davinci
Resumen subcomandos de Docker:
run
: cuando aún no tenemos creado el contenedor. --name
. Crea el contenedor a partir de la imagen y lo arranca.start
: sólo arranca o para un contenedor preexistente.exec
: mandar órdenes a un contenedor en ejecución.Nos interesa que la información se guarde en una base de datos del propio host además de en el contenedor. Por si se perdiera o corrompiera un contenedor.
Referencia de comandos de Docker: https://docs.docker.com/engine/reference/commandline/cli/
Cortesía de Pablo Balseiro: