AWSで踏み台サーバー経由の構築をしていると、ローカルから秘密鍵を転送する際に以下のようなコマンドを見かけます。
scp -i my-key.pem my-key.pem ec2-user@ec2-52-194-xxx-xxx.ap-northeast-1.compute.amazonaws.com:~/
「なんで -i my-key.pem の後ろに、もう一回 my-key.pem が出てくるの?」
「1つ目の鍵と2つ目の鍵は何が違うの?」
と混乱しがちですが、このコマンドを「日本語に直訳」するとスッキリ理解できました!
「scp(安全にファイル転送して) -i my-key.pem(この鍵を使ってログインして) my-key.pem(この鍵ファイルを荷物として) ec2-user@パブリックDNS(このWebサーバーの) :~/(ホームディレクトリの中に置いてきて)」
パーツごとの意味と役割
1文字ずつ分解すると、それぞれのパーツは以下の役割を持っています。
| パーツ | 意味・役割 | 直訳イメージ |
|---|---|---|
| scp | Secure Copyの略。SSHで安全にファイルを送るコマンド | 「ファイルを転送して!」 |
| -i my-key.pem | Identity fileの略。認証用の鍵を指定する | 「この鍵でドアを開けてね」 |
| my-key.pem | 送りたいファイル(コピー元)を指定する | 「このファイルを荷物として持って行って」 |
| ec2-user@... | 転送先の接続情報(ユーザー名@ DNS名) | 「行き先はこのWebサーバーだよ」 |
| :~/` | 転送先の保存フォルダー(ホームディレクトリー) | 「部屋の中(ホームディレクトリ)に置いてね」 |
なぜ my-key.pem が2回出てくるのか?
それぞれの my-key.pem は、見た目が同じでも役割(目的)が別物だからです。
-
1個目(
-iの後ろ) ➔ サーバーのドアを開けるための「認証キー」 - 2個目 ➔ サーバーの中に持ち込んで置きたい「荷物(転送対象のデータ)」
例えて言うなら、
「家の鍵(1個目)でドアを開けて、予備の鍵(2個目)を机の上に置いてきて!」
という操作を行っています。
まとめ
コマンドを単なる記号の羅列として暗記しようとすると大変ですが、分解して直訳してみると、どんな指示を出しているかがしっかり理解できます。
同じところでつまずいた方の参考になれば幸いです!
参考書籍
この記事のハンズオンは、以下の書籍を参考に、実践・学習した内容をまとめたものです。
- 『AMAZON WEB SERVICES 基礎からのネットワーク&サーバー構築改訂4版』