0
1

More than 1 year has passed since last update.

AWS : ssh接続で手こずった(scpコマンド、iオプション)

Last updated at Posted at 2021-08-12

はじめに

railsアプリのインフラをAWS化させようと学習中。

教材に従ってssh接続(WEBサーバーからDBサーバーに)にする際に
linuxコマンドのscpが上手く使いこなせなかったので、メモに残す。

学習教材

・さわって学ぶクラウドインフラAmazonWebServices基礎からのネットワーク&サーバー構築改訂3版

ハマった章:6-4 踏み台サーバーを経由してSSHで接続する

やりたい事

DBサーバー(プライベートサブネット)へのssh接続を可能にするために
WEBサーバー(パブリックサブネット)秘密鍵を格納しておく必要がある。

必要手順

1、前章(6-3)以前で作成された秘密鍵をscpコマンドを使用して、
  WEBサーバーにコピーする。

2、コピーできたら、WEBサーバーにssh接続をして
  ファイル権限を所有者が読み取りだけできるよう設定する。

3、WEBサーバーに置いている秘密鍵を使って
  DBサーバーにssh接続する。

ハマった部分

上記の1で、scpコマンドの文法が曖昧なまま実行してしまい
思うように挙動せず、迷走してしまった。

1、いざscpコマンドでコピー

scpは、Secure Copyの略称という事で
具体的には、ssh通信でcpコマンドが使えるみたいです。
ローカルからリモートに対象ファイルをコピーできる。

秘密鍵をコピーする際の文法としては、下記コードの通り、
・オプション(-i)を使用して認証させる秘密鍵ファイルを設定
・コピー元ファイルのパス
・コピー先のパス
の順番で記述したら良い。

ターミナル

% scp -i <認証させる秘密鍵ファイル> <コピー元ファイル> <コピー先>

今回は
・-iで認証させる秘密鍵ファイルと
・コピー元ファイル
同一のため、個人的にコードが読み解きにくかった…

ターミナル(ローカル)

% scp -i ~/.ssh/my-key.pem ~/.ssh/my-key.pem ec2-user@パブリックアドレス(DNSアドレス):~/

私はMacユーザーで、下記記事を参考に.sshディレクトリに
秘密鍵を格納していたので、パスは下記記述としている。

コピー先のパス指定で、EC2のパブリックアドレスの後に
:~/としているのでEC2のルートディレクトリに格納される。

ダメな例

これは自分の例で、オプションiを書けば
コピー元の秘密鍵ファイルが読み取られる かつ コピー元ファイルとして設定される
と誤認してしまっていた。

面倒ではあるけど、オプションiの認証ファイルは
別で指定してあげないといけないらしい。

ターミナル

% scp -i ~/.ssh/my-key.pem ec2-user@パブリックアドレス(DNSアドレス):~/

2、ファイル権限の変更

手順は以下の通り。

・WEBサーバー(パブリックサブネット)にssh接続する。
・ファイルがコピーできているか確認する。
・コピーできていれば、chmodで所有者だけ読取可能に変更する。

コードで表すと…

ターミナル(ローカル)

# EC2へssh接続
% ssh -i ~/.ssh/my-key.pem ec2-user@パブリックアドレス(DNSアドレス)

# EC2内でファイル確認
% ls

# 同ファイルの権限を変更
% chmod 400 my-key.pem

# 変更後のチェック
% ls -l

3、ファイル権限の変更

教材の通り、秘密鍵を使用して
EC2(パブリックサブネット)からDBサーバー(プライベートサブネット)にssh接続する。

ターミナル(EC2)

% ssh -i my-key.pem ec2-user@10.0.2.10

その他の参考記事

終わりに

当問題の解決のために、ググったら
linuxコマンドの復習の機会にもなって良かった。

落ち着いて見直すと、ほぼ教材通りのコードで
お恥ずかしい。笑

最後までお読み頂き、ありがとうございました。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1