기타 개발 관련 이슈
윈도우에서 SSH 키 권한 문제 및 인코딩 오류 완전 해결
Kim_2468
2025. 11. 18. 02:36
아래는 윈도우에서 SSH 키 인증 과정에서
“Permission denied”, “Load key ...: invalid format” 등 여러 문제를 경험했을 때 어떻게 해결했는지를 한 번에 정리한 안내
1. 문제 상황 및 증상
- 리눅스/서버에서 생성된 SSH 개인키를 메모장/VSCode로 윈도우에 붙여넣어 저장
- VSCode를 사용해 인코딩을 맞춰 저장했어도,
- “Load key ...: invalid format”
- 또는 “Permission denied (publickey)”
- icacls 명령으로 권한 재설정 시 %USERNAME% 변수로 권한 부여 실패
2. 진단 및 중요한 확인 작업
- 키 파일 형식 확인
- 붙여넣은 키 파일이 한 줄로 합쳐져 있거나, 줄바꿈이 제대로 적용되지 않으면 SSH에서 invalid format 오류가 발생
- 반드시 Base64 영역이 여러 줄(64~70자마다 줄바꿈) 형태가 되어야 함.
- 파일 인코딩 확인
- “UTF-8 (BOM 없음)”으로 저장되어야 하며, BOM, ANSI, UCS-2 등 다른 인코딩이면 SSH가 인식하지 못함.
- VSCode는 우측 하단에서 파일 인코딩을 직접 확인, 필요하면 “Save with Encoding” 기능으로 다시 저장
3. 권한(퍼미션) 설정
- 윈도우에서는
chmod 600처럼 한 번에 권한을 줄 수 없으므로,- PowerShell에서
icacls명령으로 상속 끄고, - 기존 권한(Users, SYSTEM, Administrators 등) 모두 제거.
- PowerShell에서
icacls명령에서 %USERNAME% 사용 시 매핑되지 않아 실패하면,- 반드시 PowerShell에서
whoami로 전체 계정명(예: desktop-abc\pc) 확인 - 아래와 같이 직접 계정명으로 권한 부여
icacls pc_rsa /grant:r desktop:R icacls pc_rsa /grant:r "desktop-3ur4h3n\desktop:R"
- 반드시 PowerShell에서
4. 최종 해결 정리
- 줄바꿈·인코딩: 원본 키를 “줄 단위로” 다시 복사/붙여넣기, 에디터에서는 “UTF-8 (BOM 없음)”·공백/특수문자 체크 후 저장
- 권한: 내 계정만 “읽기(R)” 권한, 나머지 권한 모두 삭제
- 접속 재시도:
역시 정상 접속!ssh -i pc_rsa username@host -p 포트
5. 유용한 팁 요약
- SSH 키/설정 파일은 “여러 줄 Base64, UTF-8(BOM 없음)”만 인정
- 윈도우 icacls는 계정명 직접 입력이 가장 확실
- 모든 과정에서 불필요한 공백이나 줄, 문자가 없는지 끝까지 점검
이렇게 파일 형식, 줄바꿈, 인코딩, 권한을 모두 점검·수정하니 접속이 정상적으로 됐습니다.
같은 이슈를 겪는 사람이라면 이 방법대로 하나하나 점검하면 해결할 수 있습니다.