Tutorial de SSH Para Linux

18
Tutorial de SSH para Linux Este documento cubre el cliente SSH en el Linux del sistema operativo y otros sistemas operativos que usan OpenSSH. Si se utiliza de Windows , por favor lea el documento Tutorial de SSH para Windows Si utiliza Mac OS X o cualquier otro sistema basado en Unix, ya debe tener OpenSSH instalado y se puede usar este documento como referencia. Este artículo es uno de los mejores tutoriales que cubren SSH a través de Internet. Fue escrito originalmente en 1999 y se revisó completamente en 2006 para incluir información nueva y más precisa. A partir de octubre de 2008, ha sido leído por más de 473.600 personas y siempre aparece en la parte superior de los resultados de búsqueda de Google para SSH, SSH y Tutorial de Linux. Contenido [ ocultar ] 1 ¿Qué es SSH? 2 Introducción 3 Generación de una clave o 3.1 Instalación de la clave pública de forma manual o 3.2 Instalación de la clave pública de forma automática 4 Utilización del programa ssh-agent 5 Reenvío de sesiones de X11 6 TCP Port Forwarding 7 proxy SOCKS5 8 comandos que se ejecutan a través de SSH 9 Uso de SCP 10 Mantener la sesión SSH Alive 11 Finalización de la sesión SSH 12 Referencias externas 13 créditos ¿Qué es SSH? Hay un par de maneras que usted puede acceder a una shell (línea de comandos) de forma remota en los sistemas Linux / Unix. Una de las formas más antiguas es utilizar el programa telnet, que está disponible en la mayoría de los sistemas operativos de red capaces. Acceso a una cuenta shell a través del método de telnet, aunque representa un peligro en el que todo lo que usted envía o recibe más de que la sesión de telnet es visible en texto plano en su red local, y la red local de la máquina que se está conectando. Así que cualquiera que pueda "oler" la conexión en el medio se puede ver su nombre de usuario, contraseña, dirección de correo electrónico que usted lee, y los comandos que se

Transcript of Tutorial de SSH Para Linux

Page 1: Tutorial de SSH Para Linux

Tutorial de SSH para Linux

Este documento cubre el cliente SSH en el Linux del sistema operativo y otros

sistemas operativos que usan OpenSSH. Si se utiliza de Windows , por favor lea

el documento Tutorial de SSH para Windows Si utiliza Mac OS X o cualquier otro

sistema basado en Unix, ya debe tener OpenSSH instalado y se puede usar este

documento como referencia.

Este artículo es uno de los mejores tutoriales que cubren SSH a través de

Internet. Fue escrito originalmente en 1999 y se revisó completamente en 2006

para incluir información nueva y más precisa. A partir de octubre de 2008, ha

sido leído por más de 473.600 personas y siempre aparece en la parte superior

de los resultados de búsqueda de Google para SSH, SSH y Tutorial de Linux.

Contenido [ ocultar ]

1 ¿Qué es SSH?

2 Introducción

3 Generación de una clave

o 3.1 Instalación de la clave pública de forma manual

o 3.2 Instalación de la clave pública de forma automática

4 Utilización del programa ssh-agent

5 Reenvío de sesiones de X11

6 TCP Port Forwarding

7 proxy SOCKS5

8 comandos que se ejecutan a través de SSH

9 Uso de SCP

10 Mantener la sesión SSH Alive

11 Finalización de la sesión SSH

12 Referencias externas

13 créditos

¿Qué es SSH?

Hay un par de maneras que usted puede acceder a una shell (línea de

comandos) de forma remota en los sistemas Linux / Unix. Una de las formas más

antiguas es utilizar el programa telnet, que está disponible en la mayoría de los

sistemas operativos de red capaces. Acceso a una cuenta shell a través del

método de telnet, aunque representa un peligro en el que todo lo que usted

envía o recibe más de que la sesión de telnet es visible en texto plano en su red

local, y la red local de la máquina que se está conectando. Así que cualquiera

que pueda "oler" la conexión en el medio se puede ver su nombre de usuario,

contraseña, dirección de correo electrónico que usted lee, y los comandos que se

Page 2: Tutorial de SSH Para Linux

ejecuta. Por estas razones se necesita un programa más sofisticado que el telnet

para conectarse a un host remoto.

Una sesión de Telnet sin cifrar

SSH, que es un acrónimo de Secure Shell, fue diseñado y creado para ofrecer la

mejor seguridad al acceder a otro ordenador de forma remota. No sólo cifrar la

sesión, sino que también proporciona mejores servicios de autenticación, así

como las características como la transferencia segura de archivos,

redireccionamiento de X período de sesiones, el reenvío de puertos y más para

que pueda aumentar la seguridad de otros protocolos. Se pueden utilizar

diferentes formas de cifrado que van en cualquier lugar de 512 bits en un

máximo de hasta un máximo de 32768 bits e incluye algoritmos de cifrado como

AES (Advanced Encryption Plan), Triple DES, Blowfish, Cast128 o Arcfour. Por

supuesto, la más alta de los bits, más tiempo se necesita para generar y utilizar

claves, así como el tiempo que tardará en pasar los datos sobre la conexión.

Un cifrado sesión ssh

Page 3: Tutorial de SSH Para Linux

Estos dos diagramas de la izquierda muestran cómo una sesión de Telnet pueden

ser vistos por cualquiera en la red mediante el uso de un programa de sniffing

como Ethereal (ahora se llama Wireshark) o tcpdump. En realidad es bastante

fácil para hacer esto y por lo que cualquiera en la red puede robar sus

contraseñas y otra información. El primer diagrama muestra el usuario jsmith

iniciar sesión en un servidor remoto a través de una conexión telnet. Él tipos de

su nombre de usuario y contraseña jsmith C0lts06!, Que pueden ser vistos por

cualquier persona que está usando las mismas redes que se utilizan.

El segundo diagrama muestra cómo los datos en una conexión encriptada SSH al

igual que se cifra en la red y por lo tanto no puede ser leído por cualquier

persona que no tiene las claves negociadas sesión, que es sólo una forma

elegante de decir que los datos se encuentre codificada. El servidor todavía se

puede leer la información, pero sólo después de la negociación de la sesión

cifrada con el cliente.

Cuando digo revueltos, no me refiero al igual que los antiguos canales de pago

por cable donde todavía se puede ver un poco las cosas y escuchar el sonido, me

refiero a realmente revueltos. Por lo general, el cifrado significa que los datos se

ha cambiado a tal grado que a menos que tenga la clave, es realmente difícil de

descifrar el código con un ordenador. Se llevará en el orden de años para el

hardware comúnmente disponibles para descifrar los datos cifrados. La premisa

es que el momento en que podía romper, los datos no sirve para nada.

Primeros pasos

Este tutorial no va a cubrir cómo instalar SSH, sino que abarcará la forma de

utilizar para una variedad de tareas. Consulte el documento de su distribución de

Linux para obtener información sobre cómo configurar OpenSSH.

Lo más probable es que si usted está utilizando una versión de Linux que fue

puesto en libertad después de 2002, que ya han OpenSSH instalado. La versión

de SSH que usted desea utilizar en Linux se llama OpenSSH. Al escribir estas

líneas (octubre de 2009), la última versión disponible es de 5,3, pero puede

encontrar versiones de la 3.6 en adelante. Si usted está usando cualquier cosa

inferior a la versión 3.9, yo te aconsejo encarecidamente que lo actualice.

OpenSSH puede obtenerse a partir de http://www.openssh.org/~~V

Para realmente hacer ssh útil, necesita una cuenta de depósito en una máquina

remota, como por ejemplo en un Suso cuenta.

Page 4: Tutorial de SSH Para Linux

Lo primero que vamos a hacer es simplemente conectar a una máquina

remota. Esto se logra mediante la ejecución de 'ssh hostname' en el equipo

local. El nombre de host que se proporciona como un argumento es el nombre

del equipo remoto que desea conectarse. De forma predeterminada ssh a

suponer que usted desea autenticar con el mismo usuario que utilice en el equipo

local. Para modificar esto y utilizar un usuario diferente, sólo tiene que utilizar

remoteusername @ nombre de host como argumento. Tal como en este

ejemplo:

ssh [email protected]

La primera vez que le preguntará si desea añadir el host remoto a una lista de

known_hosts, seguir adelante y decir que sí.

La autenticidad de acogida arvo.suso.org (216.9.132.134) 'no puede

ser establecida. Huellas dactilares de claves RSA es de 53: b4: ad:

c8: 51:17:99:4 b: c9: 08: AC: c1: b6: 05:71:9 b. ¿Seguro que desea

continuar la conexión (sí / no)? Sí Advertencia: de forma permanente

"arvo.suso.org '(RSA) a la lista de hosts conocidos.

Es importante prestar atención a esta cuestión, sin embargo, porque esta es una

de las principales características de SSH. Sede de la validación. En pocas

palabras, ssh se compruebe que se está conectando al servidor que usted cree

que se está conectando. De esta manera si alguien trata de engañarte para que

inicien sesión en su máquina, en vez de modo que puedan rastrear su sesión

SSH, tendrá algún tipo de advertencia, de esta manera:

@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @

@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ADVERTENCIA:

POSIBLE DNS Spoofing DETECTADO! @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @

@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @

@ @ @ @ @ @ @ @ La clave RSA de arvo.suso.org ha cambiado, y la

clave para la dirección IP 216.9.137.122 acuerdo no se ha

modificado. Esto podría significar que DNS Spoofing que está

sucediendo o la dirección IP para el host y su clave de host ha

cambiado, al mismo tiempo. Ofender clave para la propiedad

intelectual en / home / Suso / .ssh / known_hosts: 10 @ @ @ @ @ @ @

@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @

@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ADVERTENCIA: IDENTIFICACIÓN

host remoto ha cambiado! @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @

@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @

Page 5: Tutorial de SSH Para Linux

@ @ @ @ ES POSIBLE que alguien está haciendo algo malo! Alguien

podría estar espiando ahora mismo (man-in-the-middle)! También es

posible que la clave RSA acaba de ser cambiado. La huella de la

clave RSA enviado por el host remoto es 96:92:62:15:90: EC:

40:12:47:08:00: B8: F8: 4b: df: 5b. Por favor, póngase en contacto

con el administrador del sistema. Añadir clave de host correcta en /

home / Suso / .ssh / known_hosts para deshacerse de este mensaje.

Ofender clave en / home / Suso / .ssh / known_hosts: 53 una clave

RSA de arvo.suso.org ha cambiado y que ha solicitado la comprobación

estricta. Verificación de clave de host ha fallado.

Si alguna vez tienes una advertencia como esta, usted debe parar y determinar

si hay una razón por la clave de host del servidor remoto para cambiar (por

ejemplo, si se ha actualizado SSH o el propio servidor actualizado fue). Si no hay

una buena razón para que la clave de host para cambiar, entonces usted no debe

tratar de conectarse a la máquina hasta que no haya contacto con su

administrador acerca de la situación. Si esta es tu propio equipo que está

intentando conectarse, usted debe hacer algunas informática forense para

determinar si la máquina fue hackeado (sí, Linux puede ser hackeado). O tal vez

la dirección IP de su ordenador personal ha cambiado, como si usted tiene una

dirección IP dinámica para DSL. Una vez que ha recibido este mensaje al intentar

conectar a la línea de mi máquina de casa de DSL. Pensé que era extraño ya que

no había actualizado SSH o cualquier cosa en mi máquina de casa y por eso

optan por no tratar de anular la clave de caché. Fue una buena cosa que yo no

intentarlo porque me enteré de que mi dirección IP dinámica había cambiado y

que de casualidad, otra máquina Linux corriendo OpenSSH tomó mi IP antigua.

Después de decir que sí, se le pedirá su contraseña en el sistema remoto. Si el

nombre de usuario que ha especificado existe y que escriba la contraseña remota

de forma correcta, entonces el sistema en caso de que dejen entrar si no es así,

intente de nuevo y si el error persiste, se podría verificar con el administrador

que usted tiene una cuenta en ese equipo y que su nombre de usuario y la

contraseña es correcta.

Generar una clave

Ahora que ha pasado todo ese tiempo leyendo y están conectados ahora, seguir

adelante y cerrar la sesión. ;-) Cuando esté de nuevo al mando del equipo local

ingrese el comando "ssh-keygen-t dsa '.

ssh-keygen-t dsa

Se debe comenzar a escupir lo siguiente:

Page 6: Tutorial de SSH Para Linux

Generación de par dsa pública / clave privada. Introduzca archivo en

el que guardar la clave (/ home / LocalUser / .ssh / id_dsa): Enter

passphrase (vacío sin contraseña): Introduzca misma contraseña de

nuevo: Su identificación se ha ahorrado en / home / LocalUser / .ssh

/ id_dsa. La clave pública se ha ahorrado en / home / LocalUser /

.ssh / id_dsa.pub. La huella digital es: 93:58:20:56:72: d7: bd:

14:86:9 f: 42: aa: 82:3 d: f8: e5 [email protected]

Se le preguntará por la ubicación del archivo de claves. A menos que usted ya ha

creado un archivo de claves en la ubicación predeterminada, puede aceptar el

valor por defecto pulsando la tecla 'enter'.

A continuación se le pedirá una contraseña y le pedirá que lo confirme. La idea

detrás de lo que debes usar una frase de acceso es diferente a la de una

contraseña. Idealmente, usted debe elegir algo único e imposible de adivinar,

como tu contraseña, pero probablemente debería ser algo mucho más tiempo,

como una frase entera. Estos son algunos ejemplos de frases de paso que he

usado en el pasado:

Los cambios de lo correcto de estado a estado

con el fin de la vida es darle propósito

No van a adivinar esta contraseña!

La RIAA solo puede aspirar a mi gran culo

Nunca es un buen día en Teletron

Algunas frases de paso que he utilizado han tenido hasta 60 caracteres, junto

con puntuacion y números. Esto hace que la frase de contraseña difícil de

adivinar. Para que os hagáis una idea de cuánto más seguro es una frase de

paso de una contraseña. Considere esto. Incluso si usted reducido el número de

palabras que alguien podría utilizar una frase de paso de 2.000 palabras

posibles, si esa persona utiliza 5 palabras en una frase de ese conjunto de Word

2000, significaría que hay 32,000,000,000,000,000 diferentes

combinaciones. Compare esto con 6.095.689.385.410.816, que es el total de

combinaciones posibles en una contraseña de 8 caracteres utilizando mayúsculas

y caracteres en minúsculas, números, y la puntuacion (alrededor de 94

caracteres posibles). Así que una contraseña de 8 caracteres tiene 5,25

veces menos combinaciones que una palabra de 5 frase de contraseña. En la

actualidad, la mayoría de la gente elige palabras de un conjunto de 10.000 o

más palabras, con lo que la complejidad de una palabra contraseña 5 a 16.405 o

más veces mayor que la de una contraseña de 8 caracteres. Así, en promedio, la

dificultad de formación de grietas en una palabra de paso es mucho mayor que

Page 7: Tutorial de SSH Para Linux

cualquier contraseña que podría ser utilizado. Curiosamente, el número potencial

de combinaciones, de 8 de la palabra contraseña de alguien con un vocabulario

adulto (8000 palabras o más) es casi igual a la cantidad de 8 combinaciones de

caracteres de contraseña multiplicado por sí mismo o sobre

16,777,216,000,000,000,000,000,000,000,000 combinaciones.

No utilice frases famosas o frases de la contraseña, que puede ser fácil de

adivinar por otra persona o por un programa de formación de grietas en la fuerza

bruta.

La razón por la que se generará un archivo de claves es para que pueda

aumentar la seguridad de su sesión de SSH al no utilizar la contraseña del

sistema. Cuando se genera una clave, en realidad se está generando dos

archivos más importantes. Una clave privada y una clave pública, que es

diferente de la clave privada. La clave privada debe permanecer siempre en el

equipo local y se debe tener cuidado de no perderlo o permitir que caiga en las

manos equivocadas. La clave pública se puede poner en las máquinas que desee

conectar en un archivo llamado .ssh / authorized_keys. La clave pública es

seguro para ser visto por nadie y matemáticamente no puede ser utilizado para

derivar la clave privada. Su justo como si te diera un número 38147918357 y le

pidió a encontrar los números y las operaciones que se utilizan para generar ese

número. Las posibilidades son casi infinitas.

Cada vez que se conecte a través de ssh a un host que tiene su clave pública

carga en el archivo authorized_keys, se utilizará un tipo de respuesta al desafío

de autenticación que utiliza su clave privada y clave pública para determinar si

debe concederse el acceso a ese equipo se le pedirá por su frase clave sin

embargo. Sin embargo, esta es tu proceso local ssh que está pidiendo la palabra

de paso, no el servidor de ssh en el lado remoto. Se pide que se autentifique de

acuerdo a los datos de su clave privada. Uso de la autenticación basada en clave

de lugar de la autenticación por contraseña del sistema puede no parecer gran

parte de la ganancia al principio, pero hay otros beneficios que se explicarán más

adelante, como el registro de forma automática a partir de X Windows.

Instalación de la clave pública de forma manual

Si usted no tiene el programa ssh-copy-id disponible, entonces se debe utilizar

este método manual para la instalación de la clave ssh en la máquina

remota. Incluso si usted no tiene el programa ssh-copy-id, es bueno para hacer

la instalación manual de al menos una vez para que tenga una buena

comprensión de lo que está pasando, porque aquí es donde muchas personas

acaban teniendo problemas.

Page 8: Tutorial de SSH Para Linux

Vaya por delante y copiar la clave pública que se encuentra en ~ / .ssh /

id_dsa.pub a la máquina remota.

scp ~ / .ssh / id_dsa.pub [email protected]: .ssh /

authorized_keys

Se le pedirá la contraseña del sistema en la máquina remota, y después de la

autenticación que se transfiera el archivo. Puede que tenga que crear el

directorio. Ssh en su directorio home en la máquina remota en primer lugar. Por

cierto, SCP es un programa de transferencia de ficheros que utiliza

SSH. Hablaremos más sobre esto más adelante.

Ahora, cuando ssh a la máquina remota, se debe solicitar su clave de contraseña

en lugar de su contraseña. Si no lo hace, podría ser que los permisos y el modo

del archivo authorized_keys y. Ssh en el servidor remoto es necesario establecer

de manera más restrictiva. Usted puede hacer eso con estos comandos en el

servidor remoto:

chmod 700 ~ /. ssh

chmod 600 ~ / .ssh / authorized_keys

También puedes poner la clave pública en el archivo authorized_keys a distancia

con sólo copiar en el búfer de pasta, ingresando en la máquina remota y pegarlo

directamente en el archivo de un editor como vi, emacs o nano. Yo recomiendo

usar el 'gato' para ver el contenido del archivo de clave pública, porque aunque

el uso de menos va a terminar rompiendo la única línea en múltiples líneas.

cat ~ / .ssh / id_dsa.pub

Instalación de la clave pública de forma automática

Una nueva forma que usted puede fácilmente instalar su clave pública ssh en un

host remoto con el programa ssh-copy-id así:

ssh-copy-id [email protected]

Se le pedirá su contraseña en la máquina remota y tomar el cuidado del

resto. Eso fue fácil. Así que ¿por qué no te acabo de decir cómo usar este

programa en el primer lugar? Bueno, en mi experiencia, muchos de los

problemas de la gente tiene con ssh giran en torno a tratar de obtener su clave

pública ssh instalado correctamente. Es una buena cosa que han hecho un

programa para hacer el trabajo sucio por ti, pero en aras de la construcción de

Page 9: Tutorial de SSH Para Linux

sus habilidades, al menos debe hacer la instalación manual de una vez para que

usted sepa lo que está involucrado.

Con el programa ssh-agent

La verdadera utilidad del uso de la autenticación basada en clave viene en el uso

del programa ssh-agent. Por lo general, el programa ssh-agent es un programa

que se inicia antes de iniciar X Windows y, a su vez se inicia X Window para

usted. Todos los programas X ventanas heredan una conexión con el ssh-agent,

incluyendo las ventanas de terminal, como Gnome Terminal, Konsole, xfce4-

terminal, aterm, xterm, etc. Lo que esto significa es que después de haber

puesto en marcha a través de ventanas X de ssh-agent, puede utilizar el

programa ssh-add para agregar su contraseña una vez que el agente y el

agente, a su vez, transmitirá esa información de autenticación automáticamente

cada vez que necesite para usar la frase de contraseña. Así que la próxima vez

que ejecute:

ssh [email protected]

usted podrá acceder de forma automática sin tener que introducir una

contraseña o password. La mayoría de distribuciones recientes se iniciará

automáticamente ssh-agent cuando se conecta a través de ventanas X, como un

gestor de sesiones GDM (login gráfico). He encontrado que a partir de este

escrito las siguientes distribuciones comenzó ssh-agent por defecto.

Debian

Fedora

Gentoo

SuSE

Ubuntu

La mayoría de las distribuciones previas a alrededor de 2002 no se iniciará.

No se preocupe si usted no ve su distribución aparece aquí. Puede comprobar si

ya se está ejecutando mediante la ejecución de este comando.

ps auxw

Si hay un proceso de ssh-agent en la lista, entonces puedes empezar a usarlo,

de lo contrario, usted debe consultar la documentación de su distribución en

OpenSSH y ejecutar el ssh-agent.

Una vez que hayas verificado que ssh-agent se está ejecutando, puede agregar

la clave ssh para que al ejecutar el comando ssh-add:

Page 10: Tutorial de SSH Para Linux

ssh-add

Si el programa encuentra la clave DSA que ha creado anteriormente, se le pedirá

la contraseña. Una vez que usted ha hecho por lo que debe decirle que se ha

añadido a su identidad para el ssh-agent:

Identidad añadido: / home / usuario / .ssh / id_dsa (/ home /

usuario / .ssh / id_dsa)

Ahora usted puede tratar de iniciar sesión en la máquina remota, y esta vez te

darás cuenta de que simplemente se conecta justo en sin pedir ninguna

contraseña o frase de contraseña.

Para hacer más fácil la adición de la frase de contraseña, puede agregar el

programa ssh-add a sus programas de escritorio de inicio de sesión y se abrirá

un mensaje de ventanas X para pedir su contraseña cada vez que inicie sesión

en su escritorio. Usted también debe tener el programa instalado gtk2-

askpass. O x11-askpass. Son los programas reales que la realidad le pedirá su

contraseña. ssh-add simplemente se ejecuta si no su se está ejecutando en un

terminal. A continuación se muestra una captura de pantalla del cuadro de

diálogo de configuración de Gnome Sesiones con ssh-add añade a los programas

de inicio.

Sesión de GNOME con ssh-add programa configurado para ejecutarse y le pedirá su clave para la contraseña de

Page 11: Tutorial de SSH Para Linux

Desvío de sesiones de X11

Una característica menos conocida de X Windows es su transparencia de la

red. Se diseñó para ser capaz de transmitir la información de ventana y de mapa

de bits sobre una conexión de red. Así que, esencialmente, puede acceder a una

máquina de escritorio remoto y ejecutar un programa de ventanas X, como

Gnumeric, Gimp o incluso Firefox y el programa se ejecutará en el equipo

remoto, pero mostrará su producción gráfica en su computadora local.

Para probar esto, usted necesitará una cuenta en un equipo remoto que tiene la

instalación de ventanas X con algunas aplicaciones X Windows. suso.org

servidores no tienen ningún tipo de programas por lo que tendrá que o bien

acceder a uno de sus otras estaciones de trabajo u otro servidor que tiene

ellos. La clave para hacer que el trabajo está utilizando la opción-X, lo que

significa "adelante la conexión X a través de la conexión SSH". Esta es una forma

de túnel.

ssh-X [email protected]

Si esto no funciona, puede que tenga que configurar el demonio SSH en el

equipo remoto para permitir X11Forwarding, compruebe que las siguientes líneas

se establecen en / etc / ssh / sshd_config en ese equipo:

X11Forwarding sí X11DisplayOffset 10 X11UseLocalhost sí

Para algunos programas nuevos y nuevas versiones de X Windows, es posible

que necesite usar el Y-opción en lugar de confianza para el reenvío de X11. Trate

de usar esta opción si su programa de ventanas X11 no empezar a correr con un

mensaje como éste, que era para Gimp:

El programa 'gimp-2.2' recibió una X Window System error. Esto

probablemente refleja un error en el programa. El error fue

'BadWindow (parámetro de la ventana no válido) ". (Detalles: 154

serie 3 error_code request_code 38 minor_code 0) (Nota para los

programadores:. Normalmente, los errores de X se presentan de forma

asíncrona, es decir, usted recibirá el error después de un tiempo

haciendo que para depurar el programa, se ejecuta con la - comando

sync opción de la línea para cambiar este comportamiento. A

Page 12: Tutorial de SSH Para Linux

continuación, puede obtener una traza significativa de su depurador

si se rompe en el gdk_x_error () función.)

TCP Port Forwarding

Al igual que el reenvío de sesión X11, SSH también puede reenviar los otros

puertos TCP a nivel de aplicación, tanto hacia adelante y hacia atrás a través de

la sesión de SSH que usted establezca.

Por ejemplo, puede configurar un puerto de interés para la conexión de la

máquina de casa de arvo.suso.org para que se llevará a conexiones a localhost

puerto 3306 y las remitirá a la mysql.suso.org lado remoto puerto 3306. Puerto

3306 es el puerto que el servidor MySQL escucha en, por lo que le permitiría

pasar por alto los controles normales del huésped que el servidor MySQL se

hacen y permite llevar a cabo programas de interfaz gráfica de usuario de MySQL

en el equipo local durante el uso de la base de datos en su cuenta de Suso. Este

es el comando para lograr esto:

ssh-L 3306: mysql.suso.org: 3306 [email protected]

La L-(lo que significa que el puerto local) toma un argumento de

<local-port>: <connect-to-host>: <connect-to-port>

por lo que se especifique lo host y el puerto de la conexión se vaya a en el otro

lado de la conexión SSH. Cuando usted hace una conexión con el puerto <local-

port>, envía los datos a través de la conexión SSH y luego se conecta a

<connect-to-host>: <connect-to-port> en el otro lado. Desde el punto de vista

de la <connect-to-host>, es como si la conexión fue desde el servidor de SSH

que te conectes a. En el caso anterior, arvo.suso.org.

Esto es muy similar a una conexión VPN le permite actuar como si están

haciendo las conexiones de la red remota que en VPN.

Tómese un momento para pensar en otras conexiones útiles que usted puede

hacer con este tipo de túneles de la red.

Otra utilidad es para cuando estás fuera de casa y no puede enviar correo a

través del servidor de correo ISP de su casa, ya que sólo permite conexiones

locales para bloquear el spam. Usted puede crear un túnel SSH a un servidor

SSH que es local a su ISP y luego hacer que su cliente de correo como

Thunderbird interfaz gráfica de usuario establecer una conexión al servidor local

puerto 8025 para enviar el correo. Este es el comando para crear el túnel:

Page 13: Tutorial de SSH Para Linux

ssh-L 8025: smtp.homeisp.net: 25 [email protected]

Una cosa a notar es que los usuarios no root normalmente no tienen la

capacidad de escuchar en los puertos de red inferiores a 1024, por lo que

escucha en el puerto 25 no iba a funcionar, por lo tanto usamos

8025. Realmente no importa, puede utilizar cualquier puerto, siempre y cuando

el cliente de correo electrónico puede conectarse a él.

También puede invertir la dirección y crear un puerto de atrás hacia

adelante. Esto puede ser útil si desea conectarse a una máquina remota para

permitir las conexiones con Facebook, por ejemplo, yo uso esto a veces de modo

que pueda crear un puerto de reversa 22 (SSH) del túnel para que yo pueda

volver a conectar a través de SSH a una máquina que está detrás de un firewall,

una vez me he ido de esa red.

ssh-R 8022: localhost: 22 [email protected]

Este se conectará a mi máquina de casa y empezar a escuchar en el puerto 8022

no. Una vez que llego a casa, entonces se puede conectar a la máquina que ha

creado la conexión de usar el siguiente comando:

ssh-p 8022 usuario @ localhost

Recuerde que debe utilizar el nombre de usuario correcto para la máquina que

inició el túnel. Puede ser confuso. También hay que tener en cuenta que desde

que se conecta con el host llama localhost, pero es realmente un puerto va a

otro servidor SSH, puede terminar con una clave de host diferente para localhost

la próxima vez que se conecte a localhost. En ese caso, tendría que editar su

fichero .ssh / known_hosts para eliminar la línea de localhost. Usted realmente

debe saber más sobre SSH antes de hacer esto a ciegas.

Como ejercicio final, usted puede mantener su puerto de atrás hacia delante

abierto todo el tiempo al iniciar la conexión con este circuito:

Si bien es cierto, hacer ssh-R 8022: localhost: 22

[email protected]; sleep 60; hacer

De esta manera, si le toca reiniciar el equipo en casa, el túnel inverso intentará

volver a conectarse después de 60 segundos. Siempre tienes las claves de

instalación y de su agente ssh-en la máquina remota. ;-)

Page 14: Tutorial de SSH Para Linux

Proxy SOCKS5

Así que eso es grande y todo, pero a la larga usted va a querer saber cómo se

puede hacer un túnel sin tener que especificar la dirección que desea que

transmita al.

Esto se logra a través de la D-SOCKS5 opción.

ssh-D 9999 [email protected]

Cualquier aplicación que soporte el protocolo SOCKS5 (y la mayoría de los

grandes programas de la red lo hacen) puede enviar su conexión de red a través

de SSH y dinámicamente hacia delante a cualquier host que usted

especifique. Así que para un navegador web, cualquier URL que se escribe en el

campo de URL, se envía a través del túnel SSH. Firefox, Xchat, Gaim y muchos

otros con todo el apoyo SOCKS5. El escenario es por lo general bajo en las

preferencias de los ajustes de conexión.

Recuerde que, en palabras de Benjamín "Tío Ben" Parker, con gran poder

conlleva una gran responsabilidad. Sólo porque usted puede conseguir alrededor

de los firewalls y utilizar otras máquinas para el envío de tráfico de la red, no

quiere decir que algún administrador del sistema no se va a notar.

Comandos que se ejecutan a través de SSH

A veces, usted realmente no desea ejecutar un shell como bash en el cual se

está conectando. Tal vez lo que desea es ejecutar un comando y la salida. Esto

es muy simple lleva a cabo poniendo el comando que desea ejecutar al final de

su comando de conexión ssh.

ssh [email protected] ls-l /

Esto probablemente generará una salida similar a la siguiente.

total de 220 drwxr-xr-x 2 root root 4096 09 de noviembre 04:08 bin

drwxr-xr-x 3 root root 4096 11 de noviembre de inicio 09:29 drwxr-

xr-x 23 root root 122880 14 de noviembre 02:36 dev drwxr-xr -x 68

root root 12288 10 de enero 04:03 etc drwxr-xr-x 189 root root 4096

09 de enero en casa doce y cuarenta drwxr-xr-x 2 root root 4096 12

de marzo 2004 initrd drwxr-xr-x 9 root root 4096 noviembre 9 04:07

lib drwx ------ 2 root root 16384 26 de septiembre 2004 lost + found

Page 15: Tutorial de SSH Para Linux

drwxr-xr-x 2 root root 4096 14 de abril 2004 misc drwxr-xr-x 6 root

root 4096 12 de noviembre 02:11 mnt drwxr-xr-x 3 root root 4096 15

de octubre 22:17 opt dr-xr-xr-x 307 root root 0 14 de noviembre

02:36 proc drwx ------ 44 root root 8192 09 de enero 16:23 drwxr

raíz -xr-x 2 root root 8192 09 de noviembre 04:08 sbin drwxr-xr-x 2

root root 4096 12 de marzo 2004 selinux drwxr-xr-x 9 root root 0 14

de noviembre 02:36 sistemas drwxrwxrwt 20 root root 4096 10 de enero

06 : 46 tmp drwxr-xr-x 17 root root 4096 07 de diciembre 2004 usr

drwxr-xr-x 26 root root 4096 10 de enero 2005 var

A continuación, puede procesar la salida lo que le apetezca con las convenciones

de shell normales.

También se puede hacer algo que se llama obligados al mando en el que la

fuerza cualquier intento de inicio de sesión para ejecutar un comando específico,

independientemente de lo que se especifica en la línea de comandos por parte

del cliente.

Para ello, se pone esta variable y el comando que desea a la fuerza en el archivo

authorized_keys en la máquina remota:

command = "/ usr / bin / backup" ssh-rsa

AAAAB3NzaC1yc2EAAAABIwAAAIEAvna .....

Poner la variable antes del inicio de la línea para la llave. Hay otras variables que

se pueden utilizar aquí como de = "" para permitir que sólo desde un host

específico. Estas variables se pueden poner juntos separados por comas.

(Este espacio se ha dejado intencionadamente en blanco)

Uso de SCP

SCP es básicamente un programa que utiliza el protocolo SSH para enviar

archivos entre máquinas a través de y conexión cifrada. Usted puede transferir

Page 16: Tutorial de SSH Para Linux

archivos desde el equipo local a un host remoto, o viceversa, o incluso desde un

host remoto a otro host remoto.

Aquí hay un comando básico que copia un archivo llamado informe.doc desde el

equipo local a un archivo con el mismo nombre en el equipo remoto.

scp informe.doc [email protected]:

Tenga en cuenta que la falta de un nombre de archivo de destino sólo conserva

el nombre original del archivo. Este es también el caso si el destino remoto

incluye la ruta a un directorio en el host remoto.

Para copiar el archivo desde el servidor, que acaba de invertir la de ya.

scp [email protected]: informe.doc informe.doc

Si desea especificar un nuevo nombre para el archivo en el equipo remoto, sólo

tiene que dar el nombre a los dos puntos en el lado de.

scp informe.doc [email protected]: monday.doc

O si desea copiar a un directorio relativo al directorio home del usuario remoto

especificado.

scp informe.doc [email protected]: informes / monday.doc

También puede utilizar fullpaths que están precedidos con un /.

Para copiar un directorio entero de forma recursiva a un lugar remoto, utilice la

opción-r. El siguiente comando copia un directorio con el nombre de correo en el

directorio home del usuario en el equipo remoto.

scp-r [email protected] electrónico:

A veces se desea conservar las marcas de tiempo de los archivos y directorios y,

si es posible, los usuarios, grupos y permisos. Para ello, utilice la opción-p.

scp-rp [email protected] electrónico:

Page 17: Tutorial de SSH Para Linux

Manteniendo su período de sesiones SSH Alive

A veces usted puede tener problemas para mantener su sesión de SSH y de

reposo. Por alguna razón, la conexión que acaba de morir después de X minutos

de inactividad. Por lo general, esto sucede porque hay un cortafuegos entre

usted y el Internet que está configurado para mantener sólo las conexiones con

estado en su memoria durante 15 minutos más o menos.

Afortunadamente, en las últimas versiones de OpenSSH, no hay una solución

para este problema. En pocas palabras lo siguiente:

Host * Protocolo n º 2 TCPKeepAlive sí ServerAliveInterval 60

en el archivo

~ / .ssh / Config

El archivo anteriormente puede ser utilizado para cualquier lado de configuración

del cliente SSH. Vea la página man ssh_config para más detalles. El

'TCPKeepAlive sí "directiva le dice el cliente ssh que debe enviar un poco de

datos a través de la conexión periódicamente para permitir que el servidor sepa

que todavía está allí. 'ServerAliveInterval 60' establece este período de tiempo

de estos mensajes de 60 segundos. Este truco muchos cortafuegos que de otro

modo perder la conexión, para mantener su conexión va.

Finalización de la sesión SSH

Todas las cosas buenas llegan a su fin. Y hay muchas formas más comunes para

poner fin a la sesión de SSH.

salir de

cierre de sesión

(Ctrl-D)

La última es en realidad el usuario presionando la tecla 'Ctrl' y 'd' de la carta, al

mismo tiempo. Todas éstas son formas de terminar la sesión SSH desde el lado

del servidor. Por lo general, salir de la cáscara, que a su vez se cierra la sesión

en la máquina.

Lo que no saben, es que no hay otra manera de cerrar una sesión SSH. Esto es

útil si se pierde la conectividad con la máquina y que no hay manera de poner fin

a la sesión de la shell. Por ejemplo, esto sucede por un momento si usted

Page 18: Tutorial de SSH Para Linux

permanece conectado a un equipo cuando éste está apagado. SSH tiene sus

propios comandos de secuencias de escape de la línea. Estos pueden ser

utilizados para poner fin a las conexiones, crear nuevas delante del puerto o una

lista de los actuales y algunas otras funciones. Para finalizar una conexión,

incluso cuando usted no tiene un símbolo del sistema, el tipo de volver dos veces

(por si acaso) y luego '~'. La secuencia. Eso es una tilde seguida de un período.

(RETURN) (RETURN) ~.

Esto terminará la conexión SSH desde el cliente final en vez del lado del servidor.

Feliz SSH'ing!

Referencias externas

Estos son algunos enlaces donde se puede encontrar más información sobre SSH

Notas de Mark presentación de la reunión de enero 2006 BLUG

OpenSSH Web

Las preguntas más frecuentes de SSH

El artículo Secure Shell en Wikipedia

El viejo no la versión wiki de este tutorial (Actualizado 08/04/2007)

La versión muy anterior de este tutorial (21/02/1999)

Vinculada a la página principal de digg.com (03/03/2006) (823 votos en!)

Créditos

El documento original, gráficos y ejemplos de Mark Krenz ([email protected])

Gracias a las siguientes personas para el envío de correcciones:

o Zake Stahl (varias correcciones)

o Christopher Mylonas (darse cuenta de que MySQL debería ser 3306, no

3066)

o Tehiri Tehiri (lo que sugiere una aclaración en la sección de nombre de

usuario y contraseña)

o Behrang Saeedzadeh (Al darse cuenta de contacto error tipográfico)

o Pratik Mallya (lo que sugiere que menciono ssh-copy-id)

o Otras personas que aparece en la página de la historia de este documento.