문제 상황
최근 제가 개인적으로 진행하고 있는 프로젝트에서 소소한 오류가 발생했습니다. SSH 키를 정상적으로 설정했음에도 클라이언트 서버가 목표 타겟 서버에 접속하지 못하는 현상이 발생했는데요. 처음에는 네트워크 이슈나 키 생성 문제를 의심했지만, 실제 원인은 예상과는 다른 곳에 있었습니다.
오류 내용
서버 로그를 확인해보니 다음과 같은 메시지가 반복적으로 나타났습니다.
"Authentication refused: bad ownership or modes for directory .ssh" "WARNING: UNPROTECTED PRIVATE KEY FILE!"
직접 openssl 접속 테스트를 해봤고. 다음과 같은 에러가 발생했습니다.

키를 설정했음에도 클라이언트 서버에서 목표 타겟 서버에 접속하지 못하는 현상이 발생 했고 원인은 생각보다 단순했습니다.
에러 원인
문제의 핵심은 SSH 관련 디렉토리와 파일의 권한 설정이었습니다.
SSH는 보안을 최우선으로 하는 프로토콜이기 때문에, 파일 시스템 수준에서도 엄격한 보안 정책을 적용합니다.
특히 다음 세 가지 지점에서 권한 설정이 중요합니다.
- 홈 디렉토리의 권한
- .ssh 디렉토리의 권한
- 인증 키 파일들의 권한
각각의 권한이 SSH의 보안 요구사항을 충족하지 못하면, 시스템은 자동으로 접속을 차단합니다. 이는 '보안은 가장 약한 고리만큼만 강하다'는 원칙을 실천하는 것입니다.
SSH 권한 관리의 핵심 원리와 보안적 의미를 자세히 설명해드리겠습니다.
디렉토리 권한 (700)의 의미와 필요성:
디렉토리에 실행(x) 권한이 필요한 이유는 Unix/Linux 시스템의 기본 설계와 관련이 있습니다.
디렉토리 탐색은 실제로 '실행' 작업으로 간주됩니다.
예를 들어, /home/user/.ssh/authorized_keys 파일에 접근하려면 시스템은 각 디렉토리 수준을 '실행'하면서 경로를 탐색해야 합니다.
# 폴더 권한 설정
chmod 700 ~/.ssh
파일 권한 (600)의 상세 분석:
다른 사용자: 접근 불가 (---)
그룹: 접근 불가 (---)
소유자: 읽기/쓰기 가능 (rw-)
일반 파일을 의미 (-)
# 키 파일 권한 설정 (600)
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_rsa
소유자 확인 및 수정:
# 소유자 확인 및 수정
chown -R user:user ~/.ssh
이러한 엄격한 권한 설정이 필요한 보안적 이유:
- 권한 상승 공격 방지:
- 다른 사용자가 .ssh 디렉토리에 접근할 수 있다면, 심볼릭 링크 등을 통한 권한 상승 공격이 가능할 수 있습니다
- 700 권한은 이러한 공격 벡터 자체를 차단합니다
- 정보 유출 방지:
- authorized_keys 파일에는 허가된 공개키 목록이 있어, 시스템의 신뢰 관계를 파악할 수 있는 중요 정보가 담겨있습니다
- 600 권한은 이 정보가 권한 없는 사용자에게 노출되는 것을 방지합니다
- 무결성 보장:
- 키 파일이 변조되면 보안에 치명적인 영향을 미칠 수 있습니다
- 엄격한 권한 설정은 파일의 무결성을 보장하는 첫 번째 방어선 역할을 합니다.
# 권한이 느슨한 경우 (예: 755)
- 공격자가 .ssh 디렉토리 내용을 읽을 수 있음
- authorized_keys 파일을 분석하여 시스템 구조 파악 .
- 추가 공격 벡터 발견 가능
# 엄격한 권한 설정 (700/600)
- 디렉토리 자체존재 외에는 정보 획득 불가
- 권한 없는 사용자의 모든 접근 시도 차단
OpenSSH의 보안 검사 메커니즘:
# sshd가 시작할 때 수행하는 검사
- 홈 디렉토리 권한 확인
- .ssh 디렉토리 권한 확인
- 키 파일 권한 확인
- 소유자 일치 여부 확인
# 권한이 부적절한 경우
- 해당 파일/디렉토리 무시
- 보안 경고 로그 생성
- 필요시 연결 거부
이러한 암호화, 키 기반 인증, 프로토콜 보안과 함께 작동하여 전체적인 시스템 보안을 강화합니다.
즉 원활한 ssh 접속을 위해선, 홈 디렉토리 권한 확인. .ssh 디렉토리 권한 확인, 키파일 권한 및 소유자가 일치하는지까지 확인해야 합니다.
결론
이번 문제를 통해 다시 한번 기본의 중요성을 깨달았습니다. SSH의 보안 메커니즘은 복잡한 암호화나 네트워크 프로토콜뿐만 아니라, 가장 기본적인 파일 시스템 수준의 보안까지 고려하여 설계되어 있습니다.
실제로 대부분의 SSH 관련 문제는 이러한 기본적인 권한 설정에서 발생합니다. 따라서 SSH 사용 시에는 반드시 다음 사항을 체크리스트로 확인해야 합니다:
- 홈 디렉토리 권한
- .ssh 디렉토리 권한
- 키 파일 권한
- 파일 및 디렉토리의 소유자 설정
이러한 세심한 권한 관리는 시스템의 보안을 강화하고, 안정적인 SSH 연결을 보장하는 기본이 됩니다.