vscode에서 KEY 인증 SSH 접속 시 bad permission 에러

By | 2024-01-13

리눅스 서버에 올려져 있는 소스코드 또는 설정파일을 편집할 때 비주얼 스튜디오 코드 (일명: VSCode)를 주로 사용하고 있다. VSCode에 Remote SSH 플러그인을 설치하면 호스트의 정보를 등록해두고 쉽게 어디서나 접속하여 소스코드를 편집하고 저장할 수 있다. 게다가 별도의 Putty 등 SSH 클라이언트를 사용하지 않고도 터미널 명령 창을 실행할 수 있어 더욱 편리하다.

또한 Git과 GitHub 연동기능을 사용하면 VSCode에서 소스코드의 버전관리 기능까지 모두 사용할 수 있어 더욱 편리한 개발환경을 구현할 수 있다.

하지만 SSH 연결 시 ID와 비밀번호를 사용하는 인증이 아닌 PKI 인증 (개인키 인증)을 사용하는 경우 개인키가 저장된 파일의 권한 문제로 인해 접속 오류가 발생하는 경우가 많다.

개인 키(Private Key)가 저장된 파일의 경로를 설정하는 방법

AWS나 Oracle 클라우드에 가상서버를 생성하면 PKI의 개인키 인증을 통해 접속하는 경우가 많은데 이 경우에는 가상서버를 생성할 때 만들었거나 PUTTY 또는 XShell 등에서 만들거나, 서버 운영체제 내부에서 인증서 생성 명령을 통해 만든 공개키와 개인키 중 개인키를 복사 또는 다운로드 받아 PC에 저장하고 VSCode에게 개인키가 저장된 파일의 경로를 지정해주어야 한다.

개인키를 PC에 파일로 저장하였다면 다음의 절차를 통해 개인키가 저장된 파일을 서버 정보와 함께 VSCode에게 알려줘야 한다.
먼저 VSCode를 실행하고 다음과 같이 “>remote-ssh” 를 상단의 검색 또는 명령창에서 입력한다.

그러면 이 화면과 같이 Remote SSH Configuration이 저장되는 파일을 의미하는 명령이 보여야 한다. 만약 이 명령이 보이지 않는다면 Remote SSH 도구가 설치되지 않았을 가능성이 높다. 위 화면처럼 “Remote-SSH: Open SSH Configuration File…” 명령이 보인다. 이 명령을 클릭하면 다음과 같이 어떤 파일을 편집할 것인지를 묻는다.

일반적으로 현재 사용자의 홈디렉토리에 존재하는 .ssh 디렉토리 아래의 config 파일을 열면된다.
이 파일을 열게 되면 다음과 같이 입력한다.

● Host 에는 접속할 서버의 이름 즉 서버 목록에 보여질 서버의 이름을 지정한다.
● HostName에는 서버의 IP 주소를 표기한다.
● User에는 로그인할 계정을 입력한다.
● Port에는 SSH 접속 포트의 번호를 입력한다. 기본 포트인 22를 사용한다면 생략할 수 있다.
● IdentityFile에 PC에 저장된 개인키 파일명을 입력한다. 서버의 해당 사용자 계정 홈디렉토리의 .ssh 디렉토리 내에는 authorized_keys 라는 파일에 공개키가 저장되어 있어야 한다.

여기서 서버의 사용자 계정 홈디렉토리의 .ssh 디렉토리에 저장된 authorized_keys라는 파일의 퍼미션도 중요한데 -rw——- 즉 600으로 설정되어 있어야 한다. 그렇지 않으면 에러가 발생하면서 접속되지 않는다.

그리고 PC에 저장된 개인키 파일도 퍼미션이 중요하다. 이 퍼미션이 올바르게 설정되어 있지 않으면 vscode에서 접속할 때 “Bad Permission” 에러가 발생하게 된다.

SSH 접속 시 인증을 위한 개인키 파일의 권한 설정 방법

VSCode에서 서버에 ssh 접속 시 발생하는 Bad Permission 에러를 해결하기 위해서는 개인키가 저장된 파일의 권한을 Windows에 로그인한 계정만 접근할 수 있도록 최소한으로 설정해줘야 한다.

먼저 개인키가 저장된 파일이 있는 폴더로 이동한다.

이 파일에서 마우스 우클릭을 하여 “속성” 창을 실행한다.

보안탭으로 이동하면 그룹 또는 사용자 이름 항목에 뭐… Windows에 로그인한 사용자는 누구든 접근할 수 있도록 사실상 접근 제한이 전혀 걸려있지 않은 것을 볼 수 있다. 이런 설정이 Windows의 기본 설정이다. 즉 파일의 관점에서 봤을 때 무방비 상태라고 생각해도 틀리지 않다. 그렇다 파일의 관점에서 그냥 무방비 상태가 기본 상태다. 리눅스나 맥OS는 그렇지 않다.

창 아래쪽의 “고급”을 클릭한다.

파일의 고급 보안설정 창이 실행된다. 앞의 창에서 보였던 권한 항목들이 보인다.

일단 권한 항목들은 그냥 두고 화면 하단의 “상속 사용 안 함”을 클릭한다.

현재 상속된 사용 권한을 어떻게 하겠냐고 물어보는데.. “모두 제거합니다”를 클릭한다. 그러면 앞에서 보였던 권한 목록이 사라지게 된다.

그러면 기존의 권한 목록이 모두 사라지고 아무런 권한도 부여되지 않은 상태가 된다.

“상속 사용”을 클릭하면 안된다. ”추가”를 클릭한다.

“추가”를 클릭하면 권한 추가 화면이 실행되는데 다시 “보안 주체 선택” 링크를 클릭한다.

사용자 또는 그룹 선택이 나오는데.. 아래 화면처럼 “선택할 개체 이름을 입력”하는 창에 지금 Windows에 로그인한 계정의 ID를 입력한다.

계정을 입력하고 “이름 확인”을 클릭하면 입력한 계정이 맞을 경우 다음과 같이 “컴퓨터 이름\ID” 형태의 계정이 보인다.

“확인”을 누르면 권한을 선택하는 창이 보이는데 “읽기 및 실행”, “읽기” 정도만 권한을 주면 된다.

그리고 “확인”을 눌러 권한을 저장하고 창을 모두 닫으면 된다. 그런 다음 vscode에서 접속을 시도하면 정상적으로 로그인 되는 것을 확인할 수 있다.

만약 개인키가 암호화 되어 있는 상태라면 자동으로 패스프레이즈(암호키)를 묻는다. 혹시 이 키를 잊었다면 이 개인키의 사용은 불가하다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다