본문 바로가기

IT

외부로부터 Ubuntu에 ssh 접속


1. 접속하기
우선 우분투 10.04 LTS를 VMWare에 설치하였다.
그 후 가상머신의 Guest OS에서의 IP Address를 ifconfig 명령을 통해서 알아낸 다음, 포트포워딩을 이용하여 외부에서 Host를 거쳐 우분투로 접속할 수 있도록 만들었다.
최근에 배포되는 VMWare Player에는 NAT환경설정을 할 수 있는 vmnetcfg.exe 파일이 기본적으로 설치되지 않아서 약간의 작업을 필요로 한다. 뭐 어쨌든 
 
 








이 과정을 거치면 외부아이피(192.168.X.X의 형태는 내부아이피):포트(여기서는 3485)를 통하여 우분투로의 접속이 가능하다.








 2. 접속과정?
*DNS
  DNS란 도메인 네임을 IP 주소로 바꾸어 주는 역할을 하는 시스템이다. DNS 서버에서는 각 도메인 이름과 그에 대응하는 IP 주소를 기억하고 있다가, 사용자가 도메인 이름을 입력하면 IP 주소를 제공한다. 예를 들면, 사용자가 daum.net을 주소창에 입력하면, DNS 서버에서는 이에 대응하는 IP 주소인 114.108.157.50을 알려준다.

*IP
  IP(Internet Protocol)은 인터넷상에서 컴퓨터간 데이터 전송에 사용되는 프로토콜이다. 각각의 컴퓨터는 다른 컴퓨터와 자신을 구별하기 위하여 고유한 주소값을 갖는데, 이를 IP 주소라고 한다. (IP 주소에 대해서는 별도의 항목을 두고 살펴보도록 한다.)
  사용자가 데이터를 송수신할 때, 이 데이터는 패킷이라는 단위로 쪼개져서 전송된다. 각각의 패킷에는 송신자와 수신자의 IP 주소가 들어있다. 이 패킷은 게이트웨이 컴퓨터로 전송되는데, 여러 게이트웨이를 통해서 패킷이 전달되다가 해당 도메인의 게이트웨이가 패킷을 수신하면 마지막으로 패킷이 해당하는 주소의 컴퓨터로 직접 전달된다.
  다수의 패킷이 전달되는 과정에서 패킷의 순서를 맞추어 전달되는 것이 아니기 때문에, 이를 순차적으로 배열하기 위한 재정렬 프로토콜이 필요한데, 이는 TCP라고 한다.

*IP 주소
  일반적으로 IP 주소를 줄여서 IP라고 부르는 경우도 많다. 하지만 이는 엄밀하게는 틀린 표현으로, 'IP 주소'가 옳은 표현이다. IP 주소는 네트워크에서 장치들이 상호 인식하고 통신하기 위하여 사용하는 숫자(혹은 문자) 조합이다. 이 장치에는 컴퓨터 뿐만 아니라, 라우터나 서버 등도 모두 포함된다. IP 주소의 형태에는 IPv4와 IPv6 형태 두 가지가 있는데, 현재 많이 사용되는 IPv4는 0.0.0.0부터 255.255.255.255까지 존재하며, 이 중 일부 IP 주소는 특별한 용도에 할당되어 있다. 작년 말(올해 초? 더 찾아봐야할 듯, 기억에 의존한지라;;)에 마지막 남은 IPv4 형태의 IP 주소가 할당됨에 따라서 앞으로는 IPv6 형태의 주소가 주로 활용될 전망이다. IPv6 형태의 주소는 기존의 32비트(IPv4) 주소의 수가 부족함에 따라 주소 길이를 128비트로 늘려서 주소의 수를 대폭 늘렸다. 10진수 4개를 점으로 구분하여 적는 IPv4의 형태와 달리 IPv6는 16진수 8개를 콜론(:)으로 구분하여 적는다.

*포트(port), 포트번호(port number)
  포트란, 논리적인 접속장소를 뜻한다. 사실 포트라고 하면 포트번호(port number)를 지칭하는 경우가 대부분이다. 포트번호란, 네트워크에서 메시지가 서버에 도착했을 때 어떤 프로세스에 전달되어야할지 인식하기 위하여 필요한 것이다. SSH로 서버에 연결하는 상황을 예로 들면, 서버의 SSH 프로세스에 요청을 전달하기 위해 클라이언트에서 22번 포트를 확인하고, 마찬가지로 서버에서 22번 포트번호를 읽어서 SSH 프로세스를 실행한다.


3. Linux의 Permission
  리눅스는 멀티유저에 최적화하여 만든 운영체제이기 때문에, 시스템을 정상적으로 유지하기 위하여 사용자의 권한을 설정하는 일이 무엇보다도 중요하다. 리눅스에서 사용자는 기본적으로 자신에게 할당된 영역 안에서만 작업을 하게 된다.
*파일의 권한
  이렇게 많은 사용자가 한 서버에서 작업을 하다보면 건드리지 말아야 할 영역에도 영향을 줄 수 있기 때문에, 각 파일에 사용 권한을 부여하게 된다. 이 권한은 크게 쓰기, 읽기, 실행 세 가지로 나누어진다.

[보기]

-rw-r--r-- 1 julian cseusers  347 2011-12-23 14:37 \

-rwxr-xr-x 1 julian cseusers 5195 2011-12-19 20:42 bfs

-rw-r--r-- 1 julian cseusers  536 2011-12-19 20:46 bfs.c

-rw-r--r-- 1 julian cseusers   66 2011-12-23 16:03 binary.c

-rwxr-xr-x 1 julian cseusers 4900 2011-12-23 16:23 combination

-rw-r--r-- 1 julian cseusers  384 2011-12-23 16:26 combination.c

-rw-r--r-- 1 julian cseusers  384 2011-12-23 16:24 combination.c~

-rw-r--r-- 1 julian cseusers   66 2011-12-23 16:03 floyd.c

-rwxr-xr-x 1 julian cseusers 6779 2011-12-23 16:35 helloworld

-rw-r--r-- 1 julian cseusers  285 2011-12-23 16:36 helloworld.cpp

-rw-r--r-- 1 julian cseusers  320 2011-12-23 16:35 helloworld.cpp~

-rw-r--r-- 1 julian cseusers  319 2011-12-23 16:29 helloworld.c~

-rwxr-xr-x 1 julian cseusers 5636 2011-12-23 01:39 hw

-rw-r--r-- 1 julian cseusers  460 2011-12-23 01:39 hw.c

-rw-r--r-- 1 julian cseusers  377 2011-12-23 00:33 hw.c~

-rw-r--r-- 1 julian cseusers  288 2011-12-19 20:37 input.txt

(필자가 작업하는 서버의 작업폴더의 내용을 ls -l 명령어로 출력한 결과이다.) 


  이 중에서 앞 부분에 w r x 세 가지 문자를 이용하여 10자리로 표현되어 있는 부분이 파일의 권한을 나타내는 부분이다. 우선 r, w, x가 각각 무엇을 의미하는지 살펴보면 다음과 같다.

r : read, 4
w : write, 2
x : execute, 1


  이제는 사용자 권한을 어떻게 표현하는지 알아보도록 하자.
i) 10자리 문자열로 나타내기
  10자리를 다음과 같이 크게 네 부분으로 나눌 수 있다.

d / rwx / -wx / -w-

첫번째 부분은 디렉토리인지의 여부를 알려주는 부분이다. 첫번째 자리가 d이면 디렉토리이고, -이면 일반 파일이다.
두번째 부분은 소유자(Owner)의 권한을 나타내주는 부분이다. rwx라고 써 있으면 소유자는 읽고, 쓰고, 실행할 수 있는 권한을 모두 가지고 있음을 뜻한다.
세번째 부분은 그룹(Group)의 권한을 나타내는 부분이다. 여기서는 -wx로 표현되어 있는데, 이 때는 쓰기와 실행 권한만을 갖는다.
네번째 부분은 전체(World)의 권한을 나타내는 부분이다. 예시에서는 -w-인 것으로 보아 쓰기만 가능하다. 

ii) 3자리 숫자배열로 나타내기
  위에서 read, write, execute를 설명할 때 무턱대고 r은 4, w는 2, x는 1이라고 적어둔 부분이 있다. 그 숫자가 바로 권한을 숫자로 나타낼 때 이용되는 것들이다.
10자리 문자열로 권한을 나타내는 경우에서 디렉토리 구분 역할을 하는 맨 앞 부분만 제외하면 Owner권한/Group권한/World권한, 이렇게 세 부분이 남는다. 여기서 한 권한당 숫자 하나를 할당하여 세 개의 숫자로 권한을 표현할 수 있다.
rwx의 경우는 r+w+x = 4+2+1 = 7,
-wx의 경우는 w+x = 2+1 = 3,
-w-의 경우는 w = 2,
따라서 drwx-wx-w-는 간단하게 숫자 732로 바꾸어 표현할 수 있다.

*파일의 권한 바꾸기
파일의 권한을 바꿀 때에는 chmod 명령을 이용한다.

[형식] 
chmod [옵션] (u|g|o|a)(+|-)(r|w|x) files directory...  

[보기] 
(1) chmod 755 guide 
(2) chmod 744 *.* 
(3) chmod a+r /guide 
(4) chmod o+r kim.txt 
(5) chmod a-rwx book.html   


chmod 뒤에 숫자를 넣어도 되고, 직접 u/g/o/a(각각 user, group, other, all을 의미함) 뒤에 +/-(권한 주기/빼기) r/w/x 형태로 적어줘도 권한 변경이 가능하다.

*User와 Group?
User는 말 그대로 유저이다. 관리자가 계정을 만들어준다고 하면 유저가 생성되었음을 의미한다. 그리고 그 user는 어떤 group에 속할 수 있는데, 일반 계정의 경우 최대 2개의 그룹까지 속할 수 있고, root는 소속 그룹 갯수에 제한이 없다. 비슷한 성격을 띠는 사용자들끼리 묶어서 같은 그룹에 포함시키면 유저를 관리하기에 편리하다.
유저를 생성할 때는 useradd, 혹은 adduser 명령을 이용한다. 
useradd [id] 를 입력하고 return을 누르면 비밀번호를 설정할 수 있다. 비밀번호까지 설정해주면 계정 생성이 완료된다. 마찬가지로 group도 groupadd [id] 를 입력하면 그룹이 생성된다.
유저나 그룹을 삭제하기 위해서는 각각 userdel/groupdel 명령을 사용하고, 만들어진 유저나 그룹의 속성을 수정할 때에는 usermod/groupmod 명령을 이용한다.

 

'IT' 카테고리의 다른 글

웹 표준을 준수한다는 것은?  (2) 2011.11.19
[안드로이드] SetCPU, scaling 설정값의 의미는?  (3) 2011.01.11
네이버 PDA 서비스 종료!  (10) 2009.06.09