sintaxis - comandos shell linux
Proporcione una contraseƱa usando la secuencia de comandos Shell (3)
Este script viene en máquinas Debian (y derivados), para distribuir las claves. Se llama ssh-copy-id. Lo usarías así:
ssh-copy-id [-i identity_file] [user@]machine
Luego, debe ingresar la contraseña y se realizará la copia. Lo harías solo una vez y luego podrías usar rsync en ssh como de costumbre.
#!/bin/sh
# Shell script to install your identity.pub on a remote machine
# Takes the remote machine name as an argument.
# Obviously, the remote machine must accept password authentication,
# or one of the other keys in your ssh-agent, for this to work.
ID_FILE="${HOME}/.ssh/identity.pub"
if [ "-i" = "$1" ]; then
shift
# check if we have 2 parameters left, if so the first is the new ID file
if [ -n "$2" ]; then
if expr "$1" : ".*/.pub" ; then
ID_FILE="$1"
else
ID_FILE="$1.pub"
fi
shift # and this should leave $1 as the target name
fi
else
if [ x$SSH_AUTH_SOCK != x ] ; then
GET_ID="$GET_ID ssh-add -L"
fi
fi
if [ -z "`eval $GET_ID`" ] && [ -r "${ID_FILE}" ] ; then
GET_ID="cat ${ID_FILE}"
fi
if [ -z "`eval $GET_ID`" ]; then
echo "$0: ERROR: No identities found" >&2
exit 1
fi
if [ "$#" -lt 1 ] || [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
echo "Usage: $0 [-i [identity_file]] [user@]machine" >&2
exit 1
fi
{ eval "$GET_ID" ; } | ssh $1 "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys" || exit 1
cat <<EOF
Now try logging into the machine, with "ssh ''$1''", and check in:
.ssh/authorized_keys
to make sure we haven''t added extra keys that you weren''t expecting.
EOF
Había configurado mis clientes y servidor para el inicio de sesión sin contraseña. Como el inicio de sesión sin contraseña, al copiar la clave RSA del servidor en /root/.ssh/id-rsa.pub de todos los clientes. pero esto, lo he hecho de forma manual. Me gusta automatizar este proceso utilizando script de shell y proporcionando una contraseña a las máquinas mediante script. Si se resuelve este problema, también quiero usar rsync para automatizar los elementos de inserción en todos los servidores. ¿Puede algún cuerpo ayudarme en este sentido?
Gracias
Podría esperar iniciar sesión en una máquina remota cuando el método .ssh/authorized_keys
no esté disponible. Por ejemplo:
#!/usr/bin/expect
spawn ssh user@remote-host
expect "*password: $"
send "YOUR PASSWORD HERE/n"
send "bash/n"
interact
Si necesita insertar actualizaciones / cambios en varias computadoras en una red, le recomendamos considerar algo como Puppet que funciona fuera de los canales normales.