AWS EC2 인스턴스에 스프링부트로 개인 프로젝트를 올려놓고 내 편의를 위한 웹사이트로 사용 중이다.
EC2에 있는 로그 파일을 로컬에 내려받아 분석을 하기 위해 FileZilla를 통해 접속하였다.
FileZilla로 파일을 내려받으려고하니, 계속 Permission Denied 오류가 발생했다.
오류: (~~파일경로): open for read: permission denied
찾아보니 권한 문제라고 하길래 권한을 변경하려고 chmod 명령어를 사용하였는데,
여기서부터 문제가 발생했다.
내가 옮기고자 하는 파일이 우분투 홈디렉터리에 있는 파일이였다.
앞으로도 파일을 옮길 때마다 매번 ssh로 따로 접속해서 권한을 주는 것은 너무 귀찮은 일이라고 생각해서, 홈디렉터리 자체에
sudo chmod 777 파일이름 로 권한을 변경했다.
그러고 파일을 로컬에 내려받으려고하니
계속 FileZilla에서 연결에 실패했다고 나오는 것이다.
일시적인 오류인가 싶어서 FileZilla를 껐다가 다시 켜서 다시 연결하려고 하는데, 이제는 서버에 연결 자체가 안된다.
그래서 터미널로 SSH 접속을 시도하는데, 그것마저도
Permission denied (publickey).
이렇게 출력되면서 SSH 접속도 안된다.
당황했지만, 분명히 방금 전까지만 해도 문제가 전혀 없었고
수정한건 이 chmod밖에 없는데 혹시 이게 원인인가 싶어서 gpt에 물어보니
❗ 문제 원인
SSH 접근 시, 사용자의 홈 디렉토리(
~, 보통/home/username)나.ssh디렉토리의 권한이 너무 열려 있으면
SSH는 보안상 위험하다고 판단해서 접속을 거부해버려.
라고 답변이 왔다
이 답변을 보니, 내가 FileZilla로 옮기고자 했던 파일이 있는 폴더가
홈디렉터리였다는 것이 생각났다.
해결 방법을 물어보니 권한을 700이나 755로 되돌리는 방법이 있다고한다.
근데 아까 말했듯이 ssh로 접속이 안된다.
나는 보통 터미널로
ssh -i ~~를 통해 개인키 파일로 접속하는데,
지금 그것마저도 Permission Denied를 당하고 있다.

EC2인스턴스 연결 방법으로 접속하니 다행히 접속이 되었다.
이제 chmod로 다시 홈디렉터리 권한을 755로 되돌리니,
ssh 접속과 FileZilla 연결도 정상적으로 되었다.
진짜 이게 원인이 맞는거겠지?싶어서 확인차 다시 홈디렉터리 권한을 777로
바꿔보니, 역시나 ssh로 접속이 다시 안되는 것을 확인했다.
이에 대해 더 알고싶어서 구글링을 통해 홈디렉터리 권한과 ssh 접속, ssh접속과 chmod 등등을 영어로 검색해봤으나 마땅히 확실한 답변이 없었다.
GPT 답변만으로는 정확하지 않을 수 있지만 일단 GPT 답변으로는
OpenSSH의 auth.c 와 관련 파일에 정의된 조건은 다음과 같아:
~).ssh 디렉토리authorized_keys 파일rw-------)라고 답변했다.
man sshd_config
로 보는 방법이 있다고함.
중요한건 저 옵션에서 StrictModes 설정이라고한다.

sshd_config을 파일을 열어보니 StrictModes가 Yes로 되어 있다.
하지만 이거 자체를 No로 바꾸는건 크게 위험하다.
다른 사용자가 나의 .ssh/authorized_keys 파일을 바꾸거나 읽을 수 있게 되면, 허가되지 않은 사람이 root도 될 수 있다고한다.
결국 파일을 옮겨야 하는 목적은 홈디렉터리가 아닌 해당 파일만 권한을 바꾸니
FileZilla에서 정상적으로 파일을 가져올 수 있었다.
또 .ssh 같은 폴더가 아닌 홈 디렉터리 권한만 수정한다고 큰 보안 이슈가 생길 수 있다는 것을보고
너무 안일하게 생각했던 것에 대해 반성하게 되었다.