web-dev-qa-db-fra.com

Quelle est la bonne autorisation de fichier pour un fichier .pem vers SSH et SCP

J'ai essayé de SSH sur mon serveur AWS Ubuntu et de copier le répertoire sur ma machine locale. Tout au long du processus, je rencontre différentes erreurs d'autorisation de fichier (notées ci-dessous).

Existe-t-il une autorisation de fichier spécifique requise pour le fichier .pem qui me permet de SSH et SCP?
Ou dois-je modifier l'autorisation de fichier deux fois - une fois pour SSH et une autre pour SCP après ma connexion?

Voici les commandes que j'utilise:

SSH:

ssh -i sentiment.pem [email protected]

Copiez de l'ordinateur distant vers l'ordinateur local avec:

scp [email protected]:/home/ubuntu/sentimentfolder /Users/Toga/Desktop/sentimentlocal

Je suis sur un Mac OS X 10.7.5.


Essai et erreur:

1.) Après avoir initialement téléchargé le fichier .pem, ses autorisations ont été définies sur, je pense: 0644

-rw-r - r - @ 1 Toga staff 1692 18 février 21:27 sentiment.pem

J'ai ensuite essayé de SSH via le terminal et j'ai reçu ce qui suit:

WARNING: UNPROTECTED PRIVATE KEY FILE! 
Permissions 0644 for 'sentiment.pem' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: sentiment.pem
Permission denied (publickey).

2.) J'ai mis à jour les permissions du fichier pour: chmod 660 sentiment.pem

Après la mise à jour, les autorisations ont été définies sur:

-rw-rw ---- @ 1 Toga staff 1692 18 février 21:27 sentiment.pem

J'ai ensuite essayé de SSH via le terminal et j'ai reçu ce qui suit:

WARNING: UNPROTECTED PRIVATE KEY FILE! 
Permissions 0660 for 'sentiment.pem' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: sentiment.pem
Permission denied (publickey).

3.) J'ai mis à jour les permissions du fichier pour: chmod 600 sentiment.pem

Après la mise à jour, les autorisations ont été définies sur:

-rw ------- @ 1 Toga staff 1692 18 février 21:27 sentiment.pem

J'ai ensuite essayé de SSH via le terminal et j'ai réussi !!

4.) Maintenant connecté, j'exécute la commande a pour copier le répertoire distant sur mon ordinateur local avec:

scp [email protected]:/home/ubuntu/sentimentfolder /Users/Toga/Desktop/sentimentlocal

Qui retourne:

Permission denied (publickey).

Commandes SCP tentées:

1.) a ajouté la commande -i et référencé le fichier .pem:

scp -i sentiment.pem [email protected]:/home/ubuntu/sentimentfolder/Users/Toga/Desktop/sentimentlocal

2.) a ajouté la commande -i, référencé le fichier .pem et changé l'utilisateur d'AWS en ec2-user:

scp -i sentiment.pem [email protected]:/home/ubuntu/sentimentfolder/Users/Toga/Desktop/sentimentlocal

3.) a ajouté la commande -i, référencé le filem .pem, changé l'utilisateur pour AWS en ec2-user et ajouté le chemin d'accès complet au fichier pour l'emplacement du fichier .pem:

scp -i /Users/Toga/Desktop/rollup/Personal/Serial_Project_Starter/sentiment/sentiment.pem [email protected]:/home/ubuntu/sentiment/Users/Toga/Desktop/sentimentlocal

81
George Jester

Visitez ici Comment se connecter à Amazon EC2 à distance en utilisant SSH ou reportez-vous ci-dessous.

Comment se connecter à distance à Amazon EC2 à l'aide de SSH:

  1. Téléchargez le fichier .pem.
  2. Dans Amazon Dashboard, choisissez "Instances" dans la barre latérale gauche, puis sélectionnez l'instance à laquelle vous souhaitez vous connecter.
  3. Cliquez sur "Actions", puis sélectionnez "Se connecter"
  4. Cliquez sur "Se connecter avec un client SSH autonome"
  5. Ouvrez une fenêtre de terminal
  6. Créez un répertoire:

    # mkdir -p ~/.ssh
    
  7. Déplacez le fichier .pem téléchargé vers le répertoire .ssh que nous venons de créer:

    # mv ~/Downloads/ec2private.pem ~/.ssh
    
  8. Modifiez les autorisations du fichier .pem afin que seul l'utilisateur root puisse le lire:

    # chmod 400 ~/.ssh/ec2private.pem
    
  9. Créez un fichier de configuration:

    # vim ~/.ssh/config
    

    Entrez le texte suivant dans ce fichier de configuration:

    Host *amazonaws.com
    IdentityFile ~/.ssh/ec2private.pem
    User ec2-user
    

    Enregistrez ce fichier.

  10. Utilisez la commande ssh avec votre nom d'hôte DNS public pour vous connecter à votre instance.
    par exemple.:

    # ssh ec2-54-23-23-23-34.example.amazonaws.com
    
126
Babin Lonston

chmod 400 {keyfile}.pem est ce qu'Amazon a demandé et cela fonctionne.

21
John Zhang
chmod 0400 pemfile.pem

et

ssh -i path_to_pem_file -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ec2-machine name
5
harsha konreddy

Il semble que vous ne soyez pas censé utiliser l'adresse IP, mais le nom d'hôte complet du système dans la commande SCP. Les documents AWS décrivent cela sur http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html sous la section "Transfert de fichiers vers des instances Linux/Unix depuis Linux/Unix avec SCP ".

Et utilise -r pour copier les répertoires.

Et notez que le nom d'utilisateur par défaut est différent pour différentes images:

Pour Amazon Linux, le nom d'utilisateur par défaut est ec2-user. Pour RHEL5, le nom d'utilisateur est souvent root mais peut être ec2-user. Pour Ubuntu, le nom d'utilisateur est ubuntu. Pour SUSE Linux, le nom d'utilisateur est root. Sinon, consultez votre fournisseur AMI.

Alors, utilisez cette commande:

scp -r -i  /Users/Toga/Desktop/rollup/Personal/Serial_Project_Starter/sentiment/sentiment.pem [email protected]:~/sentiment /Users/Toga/Desktop/sentimentlocal
3
daniel kullmann

"L'autorisation refusée (publickey)" provient du serveur distant, donc vous utilisez soit la mauvaise clé, il n'est pas autorisé à se connecter ou il y a une faute de frappe dans le fichier remote_keys autorisé.

2
maedox