[Résolu] Unix scp secure copy

Bonjour,

J’utilise deux machine unix en sun solaris.

J’ai besoin de faire un scp entre les deux (seul moyen de communication permis), mais je souhaite automatiser celui-ci.
Le problème est que scp demande un mot de passe du user sur la machine B (qui n’est pas le même que sur la machine A):

scp fichier_source user@machine_dest:fichier_dest

Comment faire un SCP sans qu’il me demande le mot de passe?
En le stockant quelque part ou en lui passant en ligne de commande ?
Mais il faut que ça passe dans un batch.

Merci de votre aide.

PS: je n’ai pas de droit super utilisateur sur aucune des machines.

pas le temps de verifier, mais de memoire scp est basé sur ssh, et si c’est le cas tu dois pouvoir mettre les machines en trusted, echanger les certificats , et ne pas utiliser de password

genre ca: http://www.boran.com/security/sp/ssh-part2.html#Trusts

Comme j’ai eu le problème cette semaine :

  1. en utilisant des paires de clef et ssh-agent (tuto trouvable n’importe où)

  2. en utilisant sshpass (éxécutable à compiler)

scp utilise ssh, donc tout ce qui marche pour ssh, marche aussi pour scp !

[quote=« Kzi, post:2, topic: 49306 »]pas le temps de verifier, mais de memoire scp est basé sur ssh, et si c’est le cas tu dois pouvoir mettre les machines en trusted, echanger les certificats , et ne pas utiliser de password

genre ca: http://www.boran.com/security/sp/ssh-part2.html#Trusts[/quote]

Bon alors j’ai essayé cette partie du site que tu cite :

[code]Publickey trusts
And assume we want to use a RSA/publickey trust from hostA to hostB, using protocol v2 only. The following was tested with OpenSSH v3.02p1 on both sides.

 [b]On host A[/b]
  • Log in as the appropriate user and generate a v2 rsa key (~.ssh/id_rsa and ~.ssh/id_rsa.pub), and set a passphrase.
    ssh-keygen -t rsa

    • In ssh_config (or .ssh/config), set:

[indent] Host hostB
Protocol 2
PubkeyAuthentication yes
PreferredAuthentications publickey,keyboard-interactive,password

[/indent] On host B

  • Possibly add an entry for hostA to /etc/hosts

    • In sshd_config (or .ssh/config), set:

[indent] PubkeyAuthentication yes

[/indent] - in ~/.ssh/authorized_keys add the contents of hostA:~.ssh/id_rsa.pub, for example:

[indent] ssh-rsa AAAAB3NzaC1yc2EAAAASOMEBIGLONGKEYOROTHERmdklQM= root@server1

[/indent] - Possibly restrict the trust, e.g.

	from="10.1.2.3",no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-rsa AAAAB3NzaC1yc2EAAAASOMEBIGLONGKEYOROTHERmdklQM= root@server1[/code]

j’ai dons sur ma machine A dans la racine de mon compte générer deux fichier id_rsa et id_rsa.pub.
puis j’ai crée un fichier ssh_config avec les info données plus haut en remplaçant hostB par le nom de ma machin B.
Sur la machine B j’ai crée un fichier authorized_keys qui contient la même chose que celui de la machine A.

La je teste le scp et il demande toujours le mot de passe. Ma commande scp est:
sur la machine A:

scp chemin/fichier user@machineB:chemin/fichier
The authenticity of host ‹ machineB (xx.xxx.xx.xxx) › can’t be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? y
Please type ‹ yes › or ‹ no ›: yes
Warning: Permanently added ‹ machineB › (RSA) to the list of known hosts.
user@machineB’s password:

ok la je rentre le mot de passe et la copie fonctionne.
Je relance encore une fois la commande pour voir s’il demande encore le mot de passe et il le redemande.

Ou est mon problème svp ?

[quote=« Rufh, post:4, topic: 49306 »]Bon alors j’ai essayé cette partie du site que tu cite :

[code]Publickey trusts
And assume we want to use a RSA/publickey trust from hostA to hostB, using protocol v2 only. The following was tested with OpenSSH v3.02p1 on both sides.

 [b]On host A[/b]
  • Log in as the appropriate user and generate a v2 rsa key (~.ssh/id_rsa and ~.ssh/id_rsa.pub), and set a passphrase.
    ssh-keygen -t rsa

    • In ssh_config (or .ssh/config), set:

[indent] Host hostB
Protocol 2
PubkeyAuthentication yes
PreferredAuthentications publickey,keyboard-interactive,password

[/indent] On host B

  • Possibly add an entry for hostA to /etc/hosts

    • In sshd_config (or .ssh/config), set:

[indent] PubkeyAuthentication yes

[/indent] - in ~/.ssh/authorized_keys add the contents of hostA:~.ssh/id_rsa.pub, for example:

[indent] ssh-rsa AAAAB3NzaC1yc2EAAAASOMEBIGLONGKEYOROTHERmdklQM= root@server1

[/indent] - Possibly restrict the trust, e.g.

	from="10.1.2.3",no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-rsa AAAAB3NzaC1yc2EAAAASOMEBIGLONGKEYOROTHERmdklQM= root@server1[/code]

j’ai dons sur ma machine A dans la racine de mon compte générer deux fichier id_rsa et id_rsa.pub.
puis j’ai crée un fichier ssh_config avec les info données plus haut en remplaçant hostB par le nom de ma machin B.
Sur la machine B j’ai crée un fichier authorized_keys qui contient la même chose que celui de la machine A.

La je teste le scp et il demande toujours le mot de passe. Ma commande scp est:
sur la machine A:

scp chemin/fichier user@machineB:chemin/fichier
The authenticity of host ‹ machineB (xx.xxx.xx.xxx) › can’t be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? y
Please type ‹ yes › or ‹ no ›: yes
Warning: Permanently added ‹ machineB › (RSA) to the list of known hosts.
user@machineB’s password:

ok la je rentre le mot de passe et la copie fonctionne.
Je relance encore une fois la commande pour voir s’il demande encore le mot de passe et il le redemande.

Ou est mon problème svp ?[/quote]
Vérifie bien que le authorized_keys de B correspond au id_rsa.pub de A (attention aux retours à la ligne qui peuvent s’insérer au milieu de ta clé par exemple).
Regarde tes authlog pour voir si cela ne serait pas du à une histoire de droits.
Fais un ssh -v pour avoir plus de détails.

[quote=“kineox, post:5, topic: 49306”]Vérifie bien que le authorized_keys de B correspond au id_rsa.pub de A (attention aux retours à la ligne qui peuvent s’insérer au milieu de ta clé par exemple).
Regarde tes authlog pour voir si cela ne serait pas du à une histoire de droits.
Fais un ssh -v pour avoir plus de détails.[/quote]

Ok donc voila ce que j’ai :

>cat ssh_config Host machineB Protocol 2 PubkeyAuthentication yes PreferredAuthentications publickey,keyboard-interactive,password

Voila ce que j’ai utilisé :

>ssh -v -F ssh_config user@machineB OpenSSH_3.5p1, SSH protocols 1.5/2.0, OpenSSL 0x0090701f debug1: Reading configuration data ssh_config debug1: Applying options for machineB debug1: Rhosts Authentication disabled, originating port will not be trusted. debug1: ssh_connect: needpriv 0 debug1: Connecting to machineB [xx.xxx.xx.xxx] port 22. debug1: Connection established. debug1: identity file /users/xxx/.ssh/id_rsa type -1 debug1: identity file /users/xxx/.ssh/id_dsa type -1 debug1: Remote protocol version 2.0, remote software version OpenSSH_3.7.1p2 debug1: match: OpenSSH_3.7.1p2 pat OpenSSH* debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_3.5p1 debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client aes128-cbc hmac-md5 none debug1: kex: client->server aes128-cbc hmac-md5 none debug1: SSH2_MSG_KEX_DH_GEX_REQUEST sent debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP debug1: dh_gen_key: priv key bits set: 147/256 debug1: bits set: 1605/3191 debug1: SSH2_MSG_KEX_DH_GEX_INIT sent debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY debug1: Host 'machineB' is known and matches the RSA host key. debug1: Found key in /users/xxx/.ssh/known_hosts:7 debug1: bits set: 1564/3191 debug1: ssh_rsa_verify: signature correct debug1: kex_derive_keys debug1: newkeys: mode 1 debug1: SSH2_MSG_NEWKEYS sent debug1: waiting for SSH2_MSG_NEWKEYS debug1: newkeys: mode 0 debug1: SSH2_MSG_NEWKEYS received debug1: done: ssh_kex2. debug1: send SSH2_MSG_SERVICE_REQUEST debug1: service_accept: ssh-userauth debug1: got SSH2_MSG_SERVICE_ACCEPT debug1: authentications that can continue: publickey,password,keyboard-interactive debug1: next auth method to try is publickey debug1: try privkey: /users/ulivr/.ssh/id_rsa debug1: try privkey: /users/ulivr/.ssh/id_dsa debug1: next auth method to try is keyboard-interactive debug1: authentications that can continue: publickey,password,keyboard-interactive debug1: next auth method to try is password user@machinB's password:

Donc je comprends bien que il change de méthode en commencant par la clé publique mais pourquoi l’authentification echoue-t-elle.
A savoir que pour être sur d’avoir les même clés sur les deux machines j’ai dirrectement copier le fichier avec scp.

Meri de ton aide.

De mémoire:

  1. Générer les clés publiques/privées: ssh-keygen -t rsa (laisse le passphrase vide)
  2. Copier le contenu du fichier ~/.ssh/id_rsa.pub vers ~/.ssh/authorized_keys (sur le même poste).

Il n’empêche que si c’est la première fois que tu te connectes à un hote, il te demandera confirmation avant de le
rajouter dans sa white list.

Edit: http://www.esiee.fr/~perrotol/ssh-guide.html
Si ça peut aider pour la (simple) mise en place. Après si ça marche pas, à part supprimer .ssh et re-générer les couples de clés, je vois pas … :x.

[quote=“baalistik, post:7, topic: 49306”]De mémoire:

  1. Générer les clés publiques/privées: ssh-keygen -t rsa (laisse le passphrase vide)
  2. Copier le contenu du fichier ~/.ssh/id_rsa.pub vers ~/.ssh/authorized_keys (sur le même poste).

Il n’empêche que si c’est la première fois que tu te connectes à un hote, il te demandera confirmation avant de le
rajouter dans sa white list.

Edit: http://www.esiee.fr/~perrotol/ssh-guide.html
Si ça peut aider pour la (simple) mise en place. Après si ça marche pas, à part supprimer .ssh et re-générer les couples de clés, je vois pas … :x.
[/quote]

Ok merci,

j’avais mis une passphrase ce qui me posait des problèmes. Sans passphrase ça marche beaucoup mieux.

Merci encore.