ssh / scp: contraseña en línea de comandos y shellselect

¿Por qué está mal

Habrá pasado la cabeza al menos una vez en tu vida puede cambiar la contraseña como una opción para el cliente ssh. Entonces, ¿por OpenSSH no ha proporcionado?

Algunas razones pueden ser estas

En algunos casos es conveniente

Entonces se hace necesario cambiar la contraseña como una opción de ssh?

Puede ser útil cuando se trabaja de forma remota en un servidor en la intranet de una media. Si no podemos intercambiar claves con todos los servidores en los que el acceso. A menudo sucede que las contraseñas de los servidores dentro de una empresa son conocidas por todos los empleados, y son a menudo muy embarazoso como "contraseña", "admin", "foo" o "root".

En este caso, ¿por qué no dárselo a ssh como una opción, así que podemos crear alias o utilizar scripts de shell simple, como shellselect que vamos a ver, podemos simplificar la administración de servidores.

¿Cómo-

Primero necesitamos descargar el código fuente de OpenSSL, entender cómo funciona, dónde se almacena la contraseña, el cambio a leer, incluso desde la línea de comandos, corregir cualquier error, compila todo, asegúrese de que funciona. No tengas miedo, ya he hecho esto y he creado un parche, sólo tiene que descargar las fuentes y aplicar mi parche.

Te digo cómo:

Terminamos. Vemos que cuando ssh invocará el sistema. Verificar

 $ Ssh - ayuda
 uso: ssh [-1246AaCfgKkMNnqsTtVvXxY] bind_address [b] [-c cipher_spec]
            [D-bind_address [: puerto]] [-e escape_char []-f ConfigFile]
            [Identity_file-i] [-L [bind_address: puerto]: host:] hostport
            [] Login_name-l [-m mac_spec] [-O ctl_cmd] [-o opción] [-p puerto]
            [-R [bind_address: puerto]: Host: hostport] [-S ctl_path]
            [W-local_tun [: remote_tun]] [user @] host [comando]

Si bien aceptamos las opciones de ssh

 $. / SSH - ayuda
 uso: ssh [-1246AaCfgKkMNnqsTtVvXxY] bind_address [b] [-c cipher_spec]
            [-D [bind_address: puerto]] [-e escape_char]] archivo de configuración [-F
            [Identity_file-i] [-L [bind_address: puerto]: host:] hostport
            [] Login_name-l [-m mac_spec] [-O ctl_cmd] [-o opción] [-p puerto]
            [-R [bind_address: puerto]: Host: hostport] [-S ctl_path] [contraseña]-W
            [W-local_tun [: remote_tun]] [user @] host [comando]

Como se puede ver que hay [W-contraseña] más que la versión estándar. Ahora hemos demostrado que todo funciona:
./ssh -W password username@hostname
si has seguido mis pasos correctamente que haya entrado al usuario el nombre de host cono nombre de usuario del servidor.

Shellselect

shellselect es un script bash que explota la capacidad de nuestros ssh para aceptar la contraseña desde la línea de comando para abrir una conexión remota.

Lanzar aparecerá una ventana como se muestra a continuación.

shellselect

shellselect


Para conectarse a un servidor sólo tienes que seleccionar uno de la lista y pulse el botón OK. Simple no!

La instalación es aún más fácil, sólo necesita completar un archivo de texto con la siguiente información: IP, la etiqueta, el usuario, el protocolo (ssh o telnet) y posiblemente una contraseña. Si la contraseña no se especifica se llama el sistema normal que ssh le pedirá las credenciales de acceso. De lo contrario, pondrá en marcha ssh con la opción-W. Como este

 10.50.2.101 ssh root root DC-TIM
 10.60.11.251 ssh root root_password TECTEST
 capsula.no cápsula raíz ssh-ip.org
 92.243.11.13 metales ssh danilo
 10.50.5.100 ssh raíz QuaggaTest Qpass
 10.50.2.102 telnet de usuario cisco cisco

Shellselect, la secuencia de comandos

  # / Bin / bash

 ProcessLine () (
   línea = "$ @"

   $line | awk '{ print $1 }' ) ; IP = $ (echo $ line | awk '(print $ 1)');
   $line | awk '{ print $2 }' ) ; HOST = $ (echo $ line | awk '(print $ 2)');
   $line | awk '{ print $3 }' ) ; USUARIO = $ (echo $ line | awk '(print $ 3)');
   $line | awk '{ print $4 }' ) ; PROTOCOLO = $ (echo $ line | awk '(print $ 4)');
   $line | awk '{ print $5 }' ) ; PASS = $ (echo $ line | awk '(print $ 5)');

   "x $PASS " = "x" ] ; then if ["x $ PASS" = "x"] then
       PASS = "X"
   fi

   " ZENITY_OPTIONS = "$ PASS ZENITY_OPTIONS $ $ $ $ USER $ HOST protocolo IP"
 )

 # # # # # # Principal
 HOME = "~"
 /bin/ssh" SSH = "$ HOME / bin / ssh"
 /prog/shellselect/hosts" FILE = "$ HOME / prog / shellselect / hosts"

 ZENITY_GENERAL_OPTIONS = "- shellSelect título - ancho de 420"
 --list --print-column ALL --hide-column 1 --column pass --column IP --column Host --column User --column Protocol" ZENITY_OPTIONS = "$ ZENITY_GENERAL_OPTIONS - Lista - TODOS columnas de impresión - cuero-columna 1 - pass columna - la columna IP - columna Host - columna de usuario - la columna Protocolo"

 "$1" ! = "" ] ; then if ["1" $! = ""] then
     FILE = "$ 1"
    ! -f $FILE ] ; then si [!-f $ FILE] entonces 
        : does not exists" echo "$ archivo: no existe"
        la salida 1
    ! -r $FILE ] ; then elif [!-r $ FILE] entonces
        : can not read" echo "$ archivo: no se puede leer"
        la salida 2
    fi
 fi

 Lea # $ FILE utilizando el archivo de los descriptores
 0 exec 3 <& 0
 $FILE Exec 0 <$ FILE

 COUNT_LINE = 0

 line; do mientras que la línea leer, hacer
     ProcessLine $ line
     $COUNT_LINE + 1 ) ) COUNT_LINE = $ (($ COUNT_LINE + 1))
 hecho
 <& 3 Exec 0 <& 3

 # Hacer comando zenity

 --height $((170 + ($COUNT_LINE - 1) * 26))" ZENITY_OPTIONS = "$ ZENITY_OPTIONS - altura $ ((170 + ($ COUNT_LINE - 1) * 26))"
 zenity $ZENITY_OPTIONS | tr '|' ' ' ` PUNTO $ = `| ZENITY_OPTIONS tr zenity '|'''`

 $ITEM | awk '{ print $1 }' ) PASSWORD = $ (echo $ PUNTO | awk '(print $ 1)')
 $ITEM | awk '{ print $2 }' ) IP = $ (echo $ PUNTO | awk '(print $ 2)')
 $ITEM | awk '{ print $3 }' ) HOST = $ (echo $ PUNTO | awk '(print $ 3)')
 $ITEM | awk '{ print $4 }' ) USUARIO = $ (echo $ PUNTO | awk '(print $ 4)')
 $ITEM | awk '{ print $5 }' ) PROTOCOLO = $ (echo $ PUNTO | awk '(print $ 5) ")

 in hogares en los $ PROTOCOLO
     ssh2 ) ssh | ssh2)
         " $PASSWORD " = "X" ] ; then if ["$ CONTRASEÑA" = "X"] then
             $IP $ Ssh $ USER @ $ IP
         más
             $IP -W $PASSWORD $ Ssh $ USER @ $ $-W IP CONTRASEÑA
         fi
         ;;
     telnet)
         $ telnet IP 23
         ;;
     *)
         echo "protocolo desconocido"
         ;;
 esac
 exit 0 

Los parámetros sólo se establecen HOME, SSH y FILE. El hogar es el directorio principal, SSH es la ruta de acceso al ejecutable como SSH (el que tiene los parches) que acepte la opción-W y del fichero se inserta el nombre del archivo de configuración.

4 Respuestas a "ssh / scp: contraseña en línea de comandos y shellselect"

  1. Nicholas griega - 05 de febrero 2009

    Gran complemento
    especialmente el parche para OpenSSH,

    Nicola

  2. Gianluca - 03 de agosto 2009

    Hola Lo siento, pero he instalado openssh y sus parches entre las nuevas opciones-W ssh para mí la contraseña pero no importa si usted usa las llamadas de todos modos, así que los detalles de instalación son correctos o lo que se describe anterior no funciona.

  3. Pluma - 21 de agosto 2009

    El parche funciona con servidores que utilizan la versión 2 del protocolo SSH, ¿por qué no trabajas aquí podría errese que el servidor intenta conectarse sólo acepta la versión 1. Pruebe a ejecutar con la opción-v y verificación
    Parece que la línea

    debug1: versión del protocolo remoto de 2,0

    Otra razón por la cual usted puede pedir la contraseña puede ser que el servidor acepta la autenticación "password", en lugar de utilizar el "teclado interactivo. Usted puede ver leyendo la línea

    debug1: Autenticaciones que puede seguir: publickey, contraseña, el teclado interactivo

    Escribí otro parche para garantizar el funcionamiento en estos dos casos se aplica a la versión de ssh openssh-5.2p1. Entonces usted debe descargar la nueva fuente ssh y aplicar este parche:

    http://www.piumalab.org/wp-content/uploads/openssh-5.2p1-shellselect.patch

    Buena compilación.

  4. Maryuano - 27 de abril 2010

    Vale para elaborar secuencias de comandos bash para automatizar el trabajo en diferentes máquinas.

    Gran PiumaLab

Deja una respuesta