Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

11
respostas

Transferir aplicação para EC2

Boa tarde, Como faço para transferir a aplicação deste curso (de Cloudwatch) para a EC2? Tenho o Windows 10 e acesso a EC2 via Putty.

Andei pesquisando e não consegui realizar o comando no cmd do Windows, já na pasta em que o html se encontra:

scp -r -i chave.pem html ubuntu@ec2-100-10-111-99.compute-1.amazonaws.com:\var\www

Ele até tenta conectar, mas depois fala que o formato de chave.pem é inválido e

responde "Permission denied (publickey). Lost connection."

Já tentei com o chave.ppk também, dá a mesma resposta. O que fazer?

11 respostas

Olá Carolina, tudo bem? Nossa realmente é bastante estranho, porque a sintaxe está correta, mas para tirarmos todas as dúvidas, você poderia tentar enviar o conteúdo da pasta para o diretório home do usuário usando o seguinte comando:

scp -r -i chave.pem html ubuntu@ec2-100-10-111-99.compute-1.amazonaws.com:~

Porque o erro pode ser nas permissões da pasta /var/www da máquina EC2.

Fala pra gente o resultado!

Olá Jonilson, fiz o comando que você passou e continua dando a mesma mensagem:

"Load key "chave.pem": invalid format Permission denied (publickey). Lost connection"

Nossa, que estranho Carolina, mas com essa chave você consegue fazer o acesso SSH na máquina? Outra coisa, você poderia abrir esse arquivo com algum editor de texto como o VS Code e verificar se ela começa com -----BEGIN RSA PRIVATE KEY----- e termina com -----END RSA PRIVATE KEY-----.

Olá Jonilson, Refiz todo o processo novamente, inclusive criando novos grupos de segurança e chave. No cmd, a mensagem é "permission denied". No Putty (usando o comando pcsp), ele não encontra a pasta local que eu quero colocar na ec2. No WinSCP, a mensagem também é "permission denied". Não sei mais o que fazer...

Mais vai dar certo Carolina! O problema é que a chave, na verdade as permissões do arquivo está para diversos usuários, então o que você precisa fazer é o processo a seguir:

1 - Clicar com botão direito do mouse sobre o arquivo e depois ir em propriedades;

2 - E seguida ir na aba Segurança e por fim no botão Avançadas, como na imagem:

Aba segurança e avançadas

3 - Agora você precisa clicar no botão Desabilitar herança:

Desabilitar herança

4 - Nesse momento é preciso indicar que deseja Converter as permissões herdadas em permissões explícitas no objeto.:

Converter as permissões

5 - Por fim você precisa remover os usuários menos o usuário dono do arquivo e depois clicar em aplicar e OK:

Apagando usuário e finalizando

6 - Pronto agora já pode usar o arquivo chave.pem no comando scp e deve funcionar normalmente.

Espero ter ajudado!

Obrigada Jonilson, realmente agora a chave está funcionando. Mas ainda não consegui inserir a pasta html do trabalho, está dando "permission denied" para os itens da pasta, tanto no WinSCP quanto no cmd do Windows :(

Que bom que deu certo a primeira parte, agora nesse segundo problema, você poderia fazer o mesmo processo que fez com o arquivo chave.pem, no caso, fazer o mesmo passo a passo das permissões e usuários com a pasta html que você quer enviar para o servidor.

E fala pra gente se funcionou!

Eu fiz isso, não deu certo :(

Muito estranho mesmo isso Carolina, mas você tentou fazer a cópia apenas pro diretório home do usuário:

scp -r -i chave.pem html ubuntu@ec2-100-10-111-99.compute-1.amazonaws.com:~

Porque se você tentar fazer a cópia diretamente para o diretório /var/www do servidor, realmente não será possível porque essa pasta só pode ser acessada pelo usuário root da máquina e no comando que você está usando, você está usando o usuário ubuntu.

Fala se deu certo usando esse comando acima!

Jonilson, de acordo com o curso de Cloudwatch, eu preciso que a aplicação esteja exatamente nesse diretório /var/www. Como eu faço para colocá-la nesse diretório?

Como eu indiquei no post anterior, as pastas dentro de /var só podem ser acessadas pelo usuário root do servidor, então é possível copiar a pasta html diretamente para a pasta /var/www do servidor, primeiro você precisa copiar a pasta html para a pasta home do seu usuário da máquina EC2 que no caso é o usuário ubuntu com o seguinte comando:

scp -r -i chave.pem html ubuntu@ec2-100-10-111-99.compute-1.amazonaws.com:~

E depois você faz o acessa SSH na máquina, e pode executar o comando ls que deve ser listado a pasta html, logo em seguida você pode ir na pasta /var/www/html usando o comando:

cd /var/www/html

E então remover o arquivo padrão do apache, que é o arquivo index.html usando o comando:

sudo rm index.html

E em seguida copiar todo o conteudo da pasta html que você enviou para o servidor para a pasta /var/www/html com o seguinte comando:

sudo mv ~/html/* .

Não esqueça do ponto ( . ) indica o diretório atual, no caso o /var/www/html.

Você pode também dar uma olhada nessa outra aula, é de outro curso mais mostra o mesmo processo bem detalhadamente.

E fala se deu certo!