한국어

네트워킹

온누리070 플레이스토어 다운로드
    acrobits softphone
     온누리 070 카카오 프러스 친구추가온누리 070 카카오 프러스 친구추가친추
     카카오톡 채팅 상담 카카오톡 채팅 상담카톡
    
     라인상담
     라인으로 공유

     페북공유
    
     PAYPAL
     
     PRICE
     

pixel.gif

    before pay call 0088 from app
■ 해외 로잉 무료 스마트폰 휴대폰 070 인터넷폰 인터넷전화 국내 해외 가입 상사 주재원 교민 유학생 여행 등 ■

http://devblog.croquis.com/ko/2012/06/18/1-ssh-without-password.html


이번 글에서는 SSH 서버에 암호 입력 없이 접속하는 방법에 대해서 설명하겠습니다. 정확히 얘기하자면 암호 대신 열쇠를 이용해서 접속하는 방법이 되겠습니다. 암호를 입력하지 않는다고 해서 보안에 허술하다는 뜻은 아닙니다.

원리

제가 처음 유닉스를 접했을 당시에는 서버에 접속하려면 주로 Telnet을 사용했었습니다. 그때의 인식이 이어져 내려와 암호 없이 서버에 접속하는 것이 어색하게 느껴지긴 했으나, 사실 열쇠를 이용하는 것이 여러모로 편리하고 좋습니다.

두가지는 어떤 차이점이 있을까요?

암호의 경우 각 서버가 가지고 있는 것입니다. 따라서 어떠한 클라이언트에서라도 암호만 알고 있으면 서버에 접속할 수 있습니다. 외우기 위해서는 암호가 어느 정도 이상 어려워지기 힘들기 때문에, 아무리 암호가 잘 암호화되어 서버에 저장되었어도, 암호 DB가 유출되면 풀릴 가능성이 높습니다. 같은 암호를 쓴 다른 서버가 있다면 다른 서버도 덩달아 위험해지겠죠. 그리고 여러 사람이 같은 계정을 공유해야 하는 경우 암호를 한번 바꾸는 것도 쉽지 않습니다.

반면에 열쇠는 클라이언트와 서버가 나눠서 가지고 있고, 나누어진 열쇠가 맞아야지만 온전한 열쇠가 됩니다. 이 때 클라이언트가 가진 키를 개인 열쇠(private key), 서버가 가진 열쇠를 공공 열쇠(public key)라고 합니다. 서버에 공공 열쇠가 등록되어야지만 접속이 가능하기 때문에 장소를 가리지 않고 접속해야 하는 경우에는 사용하기 어렵지만, 서버에서 공공 열쇠가 유출되어도 개인 열쇠를 거의 알 수 없기 때문에 (다른 열쇠를 알기 어렵다는 것이 개인/공공 열쇠 방식의 핵심입니다) 다른 서버에 영향이 가지 않습니다. 또 한 계정에 등록할 수 있는 공공 열쇠에 제한이 없기 때문에, 여러 사람이 각자 가진 개인 열쇠들로 계정을 공유할 수 있습니다. 대신 개인 열쇠가 유출되면 문제가 생기지만 (개인 열쇠는 아무렇게나 복사해서 쓰면 안 되고 클라이언트별로 다른 열쇠를 만들어야 합니다), 열쇠를 적절히 제한해서 서버에 등록해뒀다면 영향이 최소화 될 순 있습니다. 또 개인 열쇠에 암호를 걸 수도 있습니다. 이 경우 유출되어도 비교적 안심할 수 있겠죠.

두가지 방식의 특징에 대한 논의는 많이 존재하므로 궁금하신 분은 인터넷에서 쉽게 정보를 얻으실 수 있습니다.

열쇠를 이용할 경우 자동화가 쉬워진다는 추가 장점이 있습니다. 많은 서버/클라이언트 프로토콜(Git등)이 SSH을 통하기 때문에 SSH 인증만 자동으로 된다면 많은 일들이 자동화가 됩니다. 그런데 암호를 이용한 SSH 인증 사용시 어딘가에 암호가 평문으로 존재해야 한다는 부담이 생깁니다. 반면 열쇠를 이용한 경우 서버에 자동 접속을 허가하려는 클라이언트의 공공 열쇠를 등록하는 것으로 충분하고, 추가적인 보안 위험은 없습니다.

방법

이제 실제로 암호 없이 SSH 서버에 접속하는 방법을 설명드리겠습니다. 원리를 이해하셨다면 큰 어려움이 없을 겁니다.

개인 열쇠 생성

우선 클라이언트에서 개인 열쇠를 생성합니다.

$ ssh-keygen -t rsa -C "comment to key"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
50:a5:15:0b:4b:b5:2e:2e:fb:97:6d:f8:b1:c0:48:a6 comment to key

-C 뒤에 주는 것은 개인 열쇠에 대한 설명입니다. 보통 간단하게 이메일 형식을 사용합니다. 저의 경우 'sangmin.yoon@컴퓨터명'을 사용합니다.

첫번째로 경로를 입력하게 되어 있습니다. 대부분의 경우 기본값을 그대로 둡니다. (ssh 명령에서 따로 인자를 주지 않으면 저 경로를 참고합니다.)

두번째는 암호구를 입력하는 곳입니다. 우리의 주 목적은 암호없이 서버에 접속하는 것이기 때문에 이 부분은 빈칸으로 둡니다. 여기에 암호구를 넣으면 열쇠를 사용하기 전에 암호구를 확인합니다. 단 이 암호구는 서버로 전송되지 않는 것으로, 암호를 통한 SSH 접속과는 다른 동작을 합니다. 원하는 경우 나중에 'ssh-keygen -p' 명령으로 암호구를 변경할 수 있습니다.

위와 같이 하면 .ssh 디렉토리에 id_rsa와 id_rsa.pub 파일이 생기는데 각각 개인 열쇠와 공공 열쇠입니다. 파일 권한을 살펴보시면 id_rsa 파일이 더 한정된 권한을 갖는 것을 볼 수 있습니다.

$ ls -l
-rw------- 1 user user 1675 Jun 18 16:19 id_rsa
-rw-r--r-- 1 user user  396 Jun 18 16:11 id_rsa.pub

공공 열쇠 등록

자 이제 공공 열쇠를 서버에 등록하면 됩니다.

서버에 접속해서 .ssh/authorized_keys 파일에 id_rsa.pub의 내용을 추가하면 됩니다. 여려 개의 공공 열쇠를 등록할 경우 한줄에 하나씩 넣으면 됩니다. 이 파일은 본인에게만 읽기/쓰기 권한(0600)이 있어야 합니다.

제 서버 설정 예입니다.

$ cat .ssh/authorized_keys 
ssh-rsa AAAA....OXIj sangmin.yoon@iMac
ssh-rsa AAAA....Ew== sangmin.yoon@wiki
ssh-rsa AAAA....xgrT sangmin.yoon@git
$ ls -l .ssh/authorized_keys
-rw------- 1 user user 1585 Jun  8 09:09 .ssh/authorized_keys

접속 확인

다시 클라이언트로 돌아와 SSH 접속을 시도했을 때 암호 없이 접속되었다면 성공한 것입니다.

$ ssh sangmin.yoon@git.croquis.com
Last login: Mon Jun 18 16:09:20 2012 from 192.168.23.7
sangmin.yoon@git:~$ 

<저자에 대해서>

안녕하세요. croquis.com에서 개발 부분을 책임지고 있는 윤상민이라고 합니다.

새로운 컴퓨터 언어를 익히는 것을 좋아하며, 좋은 지식 정보가 널리 공유되어 더 나은 개발 환경이 만들어졌으면 하는 꿈을 가지고 있습니다.

조회 수 :
9564
등록일 :
2013.09.05
05:15:58 (*.251.139.158)
엮인글 :
http://webs.co.kr/index.php?document_srl=24704&act=trackback&key=dbc
게시글 주소 :
http://webs.co.kr/index.php?document_srl=24704
List of Articles
번호 제목 글쓴이 날짜 조회 수
110 How to install a Debian 9 (Stretch) Minimal Server 데비안 9 설치 admin 2018-06-13 105
109 Which is better, GCC or Clang? admin 2018-06-13 101
108 고정ip설정, dns설정(데비안) linux 리눅스 admin 2018-06-13 127
107 [리눅스] 부팅 시 자동 실행 프로그램 등록|작성자 나눔HN admin 2018-06-01 211
106 리눅스 서버 유지보수 점검 메인터넌스 상황 파악 admin 2018-04-14 367
105 Top 20 OpenSSH Server Best Security Practices 보안 대책 실제 적용 admin 2018-04-14 359
104 Start Stop Restart Apache 2 Web Server Command Debian Ubuntu CentOS RHEL Fedora admin 2018-04-14 338
103 리눅스 한글 2014 뷰어 다운로드 - hwpviewer admin 2018-03-28 500
102 리눅스를 백업 복구 tar admin 2018-03-28 577
101 zip 압축 파일 및 텍스트 파일의 한글 깨짐 해결 방법 admin 2018-03-28 751
100 Lnux export how to admin 2017-12-17 1693
99 What's the difference between “adduser” and “useradd”? admin 2017-12-15 1723
98 useradd Command 리눅스 admin 2017-12-15 2576
97 How To Install Java with Apt-Get on Ubuntu 16.04 oracle java admin 2017-10-13 2437
96 우분투 Linux(Ubuntu)에 Java설치 및 환경 설정하는 방법 admin 2017-10-13 2470
95 우분투 다운로드 사이트 주소 ubuntu download 16.04.3 17.04 site link admin 2017-10-13 2678
94 How to install Java on linux with no Internet connectivity (using local repository) admin 2017-10-01 2478
93 윈도우 ssh 접속 프로그램 admin 2017-09-29 2795
92 openvpn Easy Windows Guide admin 2017-09-20 4425
91 OpenVPN - Getting started How-To admin 2017-09-20 3957
90 openssl 을 이용한 인증서 생성 절차를 정리한다. 개인키 CSR SSL 인증서 파일 생성 admin 2017-09-14 2919
89 How to Manually Unblock / Unban IP Address in fail2ban 차단풀기 admin 2017-09-12 3757
88 How To Protect SSH with fail2ban on Debian 7 데비안 ssh 방어 무작위 로그인 admin 2017-09-12 4908
87 SSH 무작위 로그인 시도 막기(With Fail2Ban on CentOS 6/7 + selinux) admin 2017-09-12 3128
86 리눅스 데비안 네트워크 설정 유선랜 무선랜 linux debian network setting 설정 admin 2017-09-07 5453
85 linux debian 계열 network 설정 테트워크 데비안 admin 2017-09-07 2820
84 PUTTY DOWNLOAD - FREE SSH & TELNET CLIENT admin 2017-09-03 5322
83 debian 8.8 download cd1 cd2 cd3 etc admin 2017-09-03 2895
82 Debian Download 데비안 리눅스 다운로드 admin 2017-09-02 3461
81 데비안 리눅스 부팅시에 방화벽 서버에 자동실행 되게 설정 해보자 admin 2017-08-30 2904
80 리눅스 시작시에 부팅시 프로세스 프로그램 자동 실행 설정 admin 2017-08-30 5613
79 리눅스 시작시 부팅 시, 프로그램 자동실행 등록하기 admin 2017-08-30 4470
78 리눅스 부팅시 시작시 프로그램 명령어 실행하기 (Linux Init script) admin 2017-08-30 4303
77 리눅스 부팅시 자동 실행 명령스크립트 실행하기 만들기 이해 linux booting admin 2017-08-30 5394
76 부팅시 자동실행 명령어 스크립트, rc.local admin 2017-08-30 7627
75 the world’s most widely deployed RADIUS server document admin 2017-08-29 4789
74 네트워크 디바이스명 변경 리눅스 eth0 eth1 admin 2017-08-29 5769
73 Cloned VMware CentOS6 Server "device eth0 does not seem to be present, admin 2017-08-29 3009
72 VMWARE VM Error boot loader install grub - install /dev/sda or /dev/hda MBR linux admin 2016-01-27 3631
71 Linux and Unix touch command admin 2015-11-15 4026
70 Configuration of Red Hat 5.4 Xen for SR-IOV Support admin 2015-08-02 4002
69 apt-get install linux-image-2.6.26-2-686-bigmem admin 2015-06-27 4146
68 intel i210 driver install and compile debian admin 2015-06-27 6957
67 Debian / Ubuntu Linux Install Kernel Headers Package admin 2015-06-27 4112
66 mount -t auto /dev/sdb1 /mnt && ls /mnt admin 2015-06-27 4076
65 kali linux 해킹 hacking attack DDOS etc tools admin 2015-06-24 4734
64 sources.list lenny admin 2015-02-03 4911
63 Ubuntu 14.04 원격 접속(xrdp) 설정 admin 2014-12-21 15048
62 Remote Desktop Connection from Windows 7/8 to Ubuntu 14.04 admin 2014-12-21 5521
61 Using Windows RDP to Access your Ubuntu Instance admin 2014-12-21 5203
60 Install GUI on Ubuntu Server admin 2014-12-21 5315
59 How to start GUI from command line? admin 2014-12-21 5345
58 Download all files in a directory using WGET admin 2014-12-16 5440
57 문서 편집기 vi vim command 명령어 정리 admin 2014-10-29 7048
56 find 명령 사용 예제들 admin 2014-10-29 6018
55 특정 IP 엑세스 못하게 하는방법 admin 2014-10-29 6083
54 scp 명령어를 이용한 파일 복사 및 전송 admin 2014-10-29 7560
53 [리눅스] 소프트웨어 레이드의 리빌딩 및 리싱킹 속도를 높이는 5가지 방법 admin 2014-10-17 6357
52 /bin/false, /sbin/nologin 의 차이점 admin 2014-10-13 7432
51 리눅스 시스템 유저 추가 명령어 useradd 사용하기 admin 2014-08-09 6616
50 리눅스 시스템 시작시에 자동 실행할 파일 등록하기 admin 2014-03-22 34463
49 linux 에티터 명령어 정리 포그라운드 전환 : ctrl + z 다시 vi 모드로 돌아오려면 fg admin 2014-03-05 11031
48 Linux Memory Management – Virtual Memory and Demand Paging admin 2014-03-03 8208
47 iptables rules tcp drop all port except tcp 22 admin 2014-02-26 9641
46 seagate HD 시게이트 하드 디스크 A/S 에이에스 기간 조회 및 받는 3가지 방법 admin 2013-12-09 10292
45 SSH Without Authentication Using Key Files (CentOS 5.6) admin 2013-11-22 8988
44 Getting started with SSH public key cryptography admin 2013-09-05 15952
» 암호 없이 SSH 접속하기 admin 2013-09-05 9564
42 Linux Date Command Examples to Display and Set System Date Time admin 2013-07-11 11215
41 FreeRADIUS 설치(freeradius-sever-2.1.8) admin 2013-04-19 20785
40 Radius를 이용한 ssh 인증 서버 구축하기 admin 2013-04-19 15521
39 CentOS 5.4에서 RADIUS 서버 설치하기 admin 2013-04-19 24536
38 Event IP 20187 admin 2013-04-08 9337
37 리눅스에서 자바(JDK) 설치하기 admin 2013-04-08 10444
36 리눅스 네트워크 설정 멸령어 Linux admin 2013-04-08 10672
35 [linux]리눅스 버전및 CPU등 환경정보 확인하기 admin 2013-04-08 39129
34 Linux 시스템 백업과 복원 admin 2013-04-04 10708
33 tar로 전체시스템 백업 LINUX Backup admin 2013-04-04 24614
32 다운된 리눅스서버 응급복구 admin 2013-03-28 14317
31 Build a RADIUS server on Linux admin 2013-03-23 13823
30 Deploying FreeRADIUS with the MySQL Cluster Database file admin 2013-03-22 9912
29 FREE RADIUS 활용및 응용 admin 2013-02-23 21620
28 리눅스에 RADIUS 서버 구현하기 admin 2012-09-01 49873
27 Debian CD DVD 다운로드 링크 헤메지말고 바로 다운로드하지요 admin 2012-08-18 10472
26 Site builder shootout: Drupal vs. Joomla vs. WordPress admin 2012-07-15 36161
25 WinXP 부팅안되는 현상 NTLDR is missing 메세지 admin 2012-07-12 11134
24 윈도우XP 알면 정말 편한 숨겨진 기능 60가지 admin 2012-05-11 15002
23 한국인/국내기업은 얼마나 Linux Kernel에 기여할까? admin 2012-04-29 12986
22 scp, ssh, rsync등을 사용할때에 SSH 비밀번호 묻는것 피하기 admin 2012-04-15 11865
21 [Linux/SSL] 리눅스 서버에 Apache 2 설치 및 SSL 설정하기(mod_ssl, openssl) admin 2012-04-15 12718
20 리눅스의 막강한 네트워크 필터 iptables admin 2012-04-15 11193
19 Centos net install web http admin 2012-03-02 15329
18 Linux 시스템 백업과 복원 admin 2012-02-28 12904
17 검색 파일리스트 만든 다음 여러파일 한방에 압축하기 admin 2012-02-14 12767
16 linux 파티션 디렉토리 용량 확인방법 전체 폴더 크기 사이즈 admin 2012-01-05 13188
15 How to disable IPv6 in Debian Lenny and Squeeze admin 2011-12-29 11199
14 리눅스 네트워크 설정 LINUX admin 2011-12-19 12231
13 다양한 사운드 파일있는곳 admin 2011-12-19 10269
12 모든 CPU 벤치마크 수치 admin 2011-12-16 12219
11 Wireshark admin 2011-12-16 10529