Alien은 레드햇 패키지(.rpm) 를 데비안 패키지(.deb) 로 변환해 주는 프로그램이다.


RPM은 RedHat Package Manager 로 

Linux Standaard Base의 표준 패키지 포맷 중 하나로, 레드헷계열에서 사용되는 파일포맷이다.

레드헷계열의 리눅스( Redhat, CentOS, Fedora..)

반면 Debian, Ubuntu 같은 데비안 계열에서는 deb 포맷의 파일을 사용하고,

보통 데비안 계열에서는 apt-get라는 패키지관리도구를 이용하는데, 확장자가 .rpm 인 파일은 apt-get 으로 설치가 되지 않는다.


이때 필요한 프로그램이 Alien 인데,

Alien을 이용하면 rpm파일을 바로 설치하거나 deb파일로 변환하여 해당파일을 설치가 가능하다.

(단, 간혹 설치되지 않는 파일도 있다.)


Alien 설치방법은 간단하다. ( 우분투에서)


[설치방법]

$ sudo apt-get instal alien 


[rpm 파일 바로 설치하기]

$ sudo alien -i rpm-file.rpm

[deb 파일로 변환하여 설치하기]

sudo alien -c 파일명.rpm  ----> 변환

$ sudo dpkg -i 파일명.deb     —->  설치


예제)

$ cd /srv/samba/share

$ sudo alien -c jdk-7u80-linux-x64.rpm     ----> 변환

(시간은 다소 오래걸린다.)

변환이 다되면  

jdk_1.7.080-1_amd64.deb generated 이 출력된다.

$ ls -al 

jdk_1.7.080-1_amd64.deb

$ sudo dpkg -i jdk_1.7.080-1_amd64.deb   ---->  설치

Selecting previously unselected package jdk.

(데이터베이스 읽는중 ...현재 73885개의 파일과 디렉터리가 설치되어 있습니다.)

Preparing to unpack jdk_1.7.080-1_amd64.deb ...

Unpacking jdk (1.7.080-1) ...

jdk (1.7.080-1) 설정하는 중입니다 ...

Unpacking JAR files...

        rt.jar...

        jsse.jar...

        charsets.jar...

        tools.jar...

        localedata.jar...

        jfxrt.jar...

Processing triggers for systemd (229-4ubuntu16) ...

Processing triggers for ureadahead (0.100.0-19) ...



참고 :  http://idchowto.com/?p=30842

참고할만한 곳 : http://kurts.tistory.com/5




■ Unix/Linux 디스크 용량 확인 (df/du)

디스크 용량을 확인하는 명령어들이다. 



df : 디스크의 남은 용량을 확인 

df -k : 킬로바이트 단위로 현재 남은 용량을 확인

df -m : 메가바이트 단위로 남은 용량을 왁인 

df -h : 보기 좋게 보여줌

df . : 현재 디렉토리가 포함된 파티션의 남은 용량을 확인



■ 리눅스 bit수 확인 


# uname -m

x86_64 :64비트


■ 리눅스 버전 확인 


# cat /etc/issue

Ubuntu 16.04.2 LTS


■ smb.conf 파일을 변경 후 반드시 데몬을 재시작 해야 한다.

■ smb.conf other의 경우 readonly 속성으로 되어있다. 따라서 root 계정으로 접근하여 설정 변경해주자.

■ vi /etc/samba/smb.conf

 > vi 에는 세 가지 모드가 있다. 


 1. 입력모드 i, a, o, I, A, O를 누른 후 텍스트를 입력할 수 있는 상태 

 2. 명령모드(ESC모드) ESC키를 누른 상태 

 3. 콜론모드(Ex모드) - ESC키를 누르고, :(콜론)을 입력한 상태 

 > 처음엔 명령모드(ESC모드)이다. > i를 입력하여 입력모드로 진입  > 파일내용 변경 후 

 > 명령모드 진입 > :을 입력하여 콜론모드로 진입 > 파일내용 저장 후 종료 :w


■ vi 모드에서 문자열 패턴 검색 

/[찾고싶은 문자열 패턴]

/chpark

을 입력하면 chpark 과 일치하는 문자열 패턴을 확인할 수 있다. 


■ vi 편집기 사용법 

http://igoto.x-y.net/xe/linux/154


■ 계정 전체목록 보기

# cat /etc/passwd

or 간단

# cut -f1 -d: /etc/passwd 


■ 계정변경

$ sudo su [user]

$ su root 


■ 데몬은 사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램을 말한다. 

시스템 로그를 남기는 syslogd처럼 보통 데몬을 뜻하는 ‘d’를 이름 끝에 달고 있으며, 일반적으로 프로세스로 실행된다.


■ 폴더/파일

mkdir [경로] : 폴더 생성

rmdir [경로] : 폴더 삭제

rm -r(하위모두삭제) 파일명 : 파일 삭제

mv [이동할파일] [이동될위치] : 파일 이동

cp [복사할파일] [복사될 위치] : 파일 복사

type [application명] : 파일이 설치된 위치


mkdir -p /srv/samba/share  : 최상위 디렉터리의 /srv하위의 디렉터리를 트리구조대로 생성할 수 있다. (p:parent의 약자)

rmdir -R /data/samba/share : 최상위 디렉터리의 /data 하위의 디렉터리를 전부 삭제 할 수있다. (recursive의 약자 :재귀)


■ 디렉터리 / 파일 권한 변경

chown [user:Group명] 디렉터리 / 파일 

chmod [owner][other][group]권한 디렉터리 / 파일

ex) 

$sudo cd /srv/samba

$sudo chown root:sambashar share

$sudo chmod 777 share 


■ wget 명령어를 이용한 다운로드 


wget -O [파일명] [다운로드 url]

# wget -O samplevideo https://youtu.be/zYhZ-zyteGs


■ chmod 8진수를 사용하여 권한변경하기

 

0: none                               ---    

1: execute only                     --x

2: write only                        -w-

3: write & execute                -wx

4: read only                         r--

5: read & execute                 r-x

6: read & write                     rw-

7: read & write & execute       rwx



■ 서비스

ps -ef : 프로세스 상태 확인 ( grep과 함께 사용 _ ex. ps -ef | grep tomcat)


■ 압축

tar zxvf [tar명] : 압축해제                                                                                                                   


■ Advanced Packaging Tool (apt)


 □ apt-get update         // 패키지 인덱스 정보 업데이트

 □ apt-cache search jdk   // jdk 문자열 패턴이 있는 패키지 검색

 □ apt-cache show jdk-8   // jdk-8 문자열 패턴이 있는 패키지 정보 확인

 □ apt-get install jdk-7  // jdk-7 패키지 설치

 □ apt-get remove samba   // samba 패키지 삭제

 □ apt-get remove --purge samba // samba 패키지 (완전)삭제

 □ spt-get upgrade htop   // 설치된 htop 패키지 업그레이드 

 □ dpkg -l                // 설치된 패키지 리스트를 보여줌

 □ dpkg -l |grep samba    // samba와 관련된 패키지 리스트를 보여줌 

  



■ 환경변수

 

 a. gedit /etc/environment

 window와 동일한 방식으로 PATH 및 JAVA_HOME 추가

 ex) PATH="~~~:/usr/lib/java/jdk1.7.0_25" JAVA_HOME="/usr/lib/java/jdk1.7.0_25"

 실행 ) source [경로]


 b. export

 모든 변수 출력 : export 

 등록 : export 변수명=데이

 보기 : echo $변수




윈도우를 포함한 많은 OS들은 네트워크에서 그들의 컴퓨터이름을 나타내기 위한 주소 값들을 가지고 있다.

대표적으로 IP를 들 수 있으나 Microsoft OS에서는 NetBIOS를 사용하여 네트워크에서 고유한 이름 값을 가지고 있어서 각자의 컴퓨터를 확인할 수 있다.

'컴퓨터 이름'이 바로 NetBIOS를 사용한 이름값이다

네트워크에서 같은 IP를 가지고 있는 컴퓨터가 있으면 충돌이 발생하여 데이터를 교신할 수 없듯이, 컴퓨터 이름도 Microsoft OS의 네트워크에 같은 값이 존재하면 충돌이 발생한다.

 

\\192.168.71.128\samba


로 접속을 시도했다. 그러나 ...

동일한 사용자가 둘 이상의 사용자 이름으로 서버 또는 공유 리소스에 다중 연결할 수 없습니다. 서버나 공유 리소스에 대한 이전 연결을 모두 끊고 다시 시도 하십시오.

라는 alert 창이 계속 나타났다.




이러한 경우 pc, 노트북을 재부팅하면 문제가 해결된다. (Netbios를 사용한 네트워크에 \\192.168.71.128\IPC\ 등의 연결 내역이 사라지기 때문이다.)

하지만 나의경우 노트북을 절전모드 상태로 두었기 때문에 이러한 문제를 해결하는데 시간소요가 많았다. 

Microsoft OS에서는 NetBIOS를 사용한 네트워크에서 고유한 이름 값이 하나의 네트워크 주소에 할당되는데, 동일한 네트워크 주소로 중복 접속을 허용하지 않는다.


그렇다면 어떻게 해결하였는가.

cmd 창을 open 한다.

net use 라는 명령어를 날리면 아래와 같은 상태를 확인할 수 있다. 


C:\Users\Admin>  net use 



상태         로컬      원격                      네트워크


-------------------------------------------------------------------------------

OK                     \\192.168.71.128\IPC$     Microsoft Windows Network

OK                     \\203.239.163.124\IPC$    Microsoft Windows Network

OK                     \\203.239.163.20\IPC$     Microsoft Windows Network

명령을 잘 실행했습니다.


-- 캡처.01


위에서 볼 수 있듯이 원격접속을 하는데 있어서 이미 \\192.168.71.128 네트워크 주소로 connection이 된상태이다.

이러한 상태에서 아무리 \\192.168.71.128\samba 혹은 다른 하위 디렉터리로 접근하려 시도하여도 계속해서 

동일한 사용자가 둘 이상의 사용자 이름으로 서버 또는 공유 리소스에 다중 연결할 수 없다는 경고창만 마주할 수 밖에 없다.


해결방법은 이러하다. (samba 계정, 비밀번호 일치하더라도 절대 접속안된다.★)

net use /delete \\192.168.71.128 라는 명령어를 날리면 아래와 같은 상태를 확인할 수 있다

C:\Users\Sean>net use /delete \\192.168.71.128

\\192.168.71.128이(가) 제거되었습니다.


--캡처.02



다시 net use 명령어를 사용하여 Microsoft OS의 NetBIOS를 사용한 네트워크에서 고유한 이름 값을 확인해보자.

다음과 같은 상태를 확인 할 수 있다. 


C:\Users\Sean>net use

새 연결 정보가 저장됩니다.


상태         로컬      원격                      네트워크


-------------------------------------------------------------------------------

OK                     \\203.239.163.124\IPC$    Microsoft Windows Network

OK                     \\203.239.163.20\IPC$     Microsoft Windows Network

명령을 잘 실행했습니다.


-- 캡처.03


이렇게 되면 현재 \\192.168.71.128 네트워크 주소로 연결된 내역이 없으므로 

\\192.168.71.128\samba 연결을 시도할 경우 정상적으로 해동 공유폴더에 접근이 가능해진다.

0. samba 설치되어있는지 확인

    $ sudo dpkg -l |grep samba


1. Samba 설치

 
    $ sudo apt-get install samba smbfs 


2.1. 시스템 사용자 등록(useradd) 및 패스워드 등록 (passwd)

 ※  samba 접속용 계정과 비밀번호 설정을 하기 전에 반드시 시스템 사용자를 등록 해줘야하는 절차를 거쳐야한다.

    $ sudo useradd chpark    

    $ sudo passwd chpark     

    Changing password for user chpark 

    New UNIX password:  패스워드입력 

    Retype new UNIX password:  패스워드확인 

    passwd: all authentication tokens updated successfully. 


2.1.1 계정관련 파일 확인

    $ sudo cat /etc/passwd  

2.1.2 계정관련 확인 (해당 id)

    $ sudo id chpark 


2.2. 공유할 디렉토리에 Samba  접속용 계정과 비밀번호 설정

    $ sudo smbpasswd -a chpark 

    New SMB password:  패스워드입력 

    Retype new SMB password:  패스워드확인 


==========================================================

/etc/samba/smb.conf 파일을 설정하기 전에  백업시켜놓자. (설정파일 매우 중요하므로)

# mkdir /chpark/data/bakup

# cp smb.conf  /chpark/data/backup

# cd /chpark/data/backup

# mv smb.conf smb.conf.bak

==========================================================


3. 공유 폴더 생성 및 권한 설정

3.1 (공유할) 디렉터리 생성

    $ sudo mkdir -p /srv/samba/share 

3.2 디렉터리 권한 설정 (change owner)

    $ sudo chown nobody:nogroup /srv/samba/share/ 



4. smb.conf 설정

    $ sudo vi /etc/samba/smb.conf 



#======================= Global Settings =======================

[global]

## Browsing/Identification ###

# Change this to the workgroup/NT-domain name your Samba server will part of

   workgroup = WORKGROUP

# server string is the equivalent of the NT Description field

   server string = %h server (Samba, Ubuntu)

# Windows Internet Name Serving Support Section:

# WINS Support - Tells the NMBD component of Samba to enable its WINS Server

#   wins support = no

# WINS Server - Tells the NMBD components of Samba to be a WINS Client

# Note: Samba can be either a WINS Server, or a WINS Client, but NOT both

;   wins server = w.x.y.z

;   security = user

;   encrypt passwords = yes

;   smb passwd file = /usr/bin/smbpasswd

# This will prevent nmbd to search for NetBIOS names through DNS.

   dns proxy = no

# This will allow access hosts for Using Samba Server

   hosts allow = 192.168.71.    

// 접근하는 호스트의 ip or 호스트의 네트워크대역

// 상황에 따라서 ~! 71번 네트워크 대역에 있는 호스트에 대하여 전부 허용 



#======================= Share Definitions ======================

# Shared Friles scripting_02
 [samba]
  comment = Shared File Server for using Samba Server  // Comment
  path = /srv/samba/share           // Samba로 공유할 디렉토리 경로 (절대경로)
  guest ok = no                         // yes: 모두 접근 가능(samba 계정은 있어야 함)
  create mask = 0777                  // 새로운 파일이 생성되었을 때 가지게 될 파일 권한을 지정                           
  directory mask = 0777              // 디렉터리의 권한을 지정
  browseable = yes                     // 공유이름을 브라우저에 표시할 수 있게 하는 기능                              
;  public = yes                           // guest ok와 같은 옵션으로 no로 설정하면 
// 다른 사용자들은 이용할 수 없고 개인 사용자만 사용할 수 있게 된다
  readonly = no                         // (= writable : yes)
  host allow = 192.168.71.            // 접속을 허용할 IP 네트워크대역
  valid users = chpark                 // guest ok : no를 줄 경우 접근할 수 있는 사용자에 대하여 지정
                                             // 그룹일경우 반드시 @(앳)을 꼭 붙여야한다.

※ valid users가 없고 guest ok = yes  혹은 public = yes 일 경우에 
모든 samba 계정을 가지고 있는 사용자들이 접근 가능하다.
결론적으로 valid users가 key 가 되는 property이다. 

5. smb.conf 설정 후 반드시 데몬을 재시작해야 설정파일이 반영된다.

    $ sudo /etc/init.d/smbd restart 

    or 

    $ sudo /etc/init.d/smbd stop 후에 $ /etc/init.d/smbd start 




■ 참고 :

 https://help.ubuntu.com/lts/serverguide/samba-fileserver.html

 참고해볼만한 주소:

http://se.uzoogom.com/120

http://hamonikr.org/board_bFBk25/16679

http://mslee89.tistory.com/71

http://anti1346.egloos.com/v/4863483

■ ssh key

ssh, rsync, git 과 같은 기술을 사용하면서, 로그인 없이 보다 안전한 방법으로 인증하고자 할 때 ssh 공개키를 이용하면 편의성과 보안성을 모두 증진시킬 수 있다. 


■ ssh key 이해 

 - host_1 의 IP : 192.168.0.4  

 - host_2 의 IP : 192.168.0.76

가 있다고 가정하자.

host_1 에서 host_2 로 접속하고자 할 땐  

$ ssh chpark@192.168.0.76 

$ password  // s12345 입력 시 host_2(리눅스)에 로그인 가능하다. 

이 때 비밀번호를 입력 하지 않으면서도 훨씬 더 안전한 방법으로 로그인 하는 방법을 알아보자. 

먼저 ssh 공개키, 비공개키를 만들어야 한다.  ( 비공개키는 절대 노출되어서는 안된다. ) 

## host_1 192.168.0.4 에 chpark 계정으로 로그인

$ ssh-keygen 

Enter file in which to save the key  (/home/chpark/.ssh/id-rsa)     

// (.ssh) .이 들어간 디렉토리의 경우 숨긴 파일임을 의미한다.


key 가 생성된다. 

ssh key 가 생성된 디렉토리를 찾아가보자. 

$ cd ~/chpark/.ssh

$ ls -l

id_rsa (ssh private key) , id_rsa.pub (ssh public key) 이 생성된 것을 볼 수 있다. 


host_1에 생성된 id_rsa_pub 의 내용을  host_2 의  인증된 키 목록 인 authorized_keys 에 붙여 넣어주면 

host_1에서 따로 로그인 하지 않고 오히려 더 안전하게  host_2에 접근할 수 있다. 


■ ssh-copy-id 

이 유틸리티를 사용하면 authorized_keys 파일 끝에 id_rsa.pub 파일의 내용을 append 하게 한다.

 

■ ssh publick key를 사용하여 로그인 (실습)


## host_1 (192.168.0.4)

$ ssh-keygen

$ cd ~chpark/.ssh

$ ls -l

id_rsa , id_rsa_pub 가 있다.

$ ssh-copy-id srhwang@192.168.0.76

// 처음 192.168.0.76 다른 ip로 접근 시 password 최초 한 번은 입력해줘야 한다.


## host_2 (192.168.0.76)

$ cat authorized_keys 

// host_1 의 public ssh key (id_rsa.pub)의 내용이 authorized_keys  파일에 append 된 것을 볼 수 있다. 


===================================================

이 후부터는 

$ ssh srhwang@192.168.0.76 

을 입력하면 로그인 필요없이 접속하게 된다. 


※ 정기적으로 실행하는 크론(cron)을 사용하여 다른컴퓨터로 로그인 후 동기화하는 작업이 있을 경우 굉장히 유용하게 사용될 수 있다. 


■ 동기화 (인터넷을 통한 서버간 동기화)

(요약) 어떤 특정 컴퓨터에 반영된 내용과 서로 동일한 상태로 유지하게 하기 위한 것


■ rsync

rsync : remote synchronizing 의 약자 

(요약) 서로 독립되어있는 컴퓨터들을 네트워크 혹은 인터넷을 통해서 동기화 할 수 있게 하는 프로그램

(상세) 원격 서버의 파일을 네트워크를 거쳐서 전송하는 실행 소프트웨어이다. 파일 전송 시 수신처의 컴퓨터에 있는 파일을 가는 블록으로 분할해서 블록마다 검사합(checksum)을 송신원의 컴퓨터에 보낸다. 이 때 송신원의 컴퓨터는 그것을 점검해서 파일의 차이만큼 전송하기 때문에 네트워크를 효율적으로 이용을 할 수 있고, 시큐어 셸(SSH)등과 병용할 수 있어서 파일 전송 시 보안도 확보할 수 있다. 동일한 실행 소프트웨어로는 원격 복사 프로토콜 (RCP)이 있는데 보다 강력한 복제 기능을 가지고 있다. 


■ rsync를 사용하여 로컬환경에서 실습 (한 대 컴퓨터에서 테스트)

# mkdir throwD 

# mkdir catchD 

디렉토리 2개를 생성하자.

throwD 디렉토리 밑에 test1 ~test10까지 10개 파일을 생성하자.

# cd throwD

# touch test{1,10}     // 중괄호를 사용하여 한꺼번에 파일 생성이 가능하다. 

# ls -l

throwD 디렉토리에 있는 파일들을 catchD 디렉토리로 rsync를 사용하여 동기화 시켜보자. 

(실질적으로 이 것은 동기화가 아니라 파일 복사 개념이다. 단지 rsync의 개념을 이해하기 위한 도움.)

#  rsync -a throwD/ catchD   

throwD 밑에 있는 모든파일들(디렉토리포함)을 catchD에 동기화 시킴.

※ 주의사항: # rsync -a throwD catchD 로 throwD 뒤에 / 를 입력하지 않으면 throwD 디렉토리 안에 catchD 디렉토리를 만들게 되는 것이므로 주의하자. 


■ rsync의 장점

효율적으로 동작한다. 

이미 존재하는 정보 즉, 일치하는 파일이 아닌 정보가 변경된 파일 및 일치하지 않는 구성(디렉토리, 파일) 에 대해서만 동기화가 진행된다.


■ rsync 옵션

-av : 새롭게 변경된 정보의 동기화된 파일에 대해서만 정보가 출력된다. 

-azP : 데이터를 압축해서 전송, 전송상황을 progress bar로 볼 수 있다.

z : 데이터를 전송 시 압축해서 전송

P : 전송되는 상황을 Progress Bar로 보여준다. 


■ rsync의 장점 실습

$ cd catchD

$ rm test2 test8

$ ls -l 

test1, test3, test4, test5, test6, test7, test9, test10 

$ cd trhowD

$ touch test23, test42

$ rsync -av throwD/ catchD

새롭게 변경된 정보의 동기화된 파일에 대해서만 정보가 출력된다. 

test2, test8, test23, test42 에 대한 정보가 전송

$ ls -l 

test1, test2, test3, test4, test5, test6, test7, test8, test9, test10, test23, test42


■ rsync를 사용하여 네트워크 환경에서 실습 (네트워크가 구성된 환경에서 테스트)

기본적으로 동기화 될 (전송될) 컴퓨터에 전송할 컴퓨터의 ssh 인증서가 설정되어있어야 한다.

$ rsync -azP ~/rsync/throwD/ chpark@192.168.0.65:~/rsync/catchD     

// host1 의 홈디렉토리 밑의 rsync 하위에있는 throwD 디렉토리 밑에 있는 모든 파일 및 구성 요소 (디렉토리, 파일) 들을 

/192.168.0.65 ip의 chpark 계정의  홈디렉토리 밑의 rsync 하위에 있는  catchD 디렉토리로 동기화시키겠다.


■ SSH 

- (요약) ssh 란 secure shell의 약어로 PGP와 마찬가지로 공개 키 방식의 암호 방식을 사용하여 원격지 시스템에 접근하여 암호화된 메시지를 전송할 수 있는 시스템이다. 따라서 LAN 상에서 다른 시스템에 로그인할 때 스니퍼에 의해서 도청당하는 것을 막을 수 있다. 

- (상세) 인터넷상에서 두 호스트(Host) 사이의 통신 암호화 관련 인증 기술들을 사용하여, 안전한 접속과 통신을 제공하는 프로토콜을 의미한다. 이 프로토콜은 보안에 취약점을 가지고 있는 프로토콜, 즉 원격 로그인(rlogin), 원격 명령 실행(rsh), 원격 파일 복사(rcp), 원격 접속 서비스(telnet), 파일 전송용 프로토콜(ftp) 등을 대체하여 사용되며, 임의의 포트에 대해 안전한 제공하고 있다. 

원격 접속에서 가장 중요한 부분이 인증 방법이네, 기본적으로는 사전에 미리 약속된 공개키를 사용하여 전자서명을 통해 인증을 하지만, 공개키를 사용한 전자 서명에 의한 인증이나 다른 인증 방법들이 사용될 수 없는 경우에는 전통적인 인증 방식인 패스워드를 사용하여 인증을 하게 된다.  이러한 경우에도 호스트사이의 모든 통신이 암호화에 의해서자동 보호되기 때문에 어떠한 네트워크 공격으로도 패스워드가 노출되지 않는다. 

 

■ ssh client 

- SSH 와 Telnet 을 사용하기 위한 터미널 소프트웨어이다.

- secureCRT의 경우, 원래 윈도우버전만 있었지만 현재, mac OS 버전과  Linux 버전도 존재한다. 

putty, secureCRT , MobaXterm 등이 있다. 


ssh server 

- ssh client 가 설치된 Host가 존재한다면 그의 counter partner 인 Host에 ssh server가 설치되어있어야만 ssh를 이용한 통신이 가능하다.

- 오늘날은 UNIX system에 기본적으로 ssh server가 설치 되어있다. 

- ssh 의 기본 포트는 22번이다.  (※ 웹 서버의 기본 포트: 80번을 리스닝(listening) 중이다.)

- 따라서 ssh client에서 접속 시 따로 22번 포트를 입력하지않아도 22번 포트가 listening 중이므로 ssh server의 22번 포트로 접속 하게된다.


■ Linux 우분투 버전에서 ssh server 설치

우선 설치된 패키지 목록을 확인해보자.

 $ dpkg -l 

너무 많은 목록이 나오므로 ssh 관련 목록만을 확인해보자.

 $ dpkg -l | grep ssh 

설치되어 있지 않은 것을 확인 하였으므로 설치를 해보자.

 $ sudo apt-get install openssh-server

패키지가 다운로드 되어 자동으로 설치되고 데몬이 동작한다. 

설치과정에 오류가 있다면 여기를 참고하자 >>>>  http://neoguru.tistory.com/58

데몬이 잘 동작하는지 확인하자. 

$ su -root (계정 변경)

# netstat -ntl

=====================================================

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     

ssh 기본포트는 22번

=======================================================

ssh 서버를 재시작 시켜보자.

# /etc/init.d/ssh restart


■ ssh 포트변경

- /etc/ssh 밑의 sshd_config 파일을 열어서 포트를 변경하면 된다. 

# vi /etc/ssh/sshd_config




기승전 >>> 어떤 서버를 설치하더라도configuration 설정 파일이 중요하다.

이 설정 파일의 내용을 customizing 하여 얼마든지 사용가능하기 때문이다. 

 

■ 설정 파일 접근

# cd /etc/apache2

# nano apache2.conf

  Include Optional sites-enabled/*.conf 내용확인

# cd sites-enabled

# nano 000-default.conf

  <000-default.conf 파일내용 시작>

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

  <000-default.conf 파일내용 끝>

   ※ ${APACHE_LOG_DIR} 해당 디렉토리 변수 : /var/log/apache2 로 알고있다고 하자.

# cd /var/log/apache2 

# ls -al

access.log와 error.log가 있다.


■ access.log : 접속현황을볼 수 있다.

■ error.log : Apache 서버에 특정 에러가 발생했을때 보면된다.


■ tail

  사용법: tail [option] [filename]

  내용: 기본출력은 파일의 마지막 10줄을 보여준다.

■ tail option 

f : 파일의 마지막 10라인을 실시간으로 계속해서 출력 (주로 log 파일을 모니터링 할 때 사용된다. ) 

F : 파일 변동 시 실시간으로 보여주되 로그파일처럼 특정 시간이 지난 후 파일이 변하게 되면 새로운 파일을 오픈하여 보여준다. 

n : n만큼의 라인을 출력한다.

n+ 숫자 :  (숫자)라인 이후부터 마지막까지 출력


# tail access.log  : (명령어 입력 당시의) access.log 내용의 마지막 10줄을 보여준다.  

# tail -f  access.log : (명령어 입력 시를 기준으로) access.log 내용의 마지막 10줄을 실시간으로 계속해서 보여준다. 


■ 웹서버는 storage(HDD, SSD)에서 어떻게 파일(ex. index.html)을 읽어올까?

client 프로그램 웹브라우저 ( http://127.0.0.1/index.html ) >>> request >>>  웹 서버에 요청을 보내면  

웹서버(프로그램)는 해당 서버 컴퓨터의 HDD, SSD Storage(저장소) 에서 index.html 을 읽어온다.


1. 이러한 일련의 절차는 어떠한 방식에 의해서 진행될까?

일반적으로 /etc/apache2 가 설치된다. 

해당 디렉토리로 들어가서 apache2.conf 라는 설정파일을 열어보자.

# cd /etc/apache2

# cat apache2.conf  (or nano apache2.conf)

파일 내용은 이러하다.

 Include Optional sites-enabled/*.conf        

// 이 디렉토리(sites-enabled) 안에있는 확장자가 conf인 파일들을 모두 읽는다는 내용이다. 

// 결론적으로 중요한 것은 해당 서버의 설정파일에 이러한 정보들이 세팅되어 있다는 것이다. 


2. 그러면 위의 내용에서 명시되어 있듯 site-enabled 디렉토리에 접근해서,

 실제 어떠한 확장자가 conf인 파일들이 있나 확인해보자.

# cd sites-enabled 

# ls -l

내용을 보면 이러한 것이 있다. 

000-default.conf  /sites/enabled/000-default.conf

000-default.conf 파일이 존재하는 실제 경로가 보인다.


3. 해당 디렉토리로 다시 찾아가자 

# cd /site/enabled

# nano 000-default.conf   // 파일을 열람해보자.

내용에 Document Root : /var/www/html 가 있다.


4. 다시 해당 디렉토리로 가자.

# cd var/www/html 

# ls -al

index.html...등 html 파일들이있을 것이다. 


5. 이렇게 설정파일에 설정된 내용을 따라서 특정디렉토리를 찾아가 해당 파일을 읽어온다.      

마지막으로 index.html을 index.html.bak 파일로 변경하고 다시 로컬서버로 접속해보자.

# elinks http://127.0.0.1/index.html

not found가 뜰것이다. 


결론적으로 설정파일에 설정된 내용을 따라서 특정디렉토리를 찾아가 해당 파일을 읽어온다. 

선행학습: (1) DNS server와 웹서버 등 이해하기  http://sourceflower.tistory.com/78


웹서버

  - 웹 브라우저가 firefox, ie, safari, chrome, opera 등이 존재하는 것처럼 마찬가지로 서버 컴퓨터에 웹서버를 설치해서 사용하면된다. 

  - 이러한 서버로는 apache, nginx, IIS 등이 존재한다.


■ apache 웹서버 설치 (우분투)

 # apt-get update;

 # apt-get install apache2


웹서버 동작 (우분투)

 # service apache2 start       // 웹서버 시작

 # service apache2 stop       // 웹서버 죽일때

 # service apache2 restart    // 웹서버 재시작


여러개의 아파치 웹서버 실행 (분산)

 웹서버의 경우 동시 접속 등이 많은 특정한 프로그램이다. 따라서 많은 접속이 들어왔을 때 그 접속을 분산해서 처리하기 위하여 

 여러개의 아파치 웹서버가 실행된다. 

 htop, top 등 사용하여 process를 확인하면 여러개의 apache2 서버가 올라와있는 것을 볼 수 있다.


컴퓨터 한대에서 클라이언트, 서버 수행 시 동일한 컴퓨터에있는 웹서버 테스트 

# apt-get install elinks       

// ELinks (이링크스)는 유닉스 기반 운영 체제를 위한 텍스트 기반 콘솔 웹 브라우저로. 링크 웹 브라우저를 향상 시키기 위해 만든 브라우저이다. 

# elinks http://127.0.0.1   

# elinks http://localhost 

로 접속하여 서버가 정상적으로 설치되었는지, 작동되는지를 테스트 할 수 있다.



+ Recent posts