본문 바로가기
SECURITY

SSH 비밀번호 없이 key로 로그인하기 (putty, vscode, heidi sql, filezilla 적용)

by Z@__ 2021. 9. 6.
반응형

최근 개발중인 서버가 ssh brute-force 공격에 너무 노출된 거 같아 이 문제를 해결하고자 한다.

 

이전에는 fail2ban으로 시도 횟수를 제한했지만, 이번에는 비밀번호를 입력하는 것이 아니라 키인증 방식으로 바꾸려고 한다.

 

SSH KEY 만들기

ssh-keygen

 

ssh-keygen 명령을 실행하여 키쌍을 만들 수 있다.

 

단 passphrase를 넣어줄수 있다고 하는데, 쭉 엔터를 쳐서 지나갔다

 

정상적으로 키 생성이 완료되면 ~/에 .ssh라는 폴더가 생기게 된다.

 

아래 명령을 통해 확인할 수 있다.

 

ls -al | grep .ssh

 

 

폴더가 생긴 것이 확인되었으면 .ssh폴더로 이동하여 생성된 파일을 확인해보자.

cd .ssh
ls

 

 

id_rsa와 id_rsa.pub라는 키 파일이 두 개 생성된 것을 확인할 수 있다.

 

cat id_rsa.pub라고 하면 id_rsa.pub의 텍스트 내용을 출력할 수 있는데, >> authorized_keys를 붙혀서 입력하면

 

출력될 내용이 authorized_keys에 추가되게 된다.

 

추가하고 난 뒤 cat authorized_keys를 실행하게되면 ssh-rsa 이렇게 시작하는 키가 잘 들어있는 것을 확인할 수 있다.

 

cat id_rsa.pub >> authorized_keys
cat authorized_keys

 

 

이렇게 만든 키를 이용해서 인증을 할 수 있도록 설정이 끝났다.

 

 

PUTTY로 접속하기

서버에서 설정이 끝났으면, 로컬머신인 윈도우에서 접속이 가능하도록 설정을 해야한다.

 

서버에서 cat id_rsa를 하여 해당 키를 캡쳐하여 윈도우에서 붙혀넣도록 한다.

 

메모장을 하나 열어 키파일을 저장한다.

 

C:\Users\USER 디렉토리 안에 .ssh라는 폴더에 저장을 하는데

 

이 때 파일 형식이 txt가 아니도록, 파일 형식을 모든 파일로 변경하여 저장한다.

 

 

형식을 지웠는데도, 텍스트 파일로 인식이 되서 .txt를 지워준다.

 

 

 

 

이렇게 서버에 연결하기 위한 키 셋팅이 끝났으면 puttygen을 이용하여 키를 변경해야 한다.

 

 

 

 

 

puttygen을 실행하여 Load버튼을 눌러, 이전에 C:\Users\USER\.ssh에 저장된 키를 불러온다.

 

 

 

 

정상적으로 키를 불러오면, 이렇게 putty에 형식에 맞게 잘 적용이 되고, Save private key를 눌러 저장한다.

 

 

 

 

 

같은 경로에 이름만 바꿔 저장하면 .ppk 형식으로 저장이 되어 putty를 통해 로그인할 때 사용할 수 있다.

 

 

 

 

 

 

이렇게 잘 만들어진 것을 확인하면 접속을 해보면 된다.

 

 

HostName, Port를 설정해주고

 

 

 

왼쪽 탭에서 Connection - SSH - Auth로 이동하여 Browse를 눌러 방금 만든 .ppk 파일을 로드한다.

 

 

 

 

 

이렇게 정상적으로 .ppk파일을 로드했으면 다시 세션 탭으로 이동하여 Save를 해두면 다음에는 바로 사용할 수 있다.

 

 

 

 

 

 

 

로그인 계정만 입력하면 별도의 비밀번호 없이 접속이 잘되는 것을 확인할 수 있다.

 

 

 

VSCODE로 접속하기

 

 

이렇게 putty 설정이 끝났으면 vscode config를 바꿔주도록 한다.

 

윈도우 기준 ctrl+shift+p를 눌러 config를 입력해 open ssh configuration file에 들어간다.

 

 

 

위에서 key파일을 만들었던 디렉토리를 선택한다.

 

 

 

 

Remote-ssh연결하는 것과 마찬가지로 아래와 같이 입력해준다.

 

IdentityFile ~/.ssh/ssh-rsa만 추가해주면 알아서 키파일을 찾아서 접속하게 된다.

 

putty에서 만들었던 .ppk파일이 아닌 그냥 키 파일을 선택하면 된다.

 

 

왼쪽에 있는 컴퓨터 모양 탭을 눌러 SSH Targets을 선택하면 접속이 잘된다.

 

 

특별한 에러없이 접속이 잘 되었으면 File - Add Forder to Workspace로 원하는 디렉터리를 가져오면 된다.

 

 

아래와 같이 잘 불러와진것을 확인할 수 있다.

 

 

HEIDI SQL 적용

 

이제 비밀번호를 통한 ssh 접속이 안되기 때문에 데이터베이스에 접근할 때도

 

key를 이용한 SSH tunnel 설정을 해줘야 한다.

 

 

Heidi SQL을 실행시키고 첫번째로 네트워크 유형을 바꿔줘야한다.

 

기존 TCP/IP로 선택되어 있을 텐데, SSH tunnel로 바꾸면 된다.

 

 

 

그럼 아래와 같이 SSH 터널이라는 탭이 생긴 것을 확인할 수 있다.

 

그리고 설정 탭에서는 mysql에 접속할 계정과 암호, 그리고 기본포트 3306을 넣어주면 된다.

 

3306이 아닐 경우에는 알아서 넣어준다.

 

 

 

다음은 SSH 터널 탭으로 이동한다.

 

plink.exe 위치에는 ssh접속을 할 수 있는 프로그램을 넣어줘야 한다고하는데, plink.exe를 웹에서 다운 받아도 되고 

 

putty가 설치되어 있다면 해당 경로를 넣어주면 된다.

 

그리고 SSH 연결을 할 호스트와 포트를 넣어주고 계정을 넣어주면 된다.

 

암호는 키 파일을 통해 접속할 것이기 때문에 비워두면 된다.

 

그리고 putty를 접속할 때 사용했던 ppk 파일을 개인 키 파일에 넣어준다.

 

마지막 로컬 포트는 3307로 넣어주면 된다.

 

 

이 상태에서 열기를 누르면 알아서 저장할지 물어볼 것이고, 접속이 잘된다면 성공!!

 

 

 

filezilla 적용하기

ftp를 사용하기 위해 filezilla에 ssh key인증 방식을 적용하려고 한다.

 

처음 filezilla를 켜고 나서 사이트  관리자로 이동한다.

 

f

 

사이트 관리자로 이동하였으면 프로토콜을 SFTP로 변경하고, 호스트에는 서버 IP, 포트에는 22(SSH), 로그온 유형은 일반 사용자에는 계정을 넣고 확인버튼을 누른다.

 

그리고 편집탭에 설정으로 이동한다.

 

 

설정 탭에 SFTP에 들어가서 키파일 추가 버튼을 이용하여 키 파일을 추가해준다.

 

 

키 파일은 앞에서 puttygen으로 만들었던 .ppk를 가져오면 된다. 

 

다 되었다면 왼쪽 아래에 확인 버튼을 클릭

 

이렇게 설정이 완료되었으면 서버탭에 다시 연결을 누른다. (단축키 Ctrl + R)

 

 

비밀번호를 입력하라는 창이 나오는데 그냥 확인을 누르면 된다.

 

 

정상적으로 SFTP로 접속한 모습 끝!!

 

 

 

 

비밀번호 접속 비활성화

 

 

ssh를 비밀번호가 아닌 key방식으로 인증하도록 설정이 끝났으면 이제 비밀번호를 통한 로그인을 비활성화 해야한다.

 

/etc/ssh/sshd_config 파일을 열어 PasswordAuthentication no 라고 수정해주면 된다.

 

 

 

수정이 끝났으면 service sshd restart명령을 통해 ssh demon을 재시작해준다.

 

 

 

 

 

 

적용이 잘 되었는지 확인을 위해 putty로 비밀번호 접속을 시도해보면

 

이렇게 지원하지않는 인증방식이라는 경고와 함께 로그인 시도를 할 수 없게 된다.

 

 


 

 

그럼 SSH key인증방식의 tunnel을 알아보았다.

 

 

끝!!

 

 

참고

 

파일 및 디렉토리 별 권한설정(생활코딩 : https://opentutorials.org/module/432/3742)

 

chmod 700 ~/.ssh

chmod 600 ~/.ssh/id_rsa

chmod 644 ~/.ssh/id_rsa.pub

chmod 644 ~/.ssh/authorized_keys

chmod 644 ~/.ssh/known_hosts

 

 


 

블로그 캡처에 사용된 키들은 내부망에 있는 자원에 대한 키값이기 때문에 노출이 되어도 안전합니다 :)

 

 


 

반응형

'SECURITY' 카테고리의 다른 글

Cloudflare ssl 적용기(hsts, http to http)  (0) 2021.08.12
chrome 개인정보 보호 오류 해결하기  (11) 2021.07.14
WebGoat 7 설치하기 Centos  (0) 2018.10.17

댓글