web-dev-qa-db-ja.com

あるec2インスタンスから別のインスタンスにsshする方法は?

AWSに2つのEC2インスタンスを作成しました。それぞれにキーペアを作成しました。 .pem秘密キーをダウンロードして、.ppk形式に変換しました。 PuTTYとその.ppk秘密鍵を使用して、各ec2インスタンスに接続できます。しかし、ec2インスタンスの1つから別のインスタンスにSSHで接続するにはどうすればよいですか?どちらか一方のパブリックDNSをもう一方からpingできます。しかし、sshを1つからもう1つにしようとすると、次のようになります。

権限が拒否されました(公開鍵)。

6
Stephen Walsh

方法1-サーバーで同じキーを使用します:

キーをopenssh形式に変換 して、秘密キーをサーバーにアップロードします。宛先ホストにsshするときに、秘密鍵ファイルを指定します。

ssh -i mykey.pem private.ip.of.other.server

方法2-新しいキーを作成する

各サーバーで実行:

ssh-keygen

Enter Enter Enterを押します。次の2つのファイルがあります。

.ssh/id_rsa
.ssh/id_rsa.pub

サーバーAで、公開鍵を猫でクリップボードにコピーします。

cat ~/.ssh/id_rsa.pub
[select and copy to your clipboard]

Server Bにsshし、その内容を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
8
matiu

いわゆるsshエージェントフォワーディングと呼ばれる3番目でIMHOが最良のソリューションです。

  • ローカルマシンで〜/ .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 env varを検出して、鍵交換用のソケット接続があるかどうかを確認します。
set|grep SSH_AUTH_ # output should be something like this:
SSH_AUTH_SOCK=/tmp/ssh-sEHiRF4hls/agent.12042

ノート:

4
Robert Lujo

問題の新しいAWSソリューション。

EC2インスタンス接続

これは同じブログ記事です:

AWSブログ

ご注意ください:

SSH公開鍵は、インスタンスメタデータで60秒間1回のみ使用できます。インスタンスに正常に接続するには、この時間内にSSHを使用して接続する必要があります。キーの有効期限が切れているため、以前のようにこれらのキーを直接追跡または管理する必要はありません。

0
Tibor Szalai