🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

Linux

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

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

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

Q&A

解決済

2回答

3230閲覧

ec2インスタンスにssh接続しようとするとPermssion deniedと表示される

maskmelon

総合スコア63

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

Linux

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

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

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

0グッド

0クリップ

投稿2021/03/09 15:28

編集2021/03/09 15:29

前提・実現したいこと

ec2インスタンスにターミナルからssh接続したいです。

以下の手順を実行しました。

ec2インスタンス作成時にキーペアをダウンロードし、mvコマンドで~/.ssh/authorized_keysに移動

ssh -i ~/.ssh/authorized_keys/hoge.pem ec2-user@<パブリックIPアドレス>を実行

発生している問題・エラーメッセージ

Warning: Identity file /Users/<ユーザー名>/.ssh/authorized_keys/hoge.pem not accessible: Permission denied. ec2-user@<パブリックIPアドレス>: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

試したこと

chmod 0700 ~/.ssh
chmod 0600 ~/.ssh/authorized_keys

を試してみましたがダメでした。

~/.ssh/authorized_keysに入れない状態になっているので、おそらく権限の問題だと思うのですが自力で解決できず質問させていただきました。どなたかご教授いただけると助かります。

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

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

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

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

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

yukky1201

2021/03/09 15:32

クライアント(ssh接続する側)とサーバ(sshサービスが起動している側)のユーザは同じにするのが基本ですが、「<ユーザー名>」と伏せている個所は「ec2-user」でしょうか。
maskmelon

2021/03/09 15:44

ホームディレクトリの名前です。私の場合だと下の名前を設定しています。 どちらかを変更する必要があるということでしょうか?
yu_1985

2021/03/09 17:23

> クライアント(ssh接続する側)とサーバ(sshサービスが起動している側)のユーザは同じにするのが基本 別にそんなことはなく、ssh実行時にユーザ指定すればいいだけです。 この質問の場合、そもそもやることを間違えてるのでその旨回答に記載します。
guest

回答2

0

ベストアンサー

sshしようとしてpermission deniedとなる原因は恐らく鍵自体の権限を変更してないからです。
権限を変更しているのは~/.ssh~/.ssh/authorized_keysのみで、特にオプション指定していないので権限が変更されたのはその2つのディレクトリのみです。
更に言うと~/.ssh~/.ssh/authorized_keysの権限が重要なのはsshする先のサーバの話で、sshの実行元の方では関係がありません
そうではなく鍵そのものの権限を600または400に変更してください

また、以下は問題とは直接関係ないと思われますが、補足説明です。

ec2インスタンス作成時にキーペアをダウンロードし、mvコマンドで~/.ssh/authorized_keysに移動

ローカル端末からsshしようとしているなら、ひねくれた使い方をしていない限り~/.ssh/authorized_keysは存在しないはずです。
また、仮に存在したとしてもそれは本来ディレクトリではないはずです。
~/.ssh/authorized_keysとは、sshログインを受け付ける側がどのキーであれば受け付けるか、という情報をテキストで保持しているファイルです(ディレクトリではありません)。
実際にあるユーザのホームディレクトリ配下に存在するauthorized_keysの中身を見てみると、接続を許可する秘密鍵に対応する公開鍵がテキストで記載されています。
試しにEC2インスタンスにsshで入ったら覗いてみてください。
ローカルの端末でsshを受け付けていることは通常ほとんどないので、ローカルの端末にauthorized_keysファイルが存在することはほぼありません。

もしauthorized_keysという名前のディレクトリを自分で作ったなら、その名前は上述のテキストファイルで使われるべき名前(※)ですので、ディレクトリを削除して別のところに鍵を配置してください。
※前述のとおりローカルではそもそも存在しないことが多いですが、混乱を防ぐ意味でもあります。
実際のところはどこに秘密鍵ファイルを配置していてもいい(sshコマンド実行時に指定するパスが変わるだけ)のですが、他のssh関連のファイルたちと合わせホームディレクトリの~/.sshディレクトリ配下に配置することが多いかとは思います。

投稿2021/03/09 17:45

yu_1985

総合スコア7588

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

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

maskmelon

2021/03/10 02:11 編集

ご指摘の通り接続先と接続元の処理を混同していたようです。 鍵自体の権限を変更したところうまく接続することができました。 的確な回答をくださりありがとうございました。
guest

0

Permission denied (publickey

これは、接続鍵が違っている、あるいはその設定が間違っているときにでます。
そこらへん見直してみよう

投稿2021/03/09 23:37

y_waiwai

総合スコア88040

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問