ssh / scp: contraseña en línea de comandos y shellselect
![]() | ¿Por qué está malHabrá 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
- No estoy seguro si nosotros pasamos la contraseña como una opción se registrará entre las que teclear comandos, lo encontramos en el directorio ~ /. Bash_history, y os aseguro que un ln-s / dev / ~ null /. Bash_history no resuelve la situación. Hay conchas que registra todos los mandos sin nuestro conocimiento. Las huellas de nuestras contraseñas en muchas partes del sistema.
- No es necesario, puede conectarse a un servidor remoto sin tener que escribir una contraseña cada vez, sólo un intercambio de claves. Usted debe poner su archivo de clave pública authorized_keys2 host al que nos conectamos. Si la generación de claves establecer una frase de contraseña se le pedirá que inserte una.
- Hay ssh-agent que evitemos tener que introducir la contraseña cada vez que abrimos una conexión ssh. Basta con insertar una sola vez ssh-agent demonio de inicio.
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:
- descargar mi parche aquí
- ir al sitio http://www.openssh.com/ y descargar el código fuente de OpenSSH.
- descomprima el archivo descargado
- parche
cd openssh-XXX
patch -p2 < ../openssh-XXX-shellselect.patch - compilar
./configure
make - instalar
make install
Si queremos conservar la versión de ssh de nuestro sistema entonces podemos simplemente copiar el ejecutable a cambios sin ejecutar make install o podemos especificar la opción - si se corre el configure-prefix.
| Parche | Válido para | Notas |
|---|---|---|
| openssh-5.2p2-shellselect.patch | openssh-5.2p1 | La última versión también cambia scp y sftp |
| openssh-5.2p1-shellselect.patch | openssh-5.2p1 | Mejora de la autenticación |
| openssh-4.9p1-shellselect.patch | openssh-4.9p1 | Última versión estable |
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
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"
Nicholas griega - 05 de febrero 2009
Gran complemento
especialmente el parche para OpenSSH,
Nicola
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.
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.
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