Bases del sistema operativo

1

Lo que aprender谩s sobre la administraci贸n de servidores linux

2

Distribuciones m谩s utilizadas de Linux

3

Instalaci贸n de Ubuntu Server

4

Instrucciones para instalar CentOS

5

Gesti贸n del 谩rbol de directorios

6

Diferencias entre LESS, CAT, HEAD y TAIL para lectura de archivos

7

Interacci贸n con archivos y permisos

8

Conociendo las terminales en linux

9

Manejo y monitoreo de procesos y recursos del sistema

10

Monitoreo de recursos del sistema

Instalaci贸n y manejo de software en Linux

11

An谩lisis de los par谩metros de red

12

Administraci贸n de paquetes acorde a la distribuci贸n

13

Manejo de paquetes en sistemas basados en Debian

14

Administraci贸n de software con YUM y RPM para CentOS

15

Nagios: Desempaquetado, descompresi贸n, compilaci贸n e instalaci贸n de paquetes

Administraci贸n de usuarios

16

Los usuarios, una tarea vital en el proceso de administraci贸n del sistema operativo

17

Creando y manejando cuentas de usuario en el sistema operativo

18

Entendiendo la membres铆a de los grupos

19

Usando PAM para el control de acceso de usuarios

Servicios en el sistema operativo

20

Autenticaci贸n de clientes y servidores sobre SSH

21

Configurando DNS con bind

22

Arranque, detenci贸n y recarga de servicios

23

NGINX y Apache en Ubuntu server

24

Instalaci贸n y configuraci贸n de NGINX

25

驴Qu茅 es NGINX Amplify?

26

NGINX Amplify: Instalaci贸n y configuraci贸n de un servidor para producci贸n

27

Monitoreo de MySQL con Nagios

28

Configuraci贸n de Nagios

29

Los logs, nuestros mejores amigos

30

Otros servicios de logs

Bash scripting

31

Las bases de bash

32

Las variables y su entorno de ejecuci贸n

33

Automatizando tareas desde la terminal

34

Automatizando la copia de seguridad

35

Crontab

Asegurando tu servidor

36

Entendiendo la gesti贸n de vulnerabilidades

37

驴Qu茅 es una superficie de ataque? Principio del menor privilegio

38

El firewall y sus reglas

39

Escaneo de puertos con NMAP y NIKTO desde Kali Linux

40

Lynis: Herramientas de auditoria de seguridad en Linux

Proyecto

41

Configuraci贸n de Node.js en un ambiente productivo

42

Configuraci贸n de NGINX para la aplicaci贸n de Node.js

Bonus: Linux en Azure

43

Aprende sobre Linux en Azure

44

Despliegue de una aplicaci贸n web MEAN

45

Crea una m谩quina virtual en la nube de Azure

Conclusiones

46

Lo que aprendiste sobre servidores linux

A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Autenticaci贸n de clientes y servidores sobre SSH

20/46
Recursos

SSH es un protocolo que nos ayuda a conectarnos a nuestros servidores desde nuestras m谩quinas para administrarlos de forma remota. No es muy recomendado usar otros protocolos como Telnet, ya que son inseguros y est谩n deprecados.

Con el comando ssh-keygen podemos generar llaves p煤blicas y privadas en nuestros sistemas, de esta forma podremos conectarnos a servidores remotos o, si es el caso, permitir que otras personas se conecten a nuestra m谩quina.

Para conectarnos desde nuestra m谩quina a un servidor remoto debemos:

  1. Ejecutar el comando ssh-copy-id -i ubicaci贸n-llave-p煤blica [email protected]贸n-IP-servidor-remoto y escribir nuestra contrase帽a para enviar nuestra llave p煤blica al servidor.
  2. Usar el comando ssh [email protected]贸n-IP-servidor-remoto para conectarnos al servidor sin necesidad de escribir contrase帽as.

Tambi茅n podemos usar el comando ssh -v ... para ver la informaci贸n o los errores de nuestra conexi贸n con el servidor. Puedes usar la letra v hasta 4 veces (-vvvv) para leer m谩s informaci贸n.

Las configuraciones de SSH se encuentran en el archivo /etc/ssh/sshd_config.

Aportes 100

Preguntas 42

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

RESUMEN DE LA CLASE
|
Autenticaci贸n de clientes y servidores sobre SSH
|
|
SSH: Secure Shell, es un protocolo que permite conectar dos computadoras de forma remota sin necesidad de un password, 煤nicamente con la interacci贸n de una llave p煤blica y una llave privada (aunque podemos colocar una contrase帽a sobre las llaves)
|
|
Configuraci贸n
|

  1. En el servidor, abrir el archivo /etc/ssh/sshd_config con alg煤n editor. Leer el archivo y configurar a gusto.
  2. En la consola de la m谩quina cliente abrir ssh-keygen para generar las llaves
  3. Elegir ubicaci贸n para guardar la llave privada
  4. Ejecutar ssh-copy-id -i directorio_de_llave/id_rsa.pub [email protected]_ip_del_servidor para copiar la llave p煤blica al servidor
  5. Ejecutar ssh [email protected]_ip_del_servidor en la m谩quina cliente para conectarnos exitosamente de forma remota

|
|
Tips
|

  • En lugar de descargar Putty en Windows podemos utilizar el emulador de consola Unix llamado Cmder para ejecutar los comandos vistos en clase. Incluso si esto falla, lo que personalmente recomiendo es instalar un subsistema de linux si tenemos Windows 10. Platzi tiene incluso un art铆culo sobre como hacer eso: https://platzi.com/clases/1378-python-practico/19200-importante-instalando-ubuntu-bash-en-windows-para-/
  • Si la conexi贸n falla, podemos usar el modificador -v (verbose) en el comando ssh para poder ver la informaci贸n que env铆an las m谩quinas que intentan conectarse. La 鈥渧鈥 puede repetirse hasta cuatro veces, quedando el comando, por ejemplo, como: ssh -vvvv [email protected]_ip_del_servidor. A mas 鈥渧鈥 pongamos, m谩s informaci贸n se mostrar谩
    |
    |
    BONUS
    |
    Reto: Restringir el acceso al usuario root por ssh, y permitir solo un usuario determinado conectado
    |
    Soluci贸n:
    |
  1. Colocar en el archivo /etc/ssh/sshd_config del servidor las siguientes l铆neas:
PermitRootLogin no
AllowUsers nombre_usuario
  1. Ejecutar el siguiente comando para reiniciar el servicio de ssh:
sudo service sshd restart

Con Windows Solucionado
Sino te funciona porque estas usando Windows aqu铆 la soluci贸n:

*Descargamos git para windows, que es una terminal de donde podemos usar comandos de linux https://git-scm.com/download/win
*Abrimos Git Bash lo instalamos en el paso anterior
*Ejecutamos lo siguiente para generar la llave ssh-keygen -b 4096 -t rsa
*Tendremos que presionar 3 veces 鈥淓nter鈥 para dejarlo predeterminado.
*Listo ya generamos la llave, ahora enviamos la llave publica a nuestro servidor
*Ejecutamos en la misma terminal ssh-copy-id [email protected] La IP de tu servidor puede ser distinta Puedes verla dando ifconfig del lado del servidor.
*Ingresamos la contrase帽a de platzi
*Listo ya tendr铆amos que poder conectarnos por SSH sin contrase帽a
*Damos exit para salir de la terminal
*Ahora nos conectamos de nuevo al servidor
*ssh [email protected]
*Listo, no tendr铆a que pedirte la contrase帽a

Bueno鈥 es verdad que nos deben dar una orientaci贸n de como hacer algo鈥 **pero que nos digan que ya lo tengo hecho no lo voy hacer鈥 creo que esta mal鈥 **鈥 Aqu铆 en este tema falto muchos otros aspectos por abordar鈥

hay que agregar en /etc/ssh/sshd_config
PermitRootLogin no
AllowUsers <nombre de usuario>
o si se quiere agregar un grupo
AllowGroups <nombre del grupo>
// Tambien se puede denegar el acceso con DenyUsers o DenyGroups

En el caso que hayan guardado la llave en ~/.ssh/ con un nombre diferente al por default, digamos llave_curso, el comando a utilizar para conectarse ser铆a el siguiente:

ssh -i ~/.ssh/llave_platzi platzi@192.168.10.186

IMPORTANTE: cuando no trabajan con el nombre por default, se帽alar el nombre de la llave, de otra forma buscar谩 archivo de nombre id_rsa y dar con esto les tomar谩 tiempo y un par de dolores de cabeza 馃槈

https://www.youtube.com/watch?v=2TLqfsPOYCc&t=185s
Banda que usa Windows, sigan este tutorial al pie de la letra, tal y como lo marcan, para poder hacer la conexi贸n remota usando Putty

Lo que son los sesgos, Ya leo Keygen y esto me recuerda a Software Pirata.

Todo expuesto de una forma muy gen茅rica y dando por supuesto muchos conocimientos.

reto completado 馃
en el archivo sshd_config del servidor a帽ad铆 la siguiente l铆nea
PermitRootLogin no
despues reincicie el servidor con
sudo service sshd restart
trate de ingresar por consola en mi cliente pero no me permiti贸 el acceso.

Vengo del curso de introducci贸n a la terminal y l铆nea de comandos, me parece que esta clase y tambi茅n el curso ayudan mucho y por supuesto nutren el conocimiento aprendido con esta parte del otro curso, 隆recomendado!

el link de Marino es de otro curso y est谩 genial!
https://platzi.com/clases/1650-prework/21958-crea-llaves-ssh/

馃Bro鈥 es normal que me haya sentido tan bien cuando logr茅 conectar mi WSL con el servidor? jajsjjs鉁

[Reto-01] Deshabilitar el acceso de la cuenta 鈥渞oot鈥:
a) Editar el archivo 鈥渟shd_config鈥:
sudo nano /etc/ssh/sshd_config
b) Asignar el valor 鈥渘o鈥 al parametro 鈥淧ermitRootLogin鈥:
PermitRootLogin no
c) Reiniciar el servicio 鈥渟sh鈥 :
sudo systemctl restart sshd

[Reto-02] Restringir el acceso remoto ssh a la cuenta 鈥減latzi鈥:
a) Editar el archivo 鈥渟shd_config鈥:
sudo nano /etc/ssh/sshd_config
b) Asignar el valor 鈥減latzi鈥 al parametro 鈥淎llowUsers鈥:
AllowUsers platzi
c) Reiniciar el servicio 鈥渟sh鈥 :
sudo systemctl restart sshd

Otro tip, para el caso de que manejen numerosas conexiones a servidores linux por ssh, manejar un archivo config les har谩 la vida un poco m谩s sencilla, ac谩 les dejo la clase (del curso anterior) donde tratan el tema!

me resulta muy confuso alternar entre Centos y Ubuntu en tre clase y clase Hubiese sido mejor que se enfocaran en uno solo.

Como estaba haciendo los ejercicios en una instancia de ubuntu en AWS no sirve el comando para copiar la llave publica, sin embargo use el siguiente comando para enviar la llave publica creada en mi maquina hu茅sped a la maquina de AWS
cat ~/.ssh/id_rsa.pub | ssh -i aws.pem [email protected]_address "cat - >> ~/.ssh/authorized_keys"

Si se tiene que hacer a mano, se tiene que realizar de la siguiente manera

  1. crear llave publica ssh-keygen -t rsa -b 4096 -C "comentario" el comentario es importante si manejas muchas ssh keys.
  2. copiar la llave publica. En windows usando git bash clip < ~/.ssh/nombre-llave.pub pone el nombre de la llave que generaste.
  3. Ir al servidor ssh [email protected]
  4. Generar la carpeta ssh con mkdir ~/.ssh
  5. Asignarle permisos chmod 700 ~/.ssh
  6. crear en ~/.ssh el archivo authorized_keys con touch ~/.ssh/authorized_keys
  7. Asignarle permisos chmod 600 ~/.ssh/authorized_keys
  8. abrir con vim ~/.ssh/authorized_keys y pegar nuestra llave. En vim se guarda con apretando escape y luego tipear !wq
  9. salimos con exit
  10. probamos conexion ssh [email protected]

En windows a veces no toma el agente ssh las llaves que generamos, por eso es conveniente realizarlo a mano. Vamos a nuestro usuario C:\users\nuestro-usuario y generamos un archivo .bashrc aqui pegamos lo siguiente:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/llave-privada

Cuando abras git bash te va a aparecer el mensaje de que se agrega la llave al agente.

sudo vi /etc/ssh/sshd_config
No permitir logueo con root
PermitRootLogin no
habilitar solo usuario
AllowUsers NOMBRE_USUARIO
Habilitar usuarios de grupo espec铆fico
AllowGroups NOMBRE_GRUPO
Denegar acceso a usuario
DenyUsers NOMBRE_USUARIO
Denegar acceso a todos los usuarios de un grupoi
DenyGroups NOMBRE_GRUPO

en maquinas windows ejecutando los comandos en la power shell ssh-keygen funciona igual que en el video.

Me gustar铆a comentar que pueden encontrar dos archivos muy parecidos pero diferentes dentro del directorio /etc/ssh, los cuales son:

  • ssh_config. Define la configuraci贸n del cliente SSH, es decir, lo que SSH consulta cuando realiza conexiones desde la m谩quina anfitriona hacia el exterior.
  • sshd_config. Define la configuraci贸n del demonio SSH, es decir, aquel servicio que constantemente est谩 escuchando conexiones SSH entrantes y que recoge la configuraci贸n de este archivo cuando suceden conexiones desde el exterior hacia la m谩quina anfitriona. Los clientes deben tener un archivo de configuraci贸n de cliente (ssh_config) que sea compatible con este.

Yo en windows lo hice en desde la consola de powershell 7 y alli los comandos para crear la clave de ssh y conexion funcionan bien, el unico que me dio problema fue el envio de la clave publica pero ese envio lo pueden hacer con este comando

type $env:USERPROFILE\.ssh\id_rsa.pub | ssh [email protected]192.168.0.1 "cat >> .ssh/authorized_keys"

y asi no instalan muchas cosas externas

#ques SSH#
SSH es el acr贸nimo de Secure Shell, y es un protocolo que se utiliza en el manejo de servidores de forma remota, permitiendo a un usuario realizar toda clase de tareas sobre el mismo. En las conexiones realizadas por medio de SSH, toda la informaci贸n viaja de forma encriptada , lo cual lo convierte en uno de los medios m谩s seguros a la hora de trabajar en un servidor鈥

SSH tiene muchas aplicaciones diferentes:

  • Gesti贸n de servidores a los que no se puede acceder localmente
    Transferencia segura de archivos

  • Creaci贸n de copias de seguridad

  • Conexi贸n entre dos ordenadores con encriptaci贸n de extremo a extremo

  • Mantenimiento remoto desde otros ordenadores

me sirvi贸 este de youtube :
https://www.youtube.com/watch?v=FpGulmL0Lq4

SSH es un protocolo que nos ayuda a conectarnos a nuestros servidores desde nuestras m谩quinas para administrarlos de forma remota. No es muy recomendado usar otros protocolos como Telnet, ya que son inseguros y est谩n deprecados.

Hola. Estuve intentando hacer el reto desde ubuntu server. Mi l贸gica es la siguiente: En ubuntu no esta habilitado el usuario root como tal. Es decir, cuando quieres actualizar puedes poner la contrase帽a de root para que se ejecute. Normalmente yo al instalar un servidor siempre creo el primer usuario con el nombre de administrador. Este usuario tiene el privilegio de root desde inicio y cuando yo ejecuto una actualizacion, ubuntu siempre me pide poner la contrase帽a. Usualmente yo administro los servidores de linux que monto, as铆 que no he tenido necesidad de crear diversos usuarios para conectarse m谩s que cuando habilito samba pero solo para compartir carpetas. En este caso no fue la excepci贸n. Sin embargo, ante tal escenario, cuando me conecto por ssh con mi usuario, aunque yo habilite la opci贸n PermitRootLogin no, las actualizaciones si me las permite hacer o cualquier cosa que implique privilegios de root. Esto se debe a que mi usuario ya pertenece de inicio al grupo sudo y como ya lo comente, ubuntu no tiene habilitado el usuario root por defecto as铆 que en teor铆a esa opci贸n no funciona pues no me conecto como root.

Lo que aplique en este caso fue crear un usuario nuevo y este a su vez queda disponible para darle acceso a los grupos que se requieren. Como en este caso se requer铆a que no tuviera acceso como root, simplemente no lo a帽adi al grupo de sudo. Con la opci贸n AllowUsers se pueden agregar los usuarios capaces de conectarse v铆a ssh. Esto es bueno si quieres tener esa restricci贸n, pero no para evitar que el usuarios no pueda actuar como root en tanto siga dentro del grupo sudo

Tambi茅n podemos usar el comando ssh -v 鈥 para ver la informaci贸n o los errores de nuestra conexi贸n con el servidor. Puedes usar la letra v hasta 4 veces (-vvvv) para leer m谩s informaci贸n.

Las configuraciones de SSH se encuentran en el archivo /etc/ssh/sshd_config.

SSH es geniaaaal!

Gracias a esta clase pude conectar mi servidor linux virtualizado a la terminal de mi Mac. Ahora solo utilizo mi terminal de Mac mientras el servidor virtualizado corra.

aaaver
entonces los que somos usuarios Windows tenemos que tener el putty y el puttygen?
y luego primero generamos las llaves con el gen y luego nos logeamos con el putty si?

Me pas茅 medio d铆a intentando configurarlo en PoweShell desde Windows 10, sin tener que estar escribiendo la contrase帽a de la llave鈥 pero me rend铆鈥
Prob茅 con Git Bash y qued贸 en 10 minutos鈥

Telnet es un protocolo que ocupa el puerto TCP 23. Es inseguro dado que la informaci贸n es transmitida en texto plano sin encriptar, lo que la hace susceptible a ataques 鈥淢an in the Middle鈥.
SSH es mucho m谩s seguro, ya que incorpora encriptaci贸n y llaves p煤blicas y privadas.
Opera en el puerto TCP 22, aunque esto puede ser cambiado.

que tema mas complejo para pretender explicarlo en una clase. quedense con la idea de que SSH es un protocolo de red que encripta informacion entre un usuario y su servidor con una doble llave donde el ususario asegura la informacion, la envia al servidor, este la aseura tambien y la retorna al ususario, el cual al verla ya asegurada por el servido la libera de su seguridad y queda la informacion bajo responsabilidad del servidor. no se maten la cabeza tratando de hacer los ejercicios del profesor porque se requieren otros recursos, como maquina virtual u otro pc o algo. ahi se quedo corto el profesor en no especificar esas cosas

En Windows es sencillo, no se enrollen, solo descargan PUTTY, lo ejecutan y colocan la ip del servidor Ubuntu, les pedir谩 credenciales y listo.

Bueno, lamentablemente despu茅s de 4 horas de trabajo y de intentar 500 cosas, no fue posible realizar la conexi贸n ssh: yo utilizo WSL y hasta ahora me hab铆a permitido realizar todas las actividades. Seg煤n investigu茅 hay que activar el 鈥渁daptador puente鈥, pero misi贸n imposible. Tampoco inicia el servicio ssh. No puedo quedarme pegado en esta clase, pasar茅 a la siguiente con mal sabor de boca.

RETO

En el archivo sshd_config
hice los siguientes cambios:

PermitRootLogin no

y agregu茅 la l铆nea

AllowUsers allowed_user_1

En esta clase el instructor asume que se cuenta con muchos conocimientos previos.
Considero que los supuestos no se deben presentar en material instructivo, ejemplo 鈥渃omo yo ya tengo mis claves no las voy a generar鈥

Windows 10 desde la versi贸n 1803 viene con un cliente ssh habilitado por defecto el cual usa Open SSH por lo tanto ya no es necesario instalar putty. Esto lo puedes usar desde cmd.exe o powershell.exe

Como as铆 que el ya tiene la llave creada entonces no la realizara, el curso me ha dejado muchas dudas de parte del instructor.

Para usuario de Windows, pueden usar:

type $env:USERPROFILE\.ssh\id_rsa.pub | ssh [email protected]_address "cat >> .ssh/authorized_keys"

Para hacer el copia de su llave p煤blica a su servidor en Linux.

el proceso de ssh-copy-id es una forma autom谩tica de a帽adir nuestra llave p煤blica al archivo authorized_keys del directorio .ssh en el $HOME del usuario al que nos estamos conectando, tambi茅n se puede hacer de forma manual

Recordemos que la IP del servidor puede ser distinta. Esta la ven en la configuraci贸n de red con el comando

ifconfig

Para acceder a este comando hay que tener instalado el paquete 鈥渘et-tools鈥

sudo apt install net-tools

Tenemos entre las actuales alternativas de 芦Administradores de sistemas y servicios para Sistemas禄 (init systems) para Linux a:

  • openrc
  • runit
  • s6
  • shepherd
  • sinit
  • systemd
  • systemd-shim
  • sysvinit

Porque una de las cualidades de los sistemas linux, es brindar diversas formas de hacer las cosas y diferentes alternativas para diversos gustos o necesidades.

sytemctl es el comando moderno para arrancar o detener servicios, es la opci贸n moderna vs correr directamente los scripts que se encuentran en /etc/init.d/

como sysadmins se tiene que conocer sobre la arquitectura e implementaci贸n del arranque en un sistema linux o unix

les recomiendo estas lecturas:

Systemd vs SystemVInit
Linux Init process

A pesar de que systemd esta siendo adoptado como la norma en los entornos linux modernos existe controversia al respecto nada m谩s y nada menos que del mismo creador de Linux

Linus Torvalds, Chief architect of Linux kernel, feels attitude of key developer of systemd towards users and bug reports do not seems ok. It was also reported that systemd philosophy is weird and a foreign way to control system processes. The same has been recorded from Patric Volkerding and other notable Linux Users and Developers as well as over online forum, time-to-time.

en windows la suite con la que instalan git incluye cliente ssh
tambi茅n si quieren algo m谩s completo para tener los comandos de windows en linux, pueden instalar cygwin, que es una capa de emulaci贸n de POSIX en windows y contiene un sistema de paquetes incluyendo bash, php, python, command line tools, postgresql, mysql, cron, apache e incluso algunas aplicaciones gr谩ficas que corren sobre un X server, un X server es el componente que aporta el entorno gr谩fico en linux (esto no quiere decir ventanas, sino que son primitivas gr谩ficas sobre las que se construyen las toolkits como QT o GNOME y los manejadores de ventanas como los m谩s conocidos que son KDE, GNOME o XFCE, pero tambi茅n hay algunos que consumen nada de recursos y solo aportan ventanas como fluxbox)

otra maravilla de ssh es que podemos correr comandos en servidores remotos
ssh [email protected] COMANDO
y tambi茅n podemos encadenar conexiones, por ejemplo si el servidor de producci贸n solo acepta conexiones SSH desde los servidores en su misma RED podemos entrar por ssh a uno de estos y desde este hacer ssh o bien podemos establecer un tunel para conectarnos directamente

  1. abrir tunel y dejamos corriendo un comando para que se mantenga la conexi贸n abierta

ssh -R 22:++DIRECCION_LAN_PRODUCTIVO++:2222 [email protected]++DIRECCION_SERVIDOR_DESARROLLO++ ping -i 30 localhost
2. ya podemos conectarnos al remoto en el puerto local 2222 que fue el que especificamos como puerto local para el puerto remoto 22

ssh -p 2222 ++USUARIO_PRODUCT[email protected]

Con el comando ssh-keygen podemos generar llaves p煤blicas y privadas en nuestros sistemas, de esta forma podremos conectarnos a servidores remotos o, si es el caso, permitir que otras personas se conecten a nuestra m谩quina.

Para conectarnos desde nuestra m谩quina a un servidor remoto debemos:

Ejecutar el comando ssh-copy-id -i ubicaci贸n-llave-p煤blica [email protected]贸n-IP-servidor-remoto y escribir nuestra contrase帽a para enviar nuestra llave p煤blica al servidor.
Usar el comando ssh [email protected]贸n-IP-servidor-remoto para conectarnos al servidor sin necesidad de escribir contrase帽as.

Tipos de protocolos de red
Los protocolos de red m谩s comunes son:

#Ethernet
#Charla local
#Token Ring
#FDDI
#ATM

A quien le pueda ser 煤til. Para salir de la sesi贸n SSH debes escribir logout o exit en la consola y listo. Aunque no lo crean estuve diez minutos intentando salir de SSH.

herramientas a tener a disposici贸n en caso de trabajar con m谩q. Windows para conexiones por SSH

alt 126 para el simbolo: ~

ssh-keygen -t rsa -b 4096 -C "this is a key"

Entren a este link para saber como podemos acceder al servidor por SSH, por medio de Windows Powershell : https://www.profesionalreview.com/2018/11/30/ssh-windows-10/

Para los que usen una Virtual Box en Windows y quieran conectarse por SSH por Putty y no saben como enviar la Clave p煤blica aqu铆 les dejo tuto:

Para conectarse por NAT deben ir a:
*Configuraci贸n=>Red=> Conectado a: NAT =>Avanzadas=>Reenvio de puertos=>Agregar
Name Protocol Ip anfit port anf ip inv por inv
SSH TCP 127.0.0.2 2222 10.0.2.15 22

La palabra en ingles 鈥渄eprecated鈥, traduce obsoleto. recuerden que hay sistemas como el nombrado en el video el Telnet que ya es obsoleto. Lo recomendado es usar SSH.

CONECTARSE DESDE WINDOWS A UN SERVIDOR 鈥淯BUNTU SERVER鈥

Crear una llave privada y publica en Windows | Conectarse al servidor de Ubuntu Server

1ro: Verificar que estas en esta direccion: C:\Users\user

$ pwd

2do: Crear la llave privada y publica (por defecto se creara la llave) sin contrasena

$ ssh-keygen

3ro: Verificamos si se creo las llaves en el directorio ~/.ssh de Windows

$ cd ~/.ssh

4to: Copiamos la llave publica de Windows al servidor de Ubuntu Server

$ scp C:\Users\user\.ssh\id_rsa.pub [email protected]<direcion IP servidor>:/home/user/.ssh/authorized_keys

5to: Nos conectamos por SSH desde Windows a Ubuntu Server

$ ssh [email protected]<direcion IP servidor>

Para copiar la llave ssh desde un mac al servidor, deben aplicar el comando

cat ~/.ssh/id_rsa.pub | ssh username@server.dreamhost.com "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"

Pueden leer m谩s acerca de este comando en la url: https://help.dreamhost.com/hc/es/articles/216499537-Como-configurar-inicio-de-sesi贸n-sin-contrase帽a-en-Mac-OS-y-Linux

Para los que intenten configurar las llaves en el cliente de SSH desde WSL, van a tener que echar mano de trucos para poder echar a andar la utilidad systemctl, ya que como dice este post, WSL no arracanca el PID 1 con systemd, sino con su propio procedimiento /init.

Tuve problemas para copiar la llave al server desde un mac.

[email protected] ~ % ssh-copy-id -i ~/.ssh/id_rsa [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: 鈥/Users/felipe/.ssh/id_rsa.pub鈥
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed 鈥 if you are prompted now it is to install the new keys
[email protected]: Permission denied (publickey).

Para solucionar esto hay un paso intermedio que no se mencion贸. Despues de modificar el archivo
/etc/ssh/ssh_config
en el server, es necesario reiniciar el servicio para que acepte la nueva configuraci贸n:

service sshd restart

Y definitivamente para no acceder a root mediante:

sudo su -

desde un usuario con privilegios de sudo, editamos el archivo:

sudo vim /etc/passwd

editamos la linea:

root:x:0:0:root:/root:/bin/bash

o donde se encuentre el usuario root y solo modificamos la shell a utilizar (/bin/bash), quedando como:

root:x:0:0:root:/root:/usr/sbin/nologin

aqui un tutoria cortito para hacerlo con PUTTYgen y logearse con putty desde windows: https://devops.ionos.com/tutorials/use-ssh-keys-with-putty-on-windows/

Momento de subida de clave publica a servidor remoto para conexi贸n SSH

Hoy es innecesario usar clientes como putty en Windows

Windows suele incluir un cliente ssh, y el server es facil de instalar.

Con solo usar ssh en Powershell o CMD como en linux o mac deber铆a funcionar.

para mayor seguridad la clave ssh se puede crear con 4096 bits y ponerle una contrase帽a a la llave privada, tambien podemos modificar en la configuracion ssh del servidor para que soporte 2fa con google authenticator y asi cada vez q nos vayamos a loguear en un servidor en internet nos pida ademas de la llave un codigo 2fa.

Esa tipograf铆a me record贸 un computador de los 70

SSH:
Protocolo seguro para conectarte en el server (Secure shell)
configurar el servicio ssh:

/etc/ssh/sshd_config ---> archivo de config

en la consola de usuario.
si no has generado las claves ssh, debes generarlas con

ssh-keygen

Luego de generarlas, estas se almacenan en ~/.ssh
Quedan dos llaves, la privada y la publica, la privada no tiene extension y la publica tiene extension .pub
Posteriormente hay que pasarla al server, que en mi caso seria asi:

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]192.168.0.19

y a partir de ese momento no hace falta colocar las claves mas.
Para quitar estra propiedad, en el archivo de configuracion debemos cambiar.

PasswordAuthentication no 

siempre hay que reiniciar el servicio para

sudo systemctl restart ssh

sudo systemctl status ssh --> verificar status

en ssh cuando vamos a logearnos , podemos controlar el verbose de el proceso, colocando -v
(podemos colocar de 1 a 4 v , cuando coloquemos el -v, mientras mas v haya, mas datos da, sirve para ver los logs.)

ssh  -vvvv  [email protected]192.168.0.19

para prohibir el acceso de otros usuarios, y solo permitir uno seria, en el archivo /etc/ssh/sshd_config:
(Asumiendo que solo quiero permitir al usuario anthony)

AllowUsers anthony

y me creo un usuario de prueba para intentar entrar:

sudo adduser anthony_prueba

y hacer pruebas con ese .
y no permitir el Root login, en el archivo de configuracion, seria:

PermitRootLogin no

En mi caso yo generaro las llaves ssh con un opci贸n que me da una capa extra de encriptaci贸n y es de la siguiente manera:

$ ssh-keygen -t rsa -b 4096

Sabemos que -t rsa es por defecto la capa extra de encriptaci贸n se generar铆a con -b 4096 .

Saludos y feliz aprendizaje.

Para restringir el acceso al usuario root, descomentamos
la siguiente linea.

PermitRootLogin no

para definir un maximo de conexiones

MaxSessions 3

Permitir el acceso a ciertos usarios

AllowUsers mobileuser1 mobileuser2 *@10.0.0.0/8

Reto: A la m谩quina virtual no se puede conectar ni root, ni braulio, solo nodejs sin necesidad de contrase帽a.

En windows seria:

Abrir powershell

ssh-keygen.exe

type $env:USERPROFILE\.ssh\id_rsa.pub | ssh {IP-ADDRESS-OR-FQDN} "cat >> .ssh/authorized_keys"

Y listo 馃槃

instalaci贸n y copia de la llave publica al servidor desde terminal de otra maquina en la red

Dejo por aqu铆 un peque帽o apunte:

En el caso del video la comunicaci贸n es 煤nicamente en esa direcci贸n, es decir, puedes acceder a trav茅s de ssh sin contrase帽a a tu target que en este caso ser谩 la m谩quina virtual que tengas. Pero para esto debes generar t煤 las claves en tu ordenador anfitri贸n.

Key_generator_host --ssh鈥> target host

Sin embargo, se puede realizar de otra forma ya que yo tengo un Windows y mi m谩quina virtual de Ubuntu est谩 en un VirtualBox y no me apetec铆a ejecutar el comando ssh-keygen desde Windows ya que no me gusta windows 馃槂 . Yo utilizo MobaXterm para conectarme a la m谩quina de Ubuntu, pero vale cualquier otro programa (p.e.:Putty)

Lo que hago es relativamente simple salvo por un matiz:

  1. Ejecuto en el target (al que me quiero conectar) el siguiente comando: ssh-keygen y genero las claves p煤blica y privada

  2. MobaXterm me permite crear una sesi贸n sftp para descargarme la clave privada generada que vendr谩 en .ssh/id_rsa . Esa clave la guardo en una carpeta de mi windows y la a帽ado en la configuraci贸n avanzada de moba al configurar una sesi贸n

  3. Por 煤ltimo en el target debo de ejecutar los siguientes comandos:
    cat ./ssh/id_rsa.pub >> ./ssh/authorized_keys
    chmod 600 ./ssh/authorized_keys

    En este 煤ltimo paso estariamos creando un fichero con todas las claves p煤blicas en el target que permitan la conexi贸n a trav茅s de ssh sin contrase帽a sabiendo, claramente, que el que realiza la conexi贸n ssh tiene la clave privada

Espero que sirva
馃槃

Muy muy buen video curso

ssh-copy-id [email protected]_host

En las mismas opciones de config

se puede lograr lo que propone el profe

Porque no me funciona el raton capturado?

Entendido y funcional.

las conexiones a los servidores por ejemplo en entornos en los que manejo un master siempre se conectan por claves ssh generadas

Si ven que su consola no es tan bonita y no tiene las funciones como cambiar de comando tan facilmente es debido a que en este video estan usando ZSH: https://ohmyz.sh/

como no pude utilizar el ssh-copy-id porque tengo maquina windows, utilice cat

cat id_rsa.pub | ssh [email protected]192.168.8.105 "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"

hice la prueba con centos y ubuntu鈥 perfect! 馃槂

Gracias

Excelente!

siempre aseg煤rense de que la tienen la conexi贸n ssh activa, con el siguiente comando se puede ver el estado de SSH
systemctl status ssh
o tambien con
service ssh status

Les comparto este enlace donde se explica en mas detalle como crear la llave ssh

La instrucci贸n AllowUsers permite varios usuarios en la misma linea separados por un espacio.
Tambien es posible restringir por el grupo del usuario con la instruccion AllowGroups y recibe los grupos de la misma forma que los usuarios

En Windows adem谩s de Putty, tambi茅n pueden descargar openssh y usar porwershell.

ssh es un protocolo muy subersivo, ya que tambi茅n permite copiar archivos, montar un sistema de archivos remoto (aka carpeta compartida), y hacer tuneles seguros de tr谩fico IP para acceder servicios (muy util para desarrollo de aplicaciones)

Hola comunidad, les paso este link, si desean desplegar un banner antes de autenticarse https://www.cyberciti.biz/howto/quick-tip-display-banner-message-before-openssh-authentication/amp/

https://www.thegeekdiary.com/centos-rhel-how-to-restrict-ssh-login-by-time-of-day/

Comparto esta gu铆a para configurar el acceso por ssh a los servidores especificando horas y d铆as.

Si tengo maquina virtual de Ubuntu, como seria la jugada?

En mi caso use una maquina virtual desde windows. Para enviar la llave ssh utilice el siguiente comando desde Windows Terminal:

cat /path/to/publicKey | ssh [email protected] "cat >> ~/.ssh/authorized_keys"

En Windows pueden usar Putty, sin embargo, si ya tienen instalado Git Bash, deber铆an poder usarlo sin problemas para hacer el proceso ^^

genial procedimiento

entendiendo mas usos del servidor

Me dio el siguiente error al copiar la llave publica ERROR: mktemp failed. A que se debe eso?