Qual é a permissão de arquivo correta para um arquivo .pem para SSH e SCP?

50

Eu tentei usar o SSH no meu servidor AWS Ubuntu e copiei o diretório para minha máquina local. Ao longo do processo, tenho vários erros de permissão de arquivo (indicados abaixo).

Existe uma permissão de arquivo específica necessária para o arquivo .pem que me permite SSH e SCP?
Ou eu preciso alterar a permissão do arquivo duas vezes - uma vez para o SSH e outra para o SCP depois que eu fizer o login?

Aqui estão os comandos que estou usando:

SSH:

ssh -i sentiment.pem [email protected]

Copie do computador remoto para o local com:

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

Estou em um Mac OS X 10.7.5.

Tentativa e erro:

1.) Depois que eu inicialmente baixei o arquivo .pem, suas permissões foram definidas para, I THINK: 0644

-rw-r--r--@ 1 Toga staff 1692 Feb 18 21:27 sentiment.pem

Eu então tentei o SSH via terminal e recebi o seguinte:

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.) Atualizei as permissões de arquivo para: chmod 660 sentiment.pem

Após a atualização, as permissões foram definidas para:

-rw-rw----@ 1 Toga staff 1692 Feb 18 21:27 sentiment.pem

Eu então tentei o SSH via terminal e recebi o seguinte:

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.) Atualizei as permissões de arquivo para: chmod 600 sentiment.pem

Após a atualização, as permissões foram definidas para:

-rw-------@ 1 Toga staff 1692 Feb 18 21:27 sentiment.pem

Eu tentei SSH via terminal e tive sucesso !!

4.) Agora logado, eu corro o comando a para copiar o diretório remoto para o meu computador local com:

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

Que retorna:

Permission denied (publickey).

Comandos SCP tentados:

1.) adicionou o comando -i e referenciou o arquivo .pem:

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

2.) adicionou o comando -i, referenciou o arquivo .pem e alterou o usuário do AWS para ec2-user:

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

3.) adicionou o comando -i, referenciou o arquivo .pem, alterou o usuário do AWS para o usuário ec2 e adicionou o caminho completo do arquivo para o local do arquivo .pem:

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

    
por George Jester 19.02.2014 / 04:15

5 respostas

90

Como se conectar ao Amazon EC2 remotamente usando o SSH:

  1. Faça o download do arquivo .pem.
  2. No Amazon Dashboard, escolha "Instances" na barra lateral esquerda e selecione a instância à qual você deseja se conectar.
  3. Clique em "Ações" e selecione "Conectar"
  4. Clique em "Conectar-se com um cliente SSH autônomo"
  5. Abra uma janela do Terminal
  6. Crie um diretório:

    # mkdir -p ~/.ssh
    
  7. Mova o arquivo .pem baixado para o diretório .ssh que acabamos de criar:

    # mv ~/Downloads/ec2private.pem ~/.ssh
    
  8. Altere as permissões do arquivo .pem para que apenas o usuário root possa lê-lo:

    # chmod 400 ~/.ssh/ec2private.pem
    
  9. Crie um arquivo de configuração:

    # vim ~/.ssh/config
    

    Digite o seguinte texto nesse arquivo de configuração:

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

    Salve esse arquivo.

  10. Use o comando ssh com seu nome de host DNS público para se conectar à sua instância.
    por exemplo:

    # ssh ec2-54-23-23-23-34.example.amazonaws.com
    
por 19.02.2014 / 09:40
8

chmod 400 {keyfile}.pem é o que a amazon instruiu e funciona.

    
por 02.02.2016 / 02:05
2

A "Permissão negada (publickey)" é do servidor remoto, então você está usando a chave errada, não é permitido conectar-se ou há um erro de digitação no arquivo remote_keys remoto.

    
por 19.02.2014 / 20:56
2

Parece que você não deve usar o endereço IP, mas o nome completo do host do sistema no comando SCP. Os documentos da AWS descrevem isso no link na seção "Transferência de arquivos para instâncias do Linux / Unix do Linux / Unix com SCP ".

E use -r para copiar diretórios.

E observe que o nome de usuário padrão é diferente para imagens diferentes:

For Amazon Linux, the default user name is ec2-user. For RHEL5, the user name is often root but might be ec2-user. For Ubuntu, the user name is ubuntu. For SUSE Linux, the user name is root. Otherwise, check with your AMI provider.

Então, use este comando:

scp -r -i  /Users/Toga/Desktop/rollup/Personal/Serial_Project_Starter/sentiment/sentiment.pem [email protected]:~/sentiment /Users/Toga/Desktop/sentimentlocal
    
por 20.02.2014 / 11:23
2
chmod 0400 pemfile.pem

e

ssh -i path_to_pem_file -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ec2-machine name
    
por 24.11.2014 / 23:36