Como eu faço keypairs de SCP de uma instância do Amazon EC2 para outra?

2

Estou tentando o certificado SCP. entre minhas duas instâncias e tendo alguns problemas. Aqui está o que eu estou entrando.

[ec2-user@ip-xxx-xx-xx-xx ~] scp -i .ssh/key.pem /root/.ssh/id_rsa.pub 10.xxx.xx.xxx:/root/.ssh/authorized_keys2

retorna

/root/.ssh/id_rsa.pub: Permission denied

Eu tentei o sudo, mas o EC2 me diz para entrar como usuário ec2 para usar este comando. O que eu estou fazendo worng?

    
por Maca 03.12.2011 / 16:35

3 respostas

3

Existem dois conjuntos de permissões a considerar em seu cenário - o da máquina local e o da máquina remota. O usuário ec2 não tem permissões para acessar a pasta / root na máquina local. Usando sudo resolve isso. No entanto, você faz login na máquina remota como um usuário não raiz e não há permissões para gravar na pasta / root. Essa é a causa do erro que você está vendo. (Você provavelmente poderia confirmar isso adicionando o sinalizador -v ao seu comando scp).

Existem pelo menos duas maneiras de resolver isso:

  1. O caminho mais fácil:

    SCP seu arquivo para um diretório na permissão remota para a qual você tem permissões de escrita (o diretório home (~ /) deve ser bom, se não o diretório / tmp quase certamente funcionará, mas é menos seguro), e, em seguida, o SSH e mova o arquivo.

    sudo scp -i /root/path/to/keypair.pem /root/path/to/local_file [email protected]:~/path/to/remote_file
    ssh  -i /root/path/to/keypair.pem [email protected]
    sudo mv ~/path/to/remote_file /root/path/to/remote_file
    exit
  2. A maneira mais difícil

    É possível transferir um arquivo via SSH e executar o sudo na máquina remota usando essa conexão SSH, mas a máquina remota precisa permitir isso. Por padrão, no Linux da Amazon (que parece que você está executando a partir do seu nome de usuário), você não pode executar o sudo sem um tty. Para alterar isso, na máquina remota, execute visudo e comente Defaults requiretty (linha 56) e salve o arquivo. Depois disso, você pode:

    Canalize sua chave através do SSH (observe que você ainda precisa do sudo para ler o arquivo local):

    sudo cat /root/path/to/local_file | ssh -v -i /root/path/to/keypair.pem [email protected] "sudo bash -c 'cat - > /root/path/to/remote_file'"

    Ou, redirecione sua chave através do SSH (o sudo só se aplica à primeira parte do comando, então você precisa se tornar root, ou colocar o comando inteiro em um script e usar o sudo):

    sudo -i
    ssh -i /root/path/to/keypair.pem [email protected] sudo sh -c '"cat > /root/path/to/remote_file"' < /root/path/to/local_file
    exit

(Alguns programas parecem ser capazes de 'sudo após o login através do scp' (por exemplo, WinSCP), no entanto eu não sei de qualquer maneira de executar um comando sobre scp - talvez o SSH é usado para transferir o arquivo naqueles cenários)

Por outro lado, é permitir logins root na máquina remota e, em seguida, efetuar o login diretamente como root sobre SCP (ainda usando sudo localmente). Desfaça as alterações que você fizer com o visudo depois de terminar com elas.

    
por 04.12.2011 / 09:20
0

Este erro significa que você não pode ler o arquivo indicado.

/root/.ssh/id_rsa.pub: Permission denied

Você pode tentar sudo scp ...

    
por 03.12.2011 / 16:44
0

Tente isso como root (execute su primeiro se você não estiver logado como root):

ssh-copy-id 10.xxx.xx.xxx

Parece que o EC2 não quer que você faça login como root. Você consegue realizar o que está tentando fazer como usuário ec2? Em caso afirmativo:

ssh-copy-id [email protected]

Se não, você pode 1) editar / etc / ssh / sshd_config para PermitRootLogin yes e reiniciar o sshd ou 2) dar permissão ao usuário ec2 para fazer o que você quer fazer.

    
por 03.12.2011 / 22:05