Intenté escribir un script de shell que puede iniciar sesión automáticamente en un servidor ssh usando la contraseña que se menciona en el script. He escrito el siguiente código:
set timeout 30
/usr/bin/ssh -p 8484 [email protected]
expect
{
"[email protected]'s password"
{
send "password\r"
}
}
Este código no se está ejecutando correctamente, todavía está pidiendo la contraseña. ¿Puede alguien ayudarme a resolver esto?
Respuestas:
Una vez escribí un
expect
script para iniciar sesión en un servidor ssh (como su caso) y mi script fue algo como esto:Creo que tal vez
interact
falta en tu guión.fuente
cd
yls
y leer el contenido del archivo también. ¿Es posible hacerlo después de interactuar? Respondals
comando después del inicio de sesión. Por ejemplo, después de enviar la contraseña, haga unexpect
con el texto del símbolo del sistema (para asegurarse de haber iniciado sesión), luegosend "ls\r"
. Todo esto va antesinteract
.file_list
después de salir para acceder desde el símbolo del sistema localLo estás haciendo por el camino equivocado. Lo que desea hacer es generar un par de claves ssh sin contraseña y luego (siempre que el servidor admita la autenticación de clave RSA) puede ingresar sin tener que escribir una contraseña para todos. Este es un riesgo de seguridad si su clave privada se almacena en algún lugar donde podría ser robada.
Sigue estos pasos:
mkdir -p ~/.ssh
cd ~/.ssh
ssh-keygen -type dsa -i mysshkeys
Ahora habrá dos archivos en su
~/.ssh
directorio,mysshkey.pub
ymysshkey
.mysshkey.pub
es su clave pública, esta es segura de poner en servidores remotos.mysshkey
es su clave privada sin contraseña, es no seguro para poner en servidores remotos (o alguna parte de otra persona podría obtener una copia).En el servidor que desea SSH en:
mkdir -p ~/.ssh
mysshkey.pub
en~/.ssh/authorized_keys
~/.ssh/authorized_keys
eschmod
'd de600
Ahora, para ponerlo en acción en su máquina local, ejecute el siguiente comando:
Y se iniciará sesión sin que se le solicite una contraseña.
Este es un método mucho más preferible para administrar inicios de sesión automáticos, ya que no termina codificando su contraseña en varios lugares que deben actualizarse si alguna vez la cambia.
fuente
En las distribuciones basadas en Debian, el
sshpass
paquete proporciona una manera más fácil de hacer lo que desea. El paquete está disponible para muchas otras distribuciones populares. Primero debe configurarlo:Luego invoque el comando SSH desde un script como este:
Esto proporciona más flexibilidad, como si está utilizando una configuración regional diferente o necesita cambiar la contraseña, que las soluciones que utilizan
expect
.fuente
Primero instale el sshPass
sudo apt-get install sshpass
Luego cree un alias en el archivo .bashrc como
Ahora vuelva a cargar su archivo .bashrc modificado por
source ~/.bashrc
Ya has terminado.
Ahora puede ejecutar el ssh utilizando el alias creado anteriormente
sshLogin
en la terminal.fuente
puedes usar esto:
fuente
Todo lo que necesita para crear una clave hash y guardarla en su PC
Sólo tipo
luego ingrese
luego inicie sesión normalmente usando
Ahora no necesitas una contraseña
fuente
ssh-copy-id
comando increíblemente útil , que nadie más mencionó. Lo estoy votando por eso.Inicio de sesión sin contraseña SSH utilizando SSH Keygen en 5 sencillos pasos :
Configuración del entorno:
Paso 1: Autenticación SSH-Kegen Keys en - (192.168.0.12)
Primero inicie sesión en el servidor 192.168.0.12 con un usuario y genere un par de claves públicas con el siguiente comando.
Paso 2: Cree el directorio .ssh en - 192.168.0.11
Use SSH del servidor 192.168.0.12 para conectar el servidor 192.168.0.11 para crear el directorio .ssh debajo de él, utilizando el siguiente comando.
Paso 3: Cargue las claves públicas generadas a - 192.168.0.11
Use SSH desde el servidor 192.168.0.12 y cargue la nueva clave pública generada (id_rsa.pub) en el servidor 192.168.0.11 en el
.ssh
directorio del usuario como un nombre de archivo autorizado_keys.Paso 4: Establecer permisos en - 192.168.0.11
Debido a las diferentes versiones SSH en los servidores, necesitamos establecer permisos en
.ssh
directorio y elauthorized_keys
archivo.Paso 5: Inicie sesión desde 192.168.0.12 a 192.168.0.11 Servidor sin contraseña
A partir de ahora podemos iniciar sesión en 192.168.0.11 como usuario sheena desde el servidor 192.168.0.12 como usuario tecmint sin contraseña.
fuente
chmod 700 id_rsa
en el directorio .ssh en el servidor local (cliente, es decir, 192.168.0.12 en su ejemplo): problema resueltoComo ya se describió en otras respuestas, también lo uso
sshpass
pero lo combino con elread
comando para almacenar mi contraseña en una variable de entorno temporal. De esta manera, mi contraseña nunca se escribe en ningún lugar en claro. Aquí está el comando de una línea que uso:Después de eso, debe ingresar su contraseña (no aparece nada en la pantalla) y luego presionar enter abrirá la conexión.
fuente
Hace poco hice esto, esto puede ayudarte:
Si esto no funciona, tendrá que generar claves en la otra máquina con la que desea conectarse
generará claves privadas y públicas y le pedirá una ubicación, déjelo en blanco, guardará las claves en la carpeta .ssh de forma predeterminada, le pedirá una frase de contraseña, también puede dejarlo vacío en la carpeta .ssh y cambiar el nombre de clave pública para 'autorizado_claves'
esto agregará el usuario a la lista ahora vaya al directorio de inicio y otorgue permiso y reinicie los servicios sshd
ahora tendrá que mover la clave privada al sistema en esa ubicación desde donde va a ejecutar el comando ssh, luego podrá conectarse con
si incluso eso no funciona, vaya a / etc / ssh, abra sshd_config con vim editor, verifique si pubkeyAuthenticatoin está activado o no, si no lo cambia a sí, reinicie los servicios sshd y luego pruébelo, definitivamente funcionará .
fuente
El primer argumento es el nombre de host y el segundo es la contraseña.
Ejecución: ./script.expect
fuente