質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

2回答

13938閲覧

ローカルからAWS EC2サーバーへファイルをアップロードする方法を教えてください。

takyas

総合スコア54

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2017/01/20 04:36

編集2017/01/20 05:31

【開発環境】
・MacOSX
・AWS (Red Hat Enterprise Linux)

【ディレクトリ構造】
秘密鍵 → /Users/my_name/.ssh/secret_key.pem
UPしたいファイル → /Users/my_name/Desktop/up_dir/up_file.html

【ターミナル】
秘密鍵にてEC2にログイン

my_name$ ssh -i /Users/my_name/.ssh/secret_key.pem ec2-user@{public_IP}

ログイン成功

[ec2-user@{private_IP} ~]$

###ここから不明点です。
EC2にファイルをアップロードする場合は、下記で出来ると思います。

# scp -i ①秘密鍵のパス ②送信するファイルのパス ③ユーザ名@該当インスタンスのパブリックIPアドレス:④ファイルを配置するパス

しかしながら、

[ec2-user@{private_IP} ~]$ scp -i ①/Users/my_name/.ssh/secret_key.pem ②/Users/my_name/Desktop/up_dir/up_file.html ③{pablic_IP_address}.compute.amazonaws.com:④~/home/ec2-user/

と実行しても

Warning: Identity file /Users/my_name/.ssh/secret_key.pem not accessible: No such file or directory. Permission denied (publickey,gssapi-keyex,gssapi-with-mic). lost connection

とエラーが出てきます。

EC2のサーバー上には、"/Users/my_name/.ssh/secret_key.pem"は存在しないので当たり前だと思うのですが、であれば、①秘密鍵のパスの部分には何とすべきでしょうか?
色々試してみたのですが、解決できずこちらに投稿しました。

その他の条件で必要な情報があれば教えていただきたいです。
質問がうまく出来ず、内容をご理解いただけるか分かりませんので、分かりにくい箇所があればご指摘いただければと思います。

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

以下のメッセージ通り、/Users/my_name/.ssh/secret_key.pemが存在していません。

Warning: Identity file /Users/my_name/.ssh/secret_key.pem not accessible: No such file or directory.

プロンプトが[ec2-user@{private_IP} ~]$ となっていますが、scpコマンドを実行するのはEC2側でなく、Mac側です。
実行場所を間違えてるだけではないですか?

投稿2017/01/20 05:32

moonphase

総合スコア6621

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takyas

2017/01/20 05:39

moonphaseさん ご指摘の通りEC2側で実行しておりました。 ありがとうございます。 Mac側で実行したところ、 Permission denied (publickey,gssapi-keyex,gssapi-with-mic). lost connection というPermissionエラーが出ました。 secret_key.pemは400ですので、これは配置先の権限ということでしょうか?
moonphase

2017/01/20 05:48

Permission deniedのよくあるケースは以下です。 確認してみてください。 ローカル側: $HOMEのパーミッションが 700 ではない。⇒chmod 700 $HOMEで解決 $HOME/.sshのパーミッションが700ではない。⇒chmod 700 $HOME/.sshで解決 リモート側 $HOMEのパーミッションが 700 ではない。⇒chmod 700 $HOMEで解決 $HOME/.sshのパーミッションが700ではない。⇒chmod 700 $HOME/.sshで解決
takyas

2017/01/20 07:00

ありがとうございます。 ローカル、リモートともに700に設定したのですが、Permission deniedが表示される状況です。 ローカル側 $HOME => drwxr-xr-x+ 53 my_name staff 1802 1 19 17:46 my_name $HOME/.ssh => drwx------ 6 my_name staff 204 1 19 17:46 .ssh リモート側 $HOME => drwx------. 4 ec2-user ec2-user 4096 1月 18 23:32 ec2-user $HOME/.ssh => drwx------. 2 ec2-user ec2-user 46 1月 20 01:44 .ssh 他の文献もググって引き続き調査してみます。 その他に何か考えられることがあれば、 お時間に余裕のある時で結構ですのでご教示いただけますと幸いです。
moonphase

2017/01/20 07:16

scpに-vオプションを指定して、その内容を教えてください。
takyas

2017/01/20 07:37

こちらです。 Executing: program /usr/bin/ssh host ec2-{public_IP}-.ap-southeast-1.compute.amazonaws.com, user (unspecified), command scp -v -t ~/ OpenSSH_6.9p1, LibreSSL 2.1.8 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 20: Applying options for * debug1: /etc/ssh/ssh_config line 102: Applying options for * debug1: Connecting to ec2-{public_IP}.ap-southeast-1.compute.amazonaws.com [{public_IP}] port 22. debug1: Connection established. debug1: key_load_public: No such file or directory debug1: identity file /Users/{my_name}/.ssh/dev-test.pem type -1 debug1: key_load_public: No such file or directory debug1: identity file /Users/{my_name}/.ssh/dev-test.pem-cert type -1 debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_6.9 debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1 debug1: match: OpenSSH_6.6.1 pat OpenSSH_6.6.1* compat 0x04000000 debug1: Authenticating to ec2-{public_IP}.ap-southeast-1.compute.amazonaws.com:22 as 'yasunoritakahashi' debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client chacha20-poly1305@openssh.com <implicit> none debug1: kex: client->server chacha20-poly1305@openssh.com <implicit> none debug1: expecting SSH2_MSG_KEX_ECDH_REPLY debug1: Server host key: {host_key} debug1: Host 'ec2-{public_IP}.ap-southeast-1.compute.amazonaws.com' is known and matches the ECDSA host key. debug1: Found key in /Users/{my_name}/.ssh/known_hosts:11 debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: SSH2_MSG_SERVICE_REQUEST sent debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic debug1: Next authentication method: publickey debug1: Trying private key: /Users/{my_name}/.ssh/dev-test.pem debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic debug1: No more authentication methods to try. Permission denied (publickey,gssapi-keyex,gssapi-with-mic). lost connection です。 宜しくお願い致します。
moonphase

2017/01/20 07:45

scpするコマンドにリモートユーザー名ec2-userは含めていますか? scp -i $HOME/.ssh/dev-test.pem /Users/my_name/Desktop/up_dir/up_file.html ec2-user@{pablic_IP_address}.compute.amazonaws.com: で、ec2-userのホームディレクトリにファイルをコピーできます。 元々の質問にある":~/home/ec2-user/" では、リモートのホームディレクトリ配下の指定ディレクトリにファイルをコピーしようとするので、実際は"/home/ec2-user/home/ec2-user/"というディレクトリの下にファイルを転送しようとします。
takyas

2017/01/20 07:55

ご指摘の通りユーザー名を含んでおりませんでした。 無事アップロード出来ました。 デバッグまで解析いただきましてありがとうございます。 ベストアンサーとさせていただきます。 またteratailを利用した際には宜しくお願い致します。 ありがとうございました。
guest

0

-iで指定する鍵ファイルはローカル側に存在するものです。
ローカル側の鍵ファイルのパスが間違っていないか確認してください。
また、コマンドを実行しているユーザーが、その鍵ファイルをread出来る権限(Permission)があるかも確認してみてください。

ls -l /Users/my_name/.ssh/secret_key.pem

投稿2017/01/20 04:42

kunai

総合スコア5405

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takyas

2017/01/20 05:10 編集

kunaiさん ありがとうございます。 ご指示いただきました通り下記を実行してみました。 my_name$ ls -l /Users/my_name/.ssh/secret_key.pem 結果、 -r-------- 1 my_name staff 1698 1 19 12:08 /Users/my_name/.ssh/secret_key.pem というものでした。 read権限(400)はあると思うのですが、その他に何か考えられることがあれば、 お時間に余裕のある時で結構ですのでご教示いただきたいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問