Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Tools & Tips
Code

SSH: qué y cómo

by
Difficulty:IntermediateLength:LongLanguages:

Spanish (Español) translation by Alexey Pyltsyn (you can also view the original English article)

Muchos desarrolladores web utilizan SSH ("Secure Shell") a diario para administrar sus servidores, hacer copias de seguridad de los archivos, trabajar de forma remota y muchas otras tareas. Hoy, explicaré qué es SSH, hacer una breve revisión de la historia y, por último, enseñarle cómo configurarlo en su servidor remoto o incluso en su red local. ¡Empecemos!


Una explicación de partida

Si estás leyendo esto, es probable que estés al menos algo familiarizado con Terminal (o en Windows, algo como Cygwin). Si es así, comprenderá esta rápida explicación funcional de SSH.

SSH está esencialmente usando una conexión de red para ingresar a la Terminal en otra computadora.

Si no está familiarizado con Terminal, hay muchas explicaciones y guías para principiantes de Terminal, tanto aquí en Nettuts + como en otros lugares. El poder de SSH depende de su simplicidad; Al ofrecerle acceso a la Terminal de otra máquina, SSH corta a la persecución y le da control total sobre una máquina remota. Si comprende el poder de la Terminal y su conexión directa con el funcionamiento interno de su máquina local, entonces comprende el poder de SSH.


Una breve historia

SSH se desarrolló en su estado infantil en 1995. El desarrollador principal, Tatu Ylonen, lo desarrolló como la primera forma segura de administrar un sistema UNIX remoto. Antes de SSH, las únicas herramientas que existían enviaban información como contraseñas en texto sin cifrar.


Entonces, ¿cómo lo uso?

Hay un millón de guías por ahí sobre cómo configurar SSH. Cubriremos específicamente un método hoy. Lo primero es lo primero, querrá asegurarse de tener SSH en su sistema.

  • Mac - una versión de OpenSSH viene preinstalada.
  • Windows - siga una guía como esta o esta para instalar Cygwin y el paquete "openssh".
  • Linux - es muy probable que OpenSSH ya esté instalado, pero si no lo está, puede seguir la misma guía para instalarlo.

Para determinar si SSH está instalado, ejecute `which ssh`. Si la Terminal devuelve algo a lo largo de las líneas de /usr/bin/ssh, ¡entonces ya está listo! De lo contrario, siga una de estas guías para instalarlo.

En este artículo, asumiré que la versión que está utilizando es OpenSSH; Existen algunas diferencias de configuración que dependen de su versión de SSH. Explicaremos cómo configurar una Mac para conectarse a un servidor MediaTemple a través de un único comando SSH. Una vez que tenga SSH instalado en su máquina, deberá asegurarse de que su host de destino tenga SSH habilitado. SSH se ejecuta en el puerto 22 de forma predeterminada; puede usar una herramienta de línea de comandos como nmap para hacer ping a su servidor para determinar si el puerto 22 acepta conexiones entrantes, como esto

Por supuesto, es probable que tenga acceso a la interfaz administrativa del servidor. Asegúrese de revisar las opciones y habilitar SSH. En un servidor Mediatemple, esta configuración se encuentra en el panel de control del servidor. Se puede acceder a Mediatemple SSH mediante root@primarydomain.com. Puede agregar usuarios a la cuenta, pero para mantener las cosas simples, usaremos root@primarydomain.com.

Una vez que SSH esté habilitado (y haya establecido una contraseña de root en el administrador de su servidor), puede ejecutar la siguiente línea de SSH en su servidor.

... donde primarydomain.com es tu dominio principal de MediaTemple. Se le pedirá su contraseña (que es la contraseña de root que estableció en el panel de control). Si no está utilizando MediaTemple, también puede SSH directamente a la dirección IP de su servidor.

Si utiliza un alojamiento compartido, es probable que no inicie sesión como root. En su lugar, iniciará sesión con un nombre de cuenta de usuario. Por ejemplo, si está utilizando un servicio como Site5, puede iniciar sesión con un nombre de usuario en un subdominio, como este:

En última instancia, estas configuraciones dependerán de su compañía de servidor web específica. Consulte la documentación de su anfitrión para más información.

Una vez que esté "instalado", puede ejecutar comandos y atravesar el sistema de archivos dentro de Terminal. Dependiendo de su nivel de acceso, puede instalar elementos en su servidor utilizando los comandos apt-get o wget. Puede administrar su servidor Apache, editar archivos de configuración con un editor de texto basado en Terminal, ver registros de errores, borrar cachés, ver archivos directamente en un servidor para asegurarse de que sean la versión correcta y muchas otras tareas de administración de sistemas de nivel inferior . Ahora, ¿qué pasaría si quisiera hacer más, más rápido con SSH?


¿Cómo lo uso ... mejor?

Hay un montón de cosas poderosas que SSH te abre. Vamos a omitir algunos de ellos (ya que algunos están más relacionados con el administrador de sistemas, como la tunelización). Pero vamos a repasar algunos trucos útiles.

Inicio de sesión súper rápido

Estás pensando, "parece que debería haber una manera más rápida de hacer esto". Tienes razón. Y ahí está. En lugar de tener que recordar su dominio, contraseña y nombre de usuario para cada servidor, puede configurar algunas configuraciones que le permitirán acelerar el proceso a algo en este sentido.

Con la configuración correcta, puede ejecutar esto, y sin tener que ingresar contraseñas, direcciones IP o nombres de dominio largos, ¡ya está! Una vez más, asumiremos que está iniciando sesión en un servidor de MediaTemple. Primero, generaremos claves ssh. Este es básicamente un conjunto de claves cifradas que viven en ~/.ssh en su máquina local. Tienes una clave "pública" y una clave "privada". Entonces, lo primero es abrir una nueva ventana de Terminal y crear la carpeta .ssh en su directorio de inicio.

A continuación generará sus claves con la siguiente línea. (Esto viene directamente de la documentación de MediaTemple).

Esta línea generará una clave ssh de tipo rsa, con 2048 bits (por seguridad), en la ubicación del archivo especificada, con el comentario especificado. Se le solicitará una contraseña, pero no es obligatorio ni necesario; no proporcionar una contraseña le permitirá iniciar sesión automáticamente. El tipo RSA es para la versión 1 del protocolo SSH. El tipo DSA es para la versión 2 del protocolo. Consulte con su servidor web para saber qué versión están usando. Una vez que se generen las claves, ejecutará esto para asegurarse de que las configuraciones de SSH estén configuradas con los permisos correctos.

A continuación, cargará su clave pública a su servidor. Hay bastantes maneras de hacer esto; De esta manera también viene de los documentos de MediaTemple.

Este código hace eco de su id_rsa.pub a través de un `|` (pipe) en el siguiente comando, que es un SSH en root@example.com, donde ejecutará un eco y una concatenación de lo que canalizó en el primer comando. Suena un poco complicado, por lo que hay algunas formas alternativas de manejar esto. Esencialmente, no querrá saltos de línea y su clave pública en su propia línea en un archivo, se denomina authorized_keys en su servidor en el directorio ~/.ssh/. Por lo tanto, si esta es la primera o la única clave que desea en su servidor, puede ejecutar este comando para copiarlo directamente en esa ubicación.

Esta línea básicamente dice "copie este primer archivo a través de SSH al servidor en esta ubicación en relación con mi directorio de inicio actual".

Once your authorized_keys contains your public key, you can attempt to login to the server with ssh username@example.com. If you put your public key in the root user directory's SSH configuration files, you will be able to login directly to root. Se le preguntará acerca de una huella digital rsa; Adelante y permite esta acción. Agrega el servidor al que se está conectando a un archivo conocido_hosts. Este archivo se puede usar para muchas cosas diferentes, pero particularmente para protegerse contra lo que se llama un ataque de "hombre en el medio". Si desea leer un poco más sobre esto, consulte esta explicación.

Si puede iniciar sesión correctamente en su servidor, como si hubiera ingresado una contraseña, sus claves funcionan correctamente. El siguiente paso es agregar un par de líneas para un acceso directo a un archivo de configuración en su máquina. Abra ~/.ssh/ config en su editor de texto favorito (créelo si no existe) y agregue lo siguiente:

Donde "shortname" es un apodo para el servidor en el que desea iniciar sesión. Por ejemplo, "Host myserver" me permitiría hacer ssh myserver. HostName es la ubicación de su servidor y, por supuesto, el usuario es su nombre de usuario. Es posible que tenga User root en este punto. Una vez que se guarde este archivo, debe poder ejecutar un comando simple para iniciar sesión en su servidor, como este

Git sin un hub

Tenga en cuenta: esta sección requiere un poco de familiaridad con Git.

¡Puede usar SSH para configurar sus propios repositorios Git en su servidor! Esto es útil para las empresas que no quieren exponer su código en GitHub por cualquier motivo, y es genial poder enviar directamente desde una máquina local a un repositorio Git en su propio servidor.

Para configurar esto, asegúrese de que Git esté instalado tanto en el host como en su máquina local. Es posible que deba pasar por la compañía de su servidor web para instalar Git. A continuación, ejecute git init en su servidor en la ubicación en la que desea que esté su repositorio Git. Por supuesto, puede hacer esto de cien maneras diferentes, pero si prefiere no tener un repositorio simple, puede usar sucursales para enviar desde su máquina local. Aquí hay un flujo de trabajo común.

Básicamente, lo que está sucediendo aquí es que está iniciando sesión en el servidor, cambiando a la ruta de repositorio deseada, creando un repositorio y agregando una rama de "ensayo" (staging) a la que puede acceder desde su máquina local. Luego, está creando su repositorio local y una rama de "puesta en escena" correspondiente en su máquina local y agregando archivos para realizar un seguimiento del repositorio. Luego viene un compromiso inicial. Luego está agregando el repositorio remoto como un alias de "origen" (origin). A continuación, está empujando la rama de preparación local a la rama de preparación del alias de "origen". Finalmente, está devolviendo al servidor y fusionando la rama "de ensayo" con la rama "maestra" (master) predeterminada.

SFTP > FTP

También puede usar FTP (protocolo de transferencia de archivos), que es esencialmente una versión más segura (cifrada) de FTP que se ejecuta en el puerto 22 (en lugar del puerto FTP predeterminado 21). La mayoría de los clientes FTP también soportan SFTP. FileZilla (para Windows) y Fetch (para Mac) son dos clientes SFTP / FTP populares (y gratuitos).

Fácil acceso a su servidor casi en cualquier lugar

Mientras esté cerca de una computadora que esté conectada a Internet, tenga un Terminal y tenga SSH instalado (por ejemplo, cualquier Mac conectada a WiFi), puede obtener acceso a su servidor a través de SSH. Esa es la mejor parte. No requiere ninguna configuración (suponiendo que no haya configurado ninguna restricción que requiera una clave de acceso coincidente), puede iniciar sesión con su nombre de usuario y contraseña desde prácticamente cualquier lugar. Incluso hay clientes SSH para iOS y otros dispositivos móviles. Esta es una característica muy poderosa de SSH que solo es paralela en portabilidad por aplicaciones basadas en navegador.

Un código local repo

Esperamos que pueda ver el poder de SSH en un ciclo de desarrollo diario.

Imaginemos que usted y algunos amigos están trabajando juntos en algún código. Digamos también que tiene una computadora local sobre la que tiene control total que utiliza como servidor LAMP de desarrollo con algunas VM instaladas en ella. Puede usar SSH localmente para mover archivos hacia y desde su computadora y la máquina de desarrollo. Incluso puede configurar un repositorio local de Git (o svn, o Mercurial), impulsado por SSH para mantener todo bajo control. Quizás incluso podría hacer que la máquina de desarrollo sea la única máquina que está conectada al servidor remoto a través de SSH, de modo que el código tenga que pasar por un proceso de preparación específico antes de que pueda ser puesto en producción. La columna vertebral de todas estas acciones es SSH!

Esperamos que pueda ver el poder de SSH en un ciclo de desarrollo diario, especialmente para equipos que utilizan el control de versiones. Como señalé anteriormente, hay mucha documentación y una gran cantidad de herramientas de nivel de red basadas o basadas en SSH que le darán más control y poder sobre su proceso de desarrollo y su servidor. Who knows? Maybe, one day, you could double as a sysadmin after all!


Algunos otros enlaces útiles

Aquí hay algunos otros enlaces útiles para comenzar con SSH. Ha estado alrededor por un tiempo, así que hay mucha documentación flotando alrededor.

Thanks for reading!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.