Come faccio a copiare i tasti SCP da un'istanza EC2 Amazon in un'altra istanza?

Sto provando a SCP cert. tra il mio due istanze e avere qualche problema. Ecco cosa sto 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 

ritorna

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

Ho provato sudo ma EC2 mi dice di entrare come ec2 utente per utilizzare questo command. Che cosa sto facendo worng?

3 Solutions collect form web for “Come faccio a copiare i tasti SCP da un'istanza EC2 Amazon in un'altra istanza?”

Esistono due set di autorizzazioni da considerare nel tuo scenario – quello sulla macchina locale e quello sulla macchina remota. L'utente ec2 non dispone di autorizzazioni per accedere alla cartella / root sulla macchina locale. L'utilizzo di sudo risolve. Tuttavia, si accede alla macchina remota come utente non-root e non si dispone di autorizzazioni per la scrittura nella cartella / root. Questa è la causa dell'errore che stai vedendo. (Potresti probabilmente confermare questo aggiungendo il flag -v al tuo command scp).

Ci sono alless due modi per risolvere questo problema:

  1. Il modo più semplice:

    SCP il tuo file in una directory sull'authorization remota che hai le autorizzazioni di scrittura per (home directory (~ /) dovrebbe essere buono, se la directory / tmp non functionrà quasi certamente ma è less sicura) e quindi SSH in e spostare il file.

      sudo scp -i /root/path/to/keypair.pem / root / path / a / locale_file ec2-user@xxx.xxx.xxx.xxx: ~ / path / to / remote_file
     ssh -i /root/path/to/keypair.pem ec2-user@xxx.xxx.xxx.xxx
     sudo mv ~ / path / a / remote_file / root / path / to / remote_file
     Uscita 
  2. Il modo più difficile

    È ansible trasferire un file su SSH e eseguire sudo sulla macchina remota utilizzando questa connessione SSH, tuttavia la macchina remota deve consentirla. Per impostazione predefinita su Linux di Amazon (che sembra che esegui dal tuo nome utente), non è ansible eseguire sudo senza un tty. Per modificarlo, sulla macchina remota, eseguire visudo e commentare Defaults requiretty (row 56) e salvare il file. Dopo di che, puoi:

    Pipe la tua chiave tramite SSH (nota, hai ancora bisogno di sudo per leggere il file locale):

      sudo cat / root / path / to / locale_file |  ssh -v -i /root/path/to/keypair.pem ec2-user@xxx.xxx.xxx.xxx "sudo bash -c 'cat -> / root / path / to / remote_file'" 

    Oppure, redirect la chiave tramite SSH (il sudo si applica solo alla prima parte del command, per cui è necessario diventare root, o mettere l'integer command in uno script e utilizzare sudo):

      sudo -i
     ssh -i /root/path/to/keypair.pem ec2-user@xxx.xxx.xxx.xxx sudo sh -c '"gatto / root / path / to / remote_file"' </ root / path / to / file_locale
     Uscita 

(Alcuni programmi sembrano essere in grado di "sudo dopo il login su scp" (ad es. WinSCP), ma non so di poter eseguire un command su scp – forse SSH viene utilizzato per trasferire il file in tali scenari)

Altrimenti, è quello di consentire l'accesso di root alla macchina remota e quindi eseguire l'accesso direttamente come root su SCP (ancora utilizzando sudo localmente). Annullare le modifiche apportte con visudo una volta che si è fatto con loro.

Questo errore significa che non è ansible leggere il file indicato.

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

Puoi provare sudo scp ...

Prova questo come root (eseguire prima se non sei connesso come root):

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

Sembra che EC2 non desideri che tu acceda come root. Puoi eseguire ciò che stai cercando di fare come ec2 utente? Se è così:

 ssh-copy-id ec2-user@10.xxx.xx.xxx 

Se no, puoi 1) modificare / etc / ssh / sshd_config a PermitRootLogin yes e riavviare sshd oppure 2) dare all'utente ec2 l'authorization a fare quello che vuoi fare.

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.