Skip to content

Instantly share code, notes, and snippets.

@edwrodrig
Last active September 25, 2023 01:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save edwrodrig/58294191b5dc99254c84826eca63b8a9 to your computer and use it in GitHub Desktop.
Save edwrodrig/58294191b5dc99254c84826eca63b8a9 to your computer and use it in GitHub Desktop.
Cosas de ssh

Última actualización : 2023-09-24

Agregar usuario como sudoer

Última actualización : 2023-09-24

usermod -aG sudo newuser

Crear llave ssh

Última actualización : 2023-09-24

Para create una llave ssh ejecutar el siguiente comando reemplazando las variables respectivas

ssh-keygen -t ed25519 -f ${KEY_FILENAME} -C ${COMMENT} -N ""

Obtener los hown hosts

Última actualización: 2023-09-24

Tengo una duda que es hostname y para que usar este comando

ssh-keyscan -H ${HOSTNAME}

Autorizar que se pueda utilizar X mediante ssh

Última actualización: 2023-09-24

No recuerdo el problema o la necesidad de utilizar este comando

ssh user@host
sudo su
xauth merge /home/user/.Xauthority

Para utilizar sudo en comandos ssh

Última actualización: 2023-09-24

Agregar en el archivo /etc/sudoers la siguiente linea al final.

username    ALL=(ALL)       NOPASSWD:ALL

donde username es tu usuario

SSH Tunnel normal

Última actualización : 2023-09-24

Forwardea las peticiones desde local_port al remote_server:remote_port mediante el ssh_server. remote_server debe ser visible desde el ssh_server, si es el mismo entonces usar localhost. Se recomienda usar -o ServerAliveInterval=60 para que el tunel no se caiga por idle time

ssh -N -v -L local_port:remote_server:remove_port ssh_server -p ssh_port

SSH Tunnel Reverso

Última actualización : 2023-09-24

El servicio en local_host en el local_port es servido en el host remote_server mediante el puerto remote_port. Es decir que las peticiones que lleguen al remote_server:remote_port serán forwardeadas a local_host:local_port. remote_server debe ser visible desde el ssh_server, si es el mismo entonces usar localhost. El argumento -p se puede utilizar para especificar el puerto ssh del remote_server

ssh -N -v -R remote_port:local_host:local_port ssh_server -p ssh_port

Script para tunnel reverso en ssh

Última actualización: 2023-09-24

Lo mismo que antes pero más ordenado e incluyendo keys y known hosts como archivos.

#!/bin/sh

LOCAL_SERVICE_PORT=22
REMOTE_USER_NAME=device_service
REMOTE_IP=some
REMOTE_SSH_PORT=22
REMOTE_SERVICE_PORT=8022
KEY=./key
KNOWN_HOSTS=./known_hosts

set -x
cd "$(dirname "$0")"

ssh -N -vvv -R ${REMOTE_SERVICE_PORT}:localhost:${LOCAL_SERVICE_PORT} \
        ${REMOTE_USER_NAME}@${REMOTE_IP} -p ${REMOTE_SSH_PORT} \
        -i ${KEY} \
        -o UserKnownHostsFile=${KNOWN_HOSTS} \
        -o ServerAliveInterval=60 \
        -o StrictHostKeyChecking=yes

Última actualización: 2023-09-24

Se considerar que el nombre de la cuenta de usuario será USERNAME.

Crear usuario

sudo adduser USERNAME

Configurar llaves para el usuario

Se copiarán las llaves públicas necesarias para que un usuario externo pueda conectarse a la cuenta.

sudo mkdir /home/USERNAME/.ssh
cd /home/USERNAME/.ssh

El siguiente comando abrirá el editor donde se debee copiar la llave publica .pubde la cuenta desde la cuál un usuario se conectará.

sudo vim authorized_keys

Cambiar los permisos por los correctos

sudo chown -R USERNAME:USERNAME /home/edwin/.ssh

sudo chmod -R 700 /home/USERNAME/.ssh

sudo chmod -R 600 /home/USERNAME/.ssh/authorized_keys

Hacer nueva cuenta como superusuario

Si se desea que la nueva cuenta sea de super usuario. Usar el siguiente comando para agregar lacuenta al grupo sudoers.

usermod -aG sudo USERNAME

Si se desea que además no pida password al utilizar sudo, entonces ejecutar

sudo visudo

Se abrirá un editor en donde se debe agregar al final lo siguiente

USERNAME ALL=(ALL) NOPASSWD: ALL
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment