ssh 키 인증 방식으로 로그인하기

정보/뉴스

ssh 키 인증 방식으로 로그인하기

담운 0 1,436 2019.06.06 16:32

기본적으로 외부 서버에 ssh 접속을 하게 되면 비밀번호 인증을 하게 된다. 비록 간단하고 단순한 방법이지만, 비밀번호가 네트워크를 통해 교환된다는 치명적인 문제점을 가지고 있다.

이런 위험을 피하고자 공개키와 비밀키를 이용한 "공개키 인증" 방식을 주로 사용한다.

우선 현재 자신의 pc에 공개키와 비밀키 쌍을 생성하여야 한다.

사용자 PC는 Mac OS X 환경, 서버 PC는 Ubuntu 14.04 LTS 환경을 기준으로 작성되었습니다.

$ ssh-keygen

위의 명령어를 실행하면 우선 저장 경로(키 파일 이름도 정할 수 있음)와 passphrase를 물어본다. passphrase는 키를 위한 일종의 비밀번호로 키가 유출되더라도 비밀번호를 모르면 사용할 수 없으므로 조금 더 보안성을 높일 수 있다. 하지만 필수는 아니므로 미입력 후 그냥 Enter 를 눌러도 된다.

절차를 끝내면 [키 이름][키 이름].pub 이라는 키 쌍이 생성된다. 저장 경로를 별도로 설정하지 않았다면 id_rsa, id_rsa.pub 라는 이름으로 생성되었을 것이다.
이름에서 알 수 있듯이 .pub로 끝나는 파일은 공개키 파일이기 때문에 유출되어도 아무 상관없지만, 나머지 하나는 비밀키이므로 절대 유출되어서는 안된다.

이제 이 공개키를 서버에 등록하여야 한다. 이 때 scp 명령어를 이용한다.

$ scp id_rsa.pub jupiny@52.78.151.36:/tmp/

이 공개키를 인증할 때 사용하기 위해 키의 내용을 ~/.ssh/authorized_keys 라는 파일에 추가하여야 한다. 만약 서버에 해당 파일이 없다면 직접 만들도록 한다.

$ ssh jupiny@52.78.151.36
$ cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys

그리고 해당 사용자 외에는 .ssh 디렉토리 내의 모든 파일을 읽고 쓸 수 없도록 권한을 설정한다.

$ sudo chown -R jupiny:jupiny # 소유자를 해당 사용자, 그룹을 해당 사용자 그룹으로 설정
$ sudo chmod 700 ~/.ssh # 소유자만 해당 디렉토리 읽기, 쓰기, 접근 가능
$ sudo chmod 600 ~/.ssh/authorized_keys # 소유자만 해당 파일 읽기, 쓰기 가능

하나의 키에 대해서 특정 명령어만 실행할 수 있게 설정도 가능하다.
~/.ssh/authorized_keys 파일을 연 후,

$ vim ~/.ssh/authorized_keys

아래와 같이 해당 공개키 앞에 특정 명령어열을 추가해주면 된다.

command="scp -f /var/log/access.log" ssh-rsa AAA...  

이렇게 설정하면 해당 비밀키로는 /var/log/access.log 파일을 scp 명령어로 복사해오는 것 밖에 하지 못하게 된다.

$ scp -i ~/.ssh/id_rsa jupiny@ 52.78.151.36:/var/log/access.log ~/

출처

Comments

번호 제목 글쓴이 날짜 조회
72 과연 양방향매매로 수익낼 수가 있는가… 댓글+1 담운 2020.05.14 2068
71 [해외선물] 실시간 시세신청 안내-지… 담운 2020.05.11 639
70 해외선물 실시간 시세 무료로 볼 수 … 담운 2020.05.10 1083
69 DB금융투자, 수수료 혜택 등 해외선… 담운 2020.04.02 567
68 위험 고지 담운 2020.03.31 569
67 리스크 고지 담운 2020.03.11 552
66 해외선물 증거금 담운 2019.10.20 832
65 CME E-micro 담운 2019.10.20 824
64 파생상품 양도소득세 확정신고 안내 담운 2019.09.25 857
63 주식, 암호화폐, 해외주식 세금 비교 담운 2019.09.13 881
62 해외선물옵션 API 시세 유료화 정책… 담운 2019.08.28 1864
61 Github에 ssh키 생성하고 등록… 담운 2019.06.08 1195
60 github-white-logo-70… 담운 2019.06.08 1229
59 ssh-key 생성 및 github,… 담운 2019.06.08 1713
58 Git 서버 - SSH 공개키 만들기 담운 2019.06.08 1351
57 Nodejs로 구현한 서비스를 Caf… 담운 2019.06.08 3000
56 GitHub SSH 키 생성 및 등록… 담운 2019.06.08 1527
55 기타 Git 명령어(cherry-pi… 담운 2019.06.08 1017
54 Merge와 Rebase 담운 2019.06.08 1104
53 Git 브랜치(Branch) 관리 담운 2019.06.08 1339
52 Git commit 수정하기, dif… 담운 2019.06.08 1167
51 Github 사용하기, remote,… 담운 2019.06.08 1642
50 Git 저장소 생성(init), 최초… 담운 2019.06.08 1237
49 Git 설치와 사용법(Git Bash… 담운 2019.06.08 1298
48 node.js git 사용법 담운 2019.06.08 1454
47 Windows에서 git 및 node… 담운 2019.06.08 1387
46 Nodejs로 구현한 서비스를 Caf… 담운 2019.06.08 1250
45 Git 활용 (기본적인 사용법) 담운 2019.06.08 1258
44 cafe24 nodejs git 저장… 담운 2019.06.08 1865
43 카페24 node.js 접속준비 담운 2019.06.08 1804
42 cafe24 node.js git 사… 담운 2019.06.08 3433
41 GitHub - 소스트리(Source… 담운 2019.06.07 1824
40 Sourcetree 설치 가이드 담운 2019.06.07 1103
39 [Git] 소스트리 (SourceTr… 담운 2019.06.07 1395
38 GitLab 업무환경 구성 가이드 담운 2019.06.07 1339
37 Git :: 소스트리(SourceTr… 담운 2019.06.07 1261
36 cafe24 에서 nodejs hos… 담운 2019.06.06 1758
35 카페24 node.js 접속준비 담운 2019.06.06 2712
34 카페24에서 Node.js 서버로 A… 담운 2019.06.06 1466
열람중 ssh 키 인증 방식으로 로그인하기 담운 2019.06.06 1437