Estoy usando Ubuntu 11.10. Estoy usando ssh
para conectarme a muchos servidores diariamente, así que pongo sus parámetros en el .ssh/config
archivo de esta manera:
Host Home
User netmoon
Port 22
HostName test.com
¿Hay alguna forma de poner contraseñas para cada conexión en este archivo, de modo que, cuando el servidor solicita la contraseña, el terminal ingresa su contraseña y la envía al servidor?
Necesito esto porque a veces me mantengo alejado de la PC y cuando regreso, escribo una contraseña y presiono Enterel terminal dice CONNECTION CLOSED
.
PD: No quiero usar un par de claves pública / privada.
command-line
bash
ssh
remote-access
Netmoon
fuente
fuente
SSH_ASKPASS
.Respuestas:
Cambiar la seguridad por conveniencia nunca termina bien ...
¿Podrías usar
ssh-copy-id
delopenssh-client
paquete?De
man ssh-copy-id
:fuente
Si realmente no desea utilizar un par de claves pública / privada, puede escribir un
expect
script para ingresar la contraseña automáticamente según la dirección de destino.Editar: lo que quiero decir es que puede tener una secuencia de comandos que, por un lado, utiliza
expect
para ingresar la contraseña y, por otro lado, lee la contraseña de un usuario y host desde un archivo de configuración. Por ejemplo, el siguiente script de Python funcionará para el escenario de día soleado:y el formato del archivo de configuración sería el siguiente:
Nota: Como se explicó, la secuencia de comandos de Python debería ser mucho más compleja para manejar todos los posibles errores y mensajes de preguntas de ssh y todas las URL posibles (en el ejemplo se supone que será algo así
user@host
, pero la parte del usuario no es ' t utilizado la mayoría de las veces), pero la idea básica seguiría siendo la misma. Con respecto al archivo de configuración, puede usar un archivo de configuración diferente o usar.ssh/config
y escribir su propio código para analizar ese archivo y obtener la contraseña para un usuario y host determinados.fuente
También hay un
sshpass
programa para eso. Cómo utilizar:sshpass -p MyPa55word ssh [email protected]
fuente
sshpass
lugar desshpass
), acaba de almacenar su contraseña ("MyPa55word") en el archivo de historial de su shell..ssh/config
, ¿por qué no en la historia de shell también?brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
. Más: gist.github.com/arunoda/7790979read -s password; sshpass -p "$password" ssh [email protected]
. Esto evitará que la contraseña se muestre en el historial¿Qué hay de ProxyCommand:
Puede usar en
ssh -W
lugar denc
también:fuente
-W
opción. ¿Tienes alguna solución?test.com
requerir una contraseña aHome
requerir una contraseña. ¿Cuál es el punto de? ¿Cuál es el truco para que funcione?No. Esto no es posible, me temo.
La única alternativa real es usar claves privadas, pero has dicho que no quieres (¿por qué no?).
fuente
Puede crear un reemplazo simple de script ssh en / usr / local / bin:
Y luego en su archivo ~ / .ssh / config puede usar
fuente
Yo uso una aplicación de VanDyke Software llamada SecureCRT .
http://www.vandyke.com/products/securecrt/
No es gratis, pero tiene un precio muy razonable. Lo he usado durante años (ejecutándose en Windows o usando Wine) para acceso remoto, emulación de terminal y administración de red (dispersa). Finalmente lanzaron una versión nativa de Linux a principios de 2011.
Tiene soporte para configuraciones de inicio de sesión complejas (o scripts), contraseñas almacenadas (o certificados), múltiples sesiones con pestañas, etc.
Al inicio, puede elegir qué destino remoto (y protocolo) de una lista estructurada (vista de árbol) de máquinas remotas (o locales) almacenadas, o simplemente crear una conexión (que luego se almacena).
Lo he encontrado particularmente útil para sitios remotos con autenticación avanzada, puertos no estándar o negociación de acceso a firewall.
Si está haciendo mucho acceso remoto (parte de su función principal), esta aplicación justificará su gasto en el primer mes de uso.
fuente
Respondiendo la pregunta que hizo, no, no es posible configurar una contraseña predeterminada en un archivo de configuración ssh.
Pero si, como usted dice, es "porque a veces me alejo de la PC y cuando regreso, escribo una contraseña y presiono Enterel terminal dice
CONNECTION CLOSED
" , entonces ¿por qué no evitar cerrar la sesión? SSH puede mantener las conexiones vivas para usted.fuente
Gracias, Arek por la inspiración ...
En lugar de ejecutar otro proceso de shell, esta es solo una función que se ejecuta en el shell bash actual. Ejecuta un solo
awk
comando para analizar el archivo de configuración y determinar si debe tomar la contraseña de una variable de shell o del texto sin cifrar escrito en el archivo de configuración ssh (awk
eneval
lugar dedescribe
debido a problemas que utilicédescribe
).Probé muchas formas de usar
sshpass
directamente en unssh
archivo de configuración usando ProxyCommand, pero nada parecía funcionar como se esperaba, excepto cuando podía iniciar sesión en un cuadro a través de RSA. Pero luego necesitaba enviar una contraseña para abrir mi directorio encriptado. Sin embargo, mi función a continuación parece funcionar para mí en todos los casos, incluso para Cygwin.Entonces una
~/.ssh/config
sección se ve así:Si
#Passvar
existe una en la sección de configuración, esto anula el#Password
.$MYPASS_ENVVAR
es la variable de entorno que contiene su contraseña.¡Disfrutar!
fuente
La respuesta de @BrunoPereira a esta pregunta muestra un método alternativo para conectarse sin ingresar explícitamente una contraseña y evitar las claves ssh.
Puede crear un script, un alias o una función en su
~/.bashrc
para ejecutar rápidamente ese comando.Obviamente, hay consideraciones de seguridad que debe tener en cuenta con este enfoque.
fuente
Aquí está mi variación elaborada sobre la respuesta de @ ArekBurdach. Ofrece las siguientes extensiones:
ssh
línea de comandos; es decir, también es compatible con lassh <args> <host> <commands>
sintaxisssh
ssh_config
scp
, tambiénssh-wrapper
scp-wrapper
Instalación
Defina alias en su
~/.bashrc
:Configuración
Con la
IgnoreUnknown
directiva,ssh
no se queja de unaPassword
directiva recién presentada , por lo que (en contraste con la respuesta de @ ArekBurdach), podemos hacer que esto aparezca como una configuración "real". Si no le gusta esto, es trivial volver a cambiar el guión al comentado.fuente
Si no tiene acceso directo al par de claves, puede cifrar la contraseña en su máquina local.
La forma de hacerlo es encriptar su contraseña usando la clave además del ProxyCommand de @Eric Woodruff.
Una forma de combinar es usar tubería:
dónde
fuente
Hay una ligera variante de una forma descrita en el blog sobre cómo usar
sshpass
que se puede encontrar aquí . Dado que tiene una contraseña cifrada con gpg (cómo se describe esto en el blog), puede hacer algo como esto:y simplemente guarde ese comando como un alias en su
.bashrc
.Si quieres hacer un túnel a través de esa conexión, puedes hacer algo como
fuente