Friday, March 23, 2018

CentOS 6.6 리눅스 네트워크 ] 2. OpenSSH - OpenSSH 서버 간단 설정


안녕하세요. 썬구루입니다. 이 게시물에서는 OpenSSH 서버에 대해 알아보도록 하겠습니다. 저희가 VMware Workstation에 가상머신을 생성 후 CentOS 6.6을 설치하여 사용을 하고 있습니다.

Console View를 통해 CentOS 입출력을 모니터처럼 보고 있는 것입니다. 실무에서는 키보드, 마우스, 모니터 역할을 하는 KVM 스위치라는 것을 사용하여 8대 또는 16대 서버에 연결하여 하나의 KVM 스위치를 통해 여러 대 서버에 접속하여 관리합니다.

현장에 가면 보통 서버 랙 하나 당 KVM 스위치가 하나씩 장착되어 있죠. 이것을 사용하는 이유는 수많은 서버에 1 대 1로 모니터, 키보드, 마우스를 배치할 수 없기 때문입니다.

또는 LCD 모니터, 키보드, 마우스를 이동식 선반에 장착한 한 물건... 정확한 명칭은 Computer Crash Cart라고 하는데.. 우리나라 명칭은 모르겠음.. 이동식 콘솔(?) 아무튼 이것을 관리하려는 서버 뒤로 끌어 놓고 키보드, 마우스, 모니터 선을 연결한 후 서버에 접속 관리합니다.

이러한 접속을 로컬 접속(Local Access) 또는 콘솔 접속(Console Access)이라 합니다.

만약 원격지에서 서버에 접속하려면 어떻게 하면 될까요? 불가 몇 년 전만 하더라도 텔넷 서비스(Telnet)를 사용하여 서버에 원격접속을 했었습니다. 서버에는 텔넷 서비스 프로그램이 동작하고(실제는 inetd나 xinetd가 바인딩 처리) 원격지에 있는 PC나 노트북에서 텔넷 클라이언트 프로그램을 사용여 서버에 접속하는 것입니다.

이러한 접속을 원격 접속(Remote Access)라고 합니다.

요즘은 텔넷 서비스를 사용하지 않습니다. 텍스트(Text) 통신을 하기 때문에 중간에 패킷만 가로챌 수 있다면 접속 ID와 암호를 낚아챌 수 있기 때문입니다.

그래서 요즘 리눅스 또는 리눅스에 암호화된 통신을 하는 원격 접속을 하기 위해 SSH 서비스를 사용합니다. 이 게시물에서는 이것에 대해 알아보려 합니다.


■ OpenSSH 서버 버전 확인

아래와 같은 명령을 실행하면 CentOS 6.6에서 사용하는 SSH 서버 버전을 확인할 수 있습니다.

[root@sunguru ~]# rpm -qa | grep openssh-server
openssh-server-5.3p1-104.el6.x86_64
[root@sunguru ~]#
[root@sunguru ~]# rpm -qi openssh-server-5.3p1-104.el6.x86_64
Name        : openssh-server               Relocations: (not relocatable)
Version     : 5.3p1                             Vendor: CentOS
Release     : 104.el6                       Build Date:
Install Date:                                  Build Host: c6b8.bsys.dev.centos.org
Group       : System Environment/Daemons    Source RPM: openssh-5.3p1-104.el6.src.rpm
Size        : 710364                           License: BSD
Signature   : RSA/SHA1, 2014년 10월 18일 (토) 오전 05시 02분 24초, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://www.openssh.com/portable.html
Summary     : An open source SSH server daemon
Description :
OpenSSH is a free version of SSH (Secure SHell), a program for logging
into and executing commands on a remote machine. This package contains
the secure shell daemon (sshd). The sshd daemon allows SSH clients to
securely connect to your SSH server.
[root@sunguru ~]#
[root@sunguru ~]# rpm -ql openssh-server-5.3p1-104.el6.x86_64 | grep sbin/ssh
/usr/sbin/sshd
[root@sunguru ~]# 

■ OpenSSH 서버 서비스 및 프로세스 확인

[root@sunguru ~]# service sshd status
openssh-daemon (pid  2346)를 실행하고 있습니다..
[root@sunguru ~]#
[root@sunguru ~]# ps -ef | grep sshd | grep -v grep
root      2346     1  0 02:08 ?        00:00:00 /usr/sbin/sshd
[root@sunguru ~]#
[root@sunguru ~]# chkconfig --list sshd
sshd            0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제
[root@sunguru ~]# 

■ OpenSSH 서버 서비스 시작/종료

아래와 같은 명령을 사용하여 OpenSSH 서버 서비스 데몬(Daemon)인 sshd를 시작 또는 종료할 수 있다.

[root@sunguru ~]# service sshd status
openssh-daemon (pid  2346)를 실행하고 있습니다..
[root@sunguru ~]#
[root@sunguru ~]# service sshd stop
sshd 를 정지 중:                                           [  OK  ]
[root@sunguru ~]#
[root@sunguru ~]# service sshd status
openssh-daemon가 정지되었습니다
[root@sunguru ~]#
[root@sunguru ~]# service sshd start
sshd (을)를 시작 중:                                       [  OK  ]
[root@sunguru ~]#
[root@sunguru ~]# service sshd status
openssh-daemon (pid  4345)를 실행하고 있습니다..
[root@sunguru ~]# 



■ sshd 구성 파일

sshd 데몬의 주요 구성 파일은 /etc/ssh/sshd_config이다. 이 파일에서 주요 설정은 아래와 같다. 주석 기호는 # 이다.

root 계정으로 ssh 접속할 수 있도록 한다.

PermitRootLogin yes

sshd 서비스 포트 번호를 설정한다.

Port 22

sshd 서비스 IP 주소를 설정한다. 서버에 IP 주소가 여러 개일 경우 특정 IP로만 접속하도록 만들 수 있다.

ListenAddress 192.168.80.250

■ 윈도우용 SSH Client 프로그램 Putty

리눅스 / 유닉스 운영체제에 SSH 클라이언트 프로그램이 설치되어 있으며 ssh 명령을 사용하여 외부 SSH 서버에 접속할 수 있다. 만약 윈도우 호스트 운영체제(예를 들어 Windows 7 또는 8)를 사용하고 있는데 리눅스 서버에 접속을 해야 한다면 SSH Client 프로그램을 사용해야 한다.

Free 소프트웨어로 많이 사용하는 SSH Client 프로그램이 Putty이다. 단일 파일 프로그램이며 이 파일은 아래 주소에서 다운로드할 수 있다.

https://the.earth.li/~sgtatham/putty/latest/x86/putty.exe

파일을 다운로드한 후 탐색기(Explorer)에서 파일을 더블 클릭하면 실행된다. Host Name or IP address에 IP 주소를 입력하고 Connection Type를 SSH로 선택한 후 Open 버튼을 선택하면 SSH 원격 접속을 시도한다.

그러면 보안에 관련된 창이 나타나는데 예(Y)를 선택하면 사용자 계정과 암호를 묻는다. 접속이 성공적으로 완료되면 터미널처럼 사용하면 된다.



관리자가 SSH를 사용하는 이유는 시스템 원격 관리를 하기 위해서이다. 원격지 시스템을 마치 로컬 시스템 관리하듯 사용할 수 있기 때문이다.

login as: user1
user1@192.168.80.250's password:
[user1@centos01 ~]$
[user1@centos01 ~]$ id
uid=500(user1) gid=500(user1) groups=500(user1),502(group1) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[user1@centos01 ~]$
[user1@centos01 ~]$ ls
file1  scripts  test1
[user1@centos01 ~]$

■ ssh 명령

sshd는 SSH 서비스를 위해 사용되는 서비스 프로그램이다. /usr/bin/ssh 명령은 SSH 클라이언트 프로그램이다. 리눅스 또는 유닉스 운영체제에 대부분 설치되어 있다. 만약 CentOS 운영체제에서 다른 시스템으로 SSH 원격 접속을 해야 한다면 /usr/bin/ssh 명령을 사용할 수 있다.

1). 명령형식

ssh [옵션] SSH 서버_IP주소

2). 옵션

옵 션
내 용
 -l USERNAME
 SSH 접속을 위해 사용할 사용자 계정 이름을 입력할 때 사용한다.

3). 예제

아래와 같이 ssh 명령 테스트를 하기 위해 localhost 즉 자기 자신에게 ssh 접속을 시도한다.

[root@sunguru ssh]# which ssh
/usr/bin/ssh
[root@sunguru ssh]# rpm -qf /usr/bin/ssh
openssh-clients-5.3p1-104.el6.x86_64
[root@sunguru ssh]#
[root@sunguru ssh]# ssh -l user1 localhost
user1@localhost's password:
Last login: Wed Jul 13 05:00:46 2016 from 192.168.80.1
[user1@centos01 ~]$
[user1@centos01 ~]$ id
uid=500(user1) gid=500(user1) groups=500(user1),502(group1) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[user1@centos01 ~]$
[user1@centos01 ~]$ pwd
/home/user1
[user1@centos01 ~]$
[user1@centos01 ~]$ exit
logout
Connection to localhost closed.
[root@sunguru ssh]# 

여기까지 OpenSSH 서버 간단 설정에 대해 알아보았습니다.

사회생활하면서 웬만하면 암호가 나타나게 하는 옵션은 사용하지 않는 것을 진심으로 권합니다. 사회에서 암호 입력을 엿보는 놈들이 많기 때문입니다. 옆에 앉아 버젓이 여러분의 키보드 입력을 보고 있는 x 놈들도 있습니다. 암호를 입력할 때 여러분의 키보드 자판을 보는 놈들이 있다면 타자치는 것을 멈추고 그놈을 계속 쳐다보길 바랍니다. 그러면 자리를 떠날 것입니다. 뒤에서 보는 놈들도 있으니 암호 입력 시 조심하길 바랍니다. 아는 사람이나 친구가 여러분들이 암호를 입력할 때 옆에서 암호 입력하는 모습(특히 키보드 주시)을 보고 있다면 그 사람과 인간관계 빨리 정리하시길 바랍니다. 언젠가는 여러분들의 뒤통수를 칠 놈들입니다. 진심으로 경험담입니다.

다음 게시물에서는 시스템 로그에 대해 알아보도록 하겠습니다.






No comments:

Post a Comment