SSHのポート番号と聞くと、昔大学院卒の同期に年齢を聞かれ「22」と答えたら、「SSHのポート番号じゃん」と言われたのを今でも思い出します。
それはさておき、サーバにファイルを送るためには、SCPコマンドを利用してという手順があると思いますが、利用できるポートが限られる場面も少なからずあるかと思います。
私はMacを利用しているのですが、通常なら以下の手順を取ります。
- ターミナル起動
-
scp -i [キーペアパス] [ローカルファイルパス] ec2-user@[IPアドレス]:[サーバのパス]
でファイルのアップロード
(WindowsならTera Termを使うことが多いかと思います)
ただ、先日これを行おうとしたところ、ポート番号の問題で許可されませんでした。
その時の代替案として、S3とSystems Managerを利用して解決しましたので、備忘として残しておきます。
前提
- EC2を利用して、Webサーバを公開している
- PCのローカル環境からscpやsshは都合上できない
- AWSは割と強めの権限を持っていて、ロールの付与権限などもある
大まかな手順としては以下です。
- S3にサーバで利用するファイルをアップロード
- EC2にSystems Managerとの接続ができるようなロールを付与
- System Managerに入り、S3からファイルをダウンロードするコマンドを実行し、EC2にダウンロード
S3のバケットとファイル準備
バケット名が被らないように設定を行います。バケットの設定は初期状態のままで問題ありませんでした。
(パブリックアクセスも全てブロックのまま)
その後、必要なファイルをドラッグ&ドロップなどでアップロードすれば完了です。
EC2にSystem Managerとの接続ができるようなロールを付与
-
その後わかりやすいロール名を記載して完了
System ManagerよりEC2へアクセス
-
以下のような画面に遷移するため、cliを利用して
aws s3 ls s3://バケット名
バケット内のファイルを確認
(Amazon linuxなら、特に何も作業せずAWS cliの利用ができました。) -
sudo su
で管理者権限になり、作業が行えるディレクトリに移動し、ダウンロードコマンドを実行
aws s3 cp s3://バケット名/index.html ./
#現在いるディレクトリにコピー
-
必要に応じて
mv
を行いディレクトリの移動などをさせれば完了です。
平日は結構遅くまで仕事をしていることが多く、勉強したり記事を書くのは休日になることが多いのですが、
やはり奥さんから「休みの意味知ってる?」と煽られますのでぷよぷよしてきます。
参考文献