scp'ing en utilisant le fichier de clé en tant que paramètre, comment puis-je le faire si possible?

51
scp -i ~/.ssh/id_rsa.pub events*$date*_QA.log $remote_user@$remote_server:$remote_location

Le script susmentionné est-il incorrect? Est-ce que je ne le fais pas correctement?

Je suis allé dans le .sshrépertoire et j'ai vu que le serveur distant était dans le known_hostsfichier.

Mais, quand je fais scp ordinaire sans aucun fichier en paramètre, il demande toujours un mot de passe

scp events*$date*_QA.log $remote_user@$remote_server:$remote_location

Comment puis-je inclure le fichier de clé dans ma commande?

sh-3.2$ grep server ~/.ssh/*
/home/user/.ssh/known_hosts:server....com,ip_addr ssh-rsa Asine=jhjsdhfjsadhfjkashdfjhasdjfhksadjfhasjdfhj
Machavity
la source

Réponses:

67
 -i identity_file
         Selects the file from which the identity (private key) for public
         key authentication is read.  This option is directly passed to
         ssh(1).

Utilisez ~/.ssh/id_rsa.

Whitequark
la source
toujours demander le mot de passesh-3.2$ scp -i ~/.ssh/id_rsa test_QA.log user@server:location user@server's password:
@tech_learner étrange, car cela fonctionne pour moi
whitequark
2
Vous devrez peut-être utiliser un chemin réel, comme dans / home / utilisateur / au lieu de ~. Cela semblait avoir fait le travail pour moi.
Evan Darwin
1
Vous souhaitez que le contenu ~ / .ssh / id_rsa.pub de l'utilisateur local soit placé dans le fichier authorised_keys du serveur distant. C'est généralement dans ~ / .ssh / allowed_keys. Vous devez également être très précis sur les autorisations de fichier sur les fichiers dans ~ / .ssh, en les rendant accessibles au minimum. sshd est très particulier sur les permissions de fichiers.
JR Lawhorne
Sur Mac OS X, cela ne fonctionnait que si -i ~/.ssh/id_rsac'était la première option. Donc , cela a fonctionné: scp -i ~/.ssh/mykey.pem -r dir user@remote_server:~/. Cela n'a pas fonctionné:scp -r -i ~/.ssh/mykey.pem dir user@remote_server:~/
asmaier
1

Cela pourrait aider un autre noob.

[Je sais que ceci est un exemple circulaire redondant mais il est bon de l'illustrer] Scénario:

  1. ssh de Mac -> Ubuntu
  2. Fichiers scp de Mac -> Ubuntu
  3. fermez les fichiers ssh et scp sous Ubuntu -> Mac

Je n'avais créé que des clés ssh sur mon Mac (via ssh-keygen) et les avait partagées avec la machine exécutant Ubuntu via (ssh-copy-id). Je pouvais donc copier des fichiers en étant connecté à mon Mac depuis la machine sous Ubuntu, mais pas l'inverse.

Solution: Je devais créer des clés ssh sur la machine Ubuntu et les partager avec mon Mac. alors je pourrais exécuter avec succès la commande suivante sur la machine Ubuntu

Mac IP: 192.168.1.40
Ubuntu IP: 192.168.1.38

Sur mac

ssh-keygen
ssh-copy-id [email protected]

ssh [email protected]

# Now on Ubuntu
ssh-keygen
ssh-copy-id [email protected]

Et maintenant, la commande suivante devrait copier le fichier sans demander le mot de passe à MAC

sudo scp -i /home/ubuntu/.ssh/id_rsa [email protected]:~/Documents/Fluff/Version-Control/tools/pull.sh .
Patrick Walter
la source
0

Testé et corrigé à l'aide des instructions suivantes: https://askubuntu.com/questions/46930/how-can-i-set-up-password-less-ssh-login

Les instructions ici ont parfaitement fonctionné lorsque j'ai testé mes boîtes (CentOS / CentOS). J'imagine que le problème est que vos clés SSH ne sont pas liées à un nom d'utilisateur.

Exemple: authorized_keys chat # sur Box Je suis l'exécution de ssh / scpin' à ssh-rsa BLAHBLAHBLAHBLAH / zAcS4kD9pyPAjD3 / gd5D1rcQa6IztCMR9yMXiGFnxviWsT8 / oYevZw25k4yREuA8ibLKC9peH1X4LK1E + n7gq4TETexWkZbQ2XGLOX44eglra3MB4FShPg0cZXGcJWltPQ / y0Ay2A / KmaC14YrDfqwm7 + ibTiUp4hOO8I6eIPmwwGn / 2hs0SewJXisGqUx2v [email protected] #username est liée à la clé et est hôte autorisé

Max Humphrey
la source