
AWS に 2 つの EC2 インスタンスを作成しました。それぞれにキー ペアを作成しました。.pem 秘密キーをダウンロードし、.ppk
形式に変換しました。PuTTY と .ppk 秘密キーを使用して、各 ec2 インスタンスに接続できます。しかし、一方の ec2 インスタンスからもう一方のインスタンスに SSH するにはどうすればよいでしょうか。もう一方のインスタンスからどちらかのパブリック DNS に ping することはできます。しかし、一方から他方に SSH しようとすると、次のメッセージが表示されます。
権限が拒否されました (公開鍵)。
答え1
方法 1 - サーバー上で同じキーを使用する:
キーをopenssh形式に変換する秘密鍵をサーバーにアップロードします。宛先ホストに ssh するときに、秘密鍵ファイルを指定します。
ssh -i mykey.pem private.ip.of.other.server
方法2 - 新しいキーを作成する
各サーバーで以下を実行します:
ssh-keygen
Enter キーを押します。2 つのファイルが作成されます。
.ssh/id_rsa
.ssh/id_rsa.pub
の上サーバーA、cat を実行して公開鍵をクリップボードにコピーします。
cat ~/.ssh/id_rsa.pub
[select and copy to your clipboard]
SSHでサーバーB、その内容を authorized_keys ファイルに追加します。
cat >> ~/.ssh/authorized_keys
[paste your clipboard contents]
[ctrl+d to exit]
次に、サーバー A から ssh を実行します。
ssh -i ~/.ssh/id_rsa private.ip.of.other.server
答え2
3番目、そして私見では最良の解決策と呼ばれるものがありますSSHエージェント転送:
- ローカルマシンで、次のセクションを追加して ~/.ssh/config を構成します。
Host <ip-or-name-of-A-server> ForwardAgent yes
- サーバーAとBでは、ローカルの~/.ssh/id_rsa.pubがサーバーの~/.ssh/authorized_keysに追加されていると想定します。
サーバー A で作業している間、キーはその後の SSH 通信で使用できます - 例:
- SSHクライアントで他のサーバーに接続する - この場合はサーバーBへ接続する
- scp (セキュアコピー)、
- git - ローカル ID を使用してリモート git リポジトリにプル/プッシュできます。
- 等
これが機能するかどうかを確認するには:
- サーバーAに接続する
- SSH_AUTH_SOCK 環境変数を検出して、キー交換用のソケット接続があるかどうかを確認します。
set|grep SSH_AUTH_ # output should be something like this: SSH_AUTH_SOCK=/tmp/ssh-sEHiRF4hls/agent.12042
ノート:
- SSHエージェントが動作している必要があります - Linux:
ps -e | grep [s]sh-agent
、Windowsの場合はPuTTYのユーティリティpagentとplinkを確認してください - 参照:https://help.github.com/articles/using-ssh-agent-forwarding
- ssh のトラブルシューティング:
https://confluence.atlassian.com/display/BITBUCKET/SSH の問題のトラブルシューティング
答え3
この問題に対する新しい AWS ソリューション。
同じ内容のブログ投稿はこちらです:
ご注意ください:
SSH 公開キーは、インスタンス メタデータで 60 秒間、1 回のみ使用できます。インスタンスに正常に接続するには、この時間枠内に SSH を使用して接続する必要があります。キーには有効期限があるため、以前のようにこれらのキーを直接追跡または管理する必要はありません。