Pages : 1
#1 Le 07/11/2014, à 11:11
- nestapuccino
[Résolu] Problème avec Rsync et ssh dans un CRON
Bonjour à tous,
Mon problème revient souvent sur internet, mais j'ai essayé à peu près toutes les solutions trouvées, sans succès. Le voici :
Je dois effectuer une synchronisation d'un serveur distant vers un serveur NAS. J'ai donc créé un script effectuant cette synchronisation.
Lorsque j'execute le script manuellement, tout s'effectue correctement. J'ai mis en place le système de clé privée/publique, ssh-agent et ssh-add afin d'echanger en ssh sans avoir à entrer de mot de passe.
Mais lorsque je crée un CRON afin d'automatiser l'appel à ce script quotidiennement, cela ne marche plus, la connexion ssh semble échouer selon les logs.
Voici mon script de synchronisation "sync_server.sh" (qui fonctionne lorsqu'il est appelé manuellement)
/usr/bin/rsync -rtplze 'ssh -p mon_port' --stats --delete login@ip_serveur:/srv/datadisk01/domains/ /media/nas/prod
Voici mon CRON
30 4 * * * /home/login/utils/sync_servers.sh
Voici le message d'erreur
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [Receiver=3.1.0]
Sachant que j'ai tenté de modifier mon script afin de donner la clé en dur dans la commande rsync, de cette manière
# synchronize production server to the nas
/usr/bin/rsync -rtplze 'ssh -i /home/login/.ssh/id_rsa -p mon_port' --stats --delete login@ip_serveur:/srv/datadisk01/domains/ /media/nas/prod
Quelqu'un aurait-il d'autres pistes à explorer? Je ne sais plus quoi faire.
Merci beaucoup par avance.
Dernière modification par nestapuccino (Le 07/11/2014, à 16:03)
Hors ligne
#2 Le 07/11/2014, à 11:44
- bruno
Re : [Résolu] Problème avec Rsync et ssh dans un CRON
Bonjour,
Comment as-tu créé ta tâche Cron ? La question est de savoir si elle est exécutée par root ou par le même utilisateur que celui qui a testé le script avec succès n ligne de commande.
Dernière modification par bruno (Le 07/11/2014, à 11:46)
#3 Le 07/11/2014, à 11:59
- nestapuccino
Re : [Résolu] Problème avec Rsync et ssh dans un CRON
Bonjour,
Comment as-tu créé ta tâche Cron ? La question est de savoir si elle est exécutée par root ou par le même utilisateur que celui qui a testé le script avec succès n ligne de commande.
J'ai omis de préciser cela dans mon message, mais j'ai également tenté la création du Cron par différents utilisateurs. J'ai d'abord tenté le Cron par l'utilisateur courant, ici indiqué par "login", puis tenté le Cron par l'utilisateur Root en créant le Cron par "sudo crontab -e". J'ai également garantit l'accès ssh par clé priv/pub sans mot de passe pour ces deux utilisateurs.
Sans succès.
Hors ligne
#4 Le 07/11/2014, à 12:27
- bruno
Re : [Résolu] Problème avec Rsync et ssh dans un CRON
Alors je ne vois pas… Si le script fonctionne lorsqu'il est lancé dans une console par 'toto', alors il doit aussi fonctionner dans une tâche Cron appartenant à 'toto'.
Je suppose que tu as bien placé un shebang (#!/bin/bash) en début de script et quel le fichier est exécutable. De toute façon l'erreur retournée semble bien provenir de la connexion SSH.
Pour info j'aurais écrit cette commande ainsi :
/usr/bin/rsync -rtplz --stats --delete -e 'ssh -p num_port' login@ip_serveur:/srv/datadisk01/domains/ /media/nas/prod
mais je ne crois pas que cela change quelque chose.
Peut-être pourrais-tu essayer d'ajouter -vvvv à ssh pour avoir les infos de débogage.
#5 Le 07/11/2014, à 12:40
- nestapuccino
Re : [Résolu] Problème avec Rsync et ssh dans un CRON
Voici la nouvelle ligne executant la synchronisation en ssh
/usr/bin/rsync -rtplz --stats --delete -e 'ssh -vvv -p mon_port -i /home/login/.ssh/id_rsa' login@ip_serveur:/srv/datadisk01/domains/ /media/nas/prod
Et voici le débug en mode très bavard (désolé pour la longueur du coup)
OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /home/login/.ssh/config
debug1: /home/login/.ssh/config line 1: Applying options for mon_ip
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to mon_ip [mon_ip] port mon_port.
debug1: Connection established.
debug3: Incorrect RSA1 identifier
debug3: Could not load "/home/login/.ssh/id_rsa" as a RSA1 public key
debug1: identity file /home/login/.ssh/id_rsa type 1
debug1: identity file /home/login/.ssh/id_rsa-cert type -1
debug3: Incorrect RSA1 identifier
debug3: Could not load "/home/login/.ssh/id_rsa" as a RSA1 public key
debug1: identity file /home/login/.ssh/id_rsa type 1
debug1: identity file /home/login/.ssh/id_rsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.4
debug1: match: OpenSSH_6.4 pat OpenSSH* compat 0x04000000
debug2: fd 3 setting O_NONBLOCK
debug3: put_host_port: [mon_ip]:mon_port
debug3: load_hostkeys: loading entries for host "[mon_ip]:mon_port" from file "/home/login/.ssh/known_hosts"
debug3: load_hostkeys: found key type ECDSA in file /home/login/.ssh/known_hosts:1
debug3: load_hostkeys: loaded 1 keys
debug3: order_hostkeyalgs: prefer hostkeyalgs: ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug2: kex_parse_kexinit: curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-dss-cert-v00@openssh.com,ssh-ed25519,ssh-rsa,ssh-dss
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-sha1,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-sha1,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,zlib@openssh.com,zlib
debug2: kex_parse_kexinit: none,zlib@openssh.com,zlib
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit: first_kex_follows 0
debug2: kex_parse_kexinit: reserved 0
debug2: kex_parse_kexinit: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-sha1,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-sha1,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,zlib@openssh.com
debug2: kex_parse_kexinit: none,zlib@openssh.com
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit: first_kex_follows 0
debug2: kex_parse_kexinit: reserved 0
debug2: mac_setup: setup hmac-md5-etm@openssh.com
debug1: kex: server->client aes128-ctr hmac-md5-etm@openssh.com none
debug2: mac_setup: setup hmac-md5-etm@openssh.com
debug1: kex: client->server aes128-ctr hmac-md5-etm@openssh.com none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA 39:db:67:04:53:67:1b:c5:10:74:cd:6e:49:38:71:a5
debug3: put_host_port: [mon_ip]:mon_port
debug3: put_host_port: [mon_ip]:mon_port
debug3: load_hostkeys: loading entries for host "[mon_ip]:mon_port" from file "/home/login/.ssh/known_hosts"
debug3: load_hostkeys: found key type ECDSA in file /home/login/.ssh/known_hosts:1
debug3: load_hostkeys: loaded 1 keys
debug3: load_hostkeys: loading entries for host "[mon_ip]:mon_port" from file "/home/login/.ssh/known_hosts"
debug3: load_hostkeys: found key type ECDSA in file /home/login/.ssh/known_hosts:1
debug3: load_hostkeys: loaded 1 keys
debug1: Host '[mon_ip]:mon_port' is known and matches the ECDSA host key.
debug1: Found key in /home/login/.ssh/known_hosts:1
debug1: ssh_ecdsa_verify: signature correct
debug2: kex_derive_keys
debug2: set_newkeys: mode 1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug2: set_newkeys: mode 0
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /home/login/.ssh/id_rsa (0x7f6bea347130), explicit
debug2: key: /home/login/.ssh/id_rsa (0x7f6bea345f70), explicit
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/login/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug2: input_userauth_pk_ok: fp 16:53:f8:1f:fb:96:8e:4b:66:92:af:85:de:72:cd:92
debug3: sign_and_send_pubkey: RSA 16:53:f8:1f:fb:96:8e:4b:66:92:af:85:de:72:cd:92
debug1: key_parse_private2: missing begin marker
debug1: key_parse_private_pem: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
debug1: read_passphrase: can't open /dev/tty: No such device or address
debug2: no passphrase given, try next key
debug1: Offering RSA public key: /home/login/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug2: input_userauth_pk_ok: fp 16:53:f8:1f:fb:96:8e:4b:66:92:af:85:de:72:cd:92
debug3: sign_and_send_pubkey: RSA 16:53:f8:1f:fb:96:8e:4b:66:92:af:85:de:72:cd:92
debug1: key_parse_private2: missing begin marker
debug1: key_parse_private_pem: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
debug1: read_passphrase: can't open /dev/tty: No such device or address
debug2: no passphrase given, try next key
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
debug1: read_passphrase: can't open /dev/tty: No such device or address
debug3: packet_send2: adding 64 (len 52 padlen 12 extra_pad 64)
debug2: we sent a password packet, wait for reply
debug1: Authentications that can continue: publickey,password
Permission denied, please try again.
debug1: read_passphrase: can't open /dev/tty: No such device or address
debug3: packet_send2: adding 64 (len 52 padlen 12 extra_pad 64)
debug2: we sent a password packet, wait for reply
debug1: Authentications that can continue: publickey,password
Permission denied, please try again.
debug1: read_passphrase: can't open /dev/tty: No such device or address
debug3: packet_send2: adding 64 (len 52 padlen 12 extra_pad 64)
debug2: we sent a password packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey,password).
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [Receiver=3.1.0]
D'après les premières lignes il n'arrive pas à lire la clé RSA en effet.
Voici le contenu de mon dossier /home/login/.ssh
login@vmubuntuserver1404:~$ ls -la .ssh/
total 32
drwx------ 2 login login 4096 nov. 7 10:46 .
drwxr-xr-x 8 login login 4096 nov. 7 10:02 ..
-rw------- 1 login login 397 nov. 5 09:49 authorized_keys
-rw-rw-r-- 1 login login 95 nov. 6 16:26 config
-rw------- 1 login login 1766 nov. 4 10:48 id_rsa
-rw-r--r-- 1 login login 412 nov. 4 10:48 id_rsa.pub
-rw-r--r-- 1 login login 664 nov. 4 12:58 known_hosts
-rw-rw-r-- 1 login login 136 nov. 6 16:45 variables
Tu as une idée sur le pourquoi il n'arrive pas à lire la clé ? Merci pour l'aide bruno !
Dernière modification par nestapuccino (Le 07/11/2014, à 12:40)
Hors ligne
#6 Le 07/11/2014, à 14:04
- bruno
Re : [Résolu] Problème avec Rsync et ssh dans un CRON
Non, il faut regarder plus loin, la clé est bien acceptée mais cela échoue car une phrase de passe est attendue :
debug1: Offering RSA public key: /home/login/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug2: input_userauth_pk_ok: fp 16:53:f8:1f:fb:96:8e:4b:66:92:af:85:de:72:cd:92
debug3: sign_and_send_pubkey: RSA 16:53:f8:1f:fb:96:8e:4b:66:92:af:85:de:72:cd:92
debug1: key_parse_private2: missing begin marker
debug1: key_parse_private_pem: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
debug1: read_passphrase: can't open /dev/tty: No such device or address
Comme on n'est pas dans un terminal (avec cron) cela ne fonctionne pas. Le plus simple est de régénérer ta paire de clés avec une phrase de passe vide, puis de renvoyer la clé publique sur le serveur.
Dernière modification par bruno (Le 07/11/2014, à 14:05)
#7 Le 07/11/2014, à 14:15
- nestapuccino
Re : [Résolu] Problème avec Rsync et ssh dans un CRON
N'y a t-il aucun moyen pour donner la phrase de passe dans la commande rsync ? Ce cas n'est pas prévu ?
Hors ligne
#8 Le 07/11/2014, à 14:37
- bruno
Re : [Résolu] Problème avec Rsync et ssh dans un CRON
Pas à ma connaissance… De toute façon tant que ta clé privée reste à l'abri sur ta machine, dans ton dossier personnel (qui peut être chiffré) qui n'est accessible que par toi avec ton mot de passe de session, la phrase de passe n'apporte pas vraiment une sécurité supplémentaire mais plutôt ce genre d'emmerdement.
#9 Le 07/11/2014, à 14:46
- nestapuccino
Re : [Résolu] Problème avec Rsync et ssh dans un CRON
Pas à ma connaissance… De toute façon tant que ta clé privée reste à l'abri sur ta machine, dans ton dossier personnel (qui peut être chiffré) qui n'est accessible que par toi avec ton mot de passe de session, la phrase de passe n'apporte pas vraiment une sécurité supplémentaire mais plutôt ce genre d'emmerdement.
Merci. J'ai testé avec une phrase de passe vide, cela fonctionne.
Je me demandais quels étaient les risques en effet. Mais le CRON tourne sur un ubuntu server installé sur une VM d'une machine NAS qui est dans mon bureau. C'est seulement le script qui communique via ssh aux serveurs distants pour la synchronisation via la méthode clé privée/publique.
Donc à priori c'est sans grand risque, non ?
Merci beaucoup encore pour ton aide !
Dernière modification par nestapuccino (Le 07/11/2014, à 14:48)
Hors ligne
Pages : 1