0
0

More than 1 year has passed since last update.

rsyncでEC2のディレクトリの権限を書き換えてしまいsshできなくなって死ぬほど焦った話

Posted at

環境

  • AWS
  • EC2 Ubuntu 20.04.3 LTS

経緯

  • ファイルを今すぐサクッとアップロードしたい(一部、除外したいファイルがある)
  • scp だと、除外するのが面倒だ
  • よし、rsync を使ってしまおう
rsync -av my-special-app my-pretty-ec2:

とコマンドを実行するつもりが、勢い余って

rsync -av my-special-app/ my-pretty-ec2:

とコマンドを実行してしまう

  • 「ローカルのフォルダ自体」を「EC2のディレクトリ」に同期してしまう
    • (-aオプションを深く考えず付けてしまったので、可能な限りローカル側のファイルがリモートで再現される)

トラブル

  • その後、Permission denied (publickey) になり、ssh できなくなる

原因

  • rsyncによって、ディレクトリの権限が書き換わってしまったから
    • (焦りすぎて思考能力、状況把握能力が、ほぼゼロになり、.sshフォルダばかり疑ってしまう、解決まで少し時間がかかる)
  • AWSナレッジページ(ページ最下部)に確認すべき項目が述べられていて、本当に助かった

対処方法

  • AWSのManagement consoleから、[Actions] - [Connect] を選択する
  • (Webブラウザでコマンドを実行できる、sshできなくてもリモート操作できる)
  • 環境に応じて、アクセス権を修正(以下、コマンド例)
    • AWSのページでは、700 となっている
sudo chmod 755 /home/ubuntu

再発防止

  • rsync時は--dry-run必須など

学び

  • 急いでいると深く考えなくなる、慣れてくると自信過剰になる
  • トラブルが発生して、焦っているときの思考は危険
  • 物事を、もっと深く学び、急いでいても高品質な出力を実現する(そのために、アウトプットすることは有効な手段と考える)

参考にしたページ

Linux ホームディレクトリ (/home) であれば、(0755/drwxr-xr-x) にする必要があります。
ユーザーのホームディレクトリ (/home/ec2-user/) であれば、(0700/drwx------) にする必要があります。
.ssh ディレクトリのアクセス許可 (/home/ec2-user/.ssh) であれば、(0700/drwx------) にする必要があります。
authorized_keys ファイルのアクセス許可 (/home/ec2-user/.ssh/authorized_keys) であれば、(0600/-rw-------) にする必要があります。

0
0
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
0