AWSのEC2インスタンスにsshやscpコマンドで接続する方法

スポンサーリンク

はじめに

最近はAWSのクラウドプラクティショナー試験の勉強をしていますが、いろいろと学ぶことが多いです。sshやscpコマンドでEC2インスタンスにアクセスする時、少しハマりましたので記録を残しておきます。

sshの接続方法

sshでAWSのEC2インスタンスに接続しようとするとアクセス権に関するエラーで接続できず。

c:\temp>ssh -i SecretKey.pem ec2-user@パブリックIP
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'SecretKey.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "SecretKey.pem": bad permissions
ec2-user@パブリックIP: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

c:\temp>

ググって調べてみると秘密鍵「SecretKey.pem」はホームディレクトリに保存する必要がある模様。コマンドプロンプトを起動し、SecretKey.pemをホームディレクトリにコピーします。

copy C:\temp\SecretKey.pem C:\Users\user1

再度、確認します。

ssh -i "C:\Users\user1\SecretKey.pem" ec2-user@パブリックIP
Last login: Mon Sep 28 11:46:37 2020 from xxx

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

Security-Focused, High-Performance Linux Environment – Amazon Linux 2 – AWS
[ec2-user@ip-172-31-33-95 ~]$

今度は成功しました。しかし、なぜホームディレクトリじゃないと駄目なのか気になってフォルダやファイルのアクセス権を細かく調べました。ホームディレクトリとまったく同じアクセス権をC:\tempフォルダやSecretKey.pemファイルに設定しましたが現象変わらず・・・。ホームディレクトリには何か特別な設定があるのかもしれません。

scpの使用方法

ファイルのダウンロード

Webサーバにある「index.html」ファイルをダウンロードします。

c:\temp> scp -i "C:\Users\user1\SecretKey.pem" ec2-user@パブリックIP:/var/www/html/index.html "c:\temp"

index.html                                                  100%   49     2.3KB/s   00:00

ファイルのアップロード

ローカルPCにある「index.html」ファイルをアップロードします。

c:\temp> scp -i "C:\Users\user1\SecretKey.pem" "c:\temp\index.html" ec2-user@パブリックIP:

index.html                                                  100%   49     1.9KB/s   00:00

「index.html」ファイルはホームディレクトリ(/home/ec2-user)にアップロードされます。

コメント