레이블이 ssh인 게시물을 표시합니다. 모든 게시물 표시
레이블이 ssh인 게시물을 표시합니다. 모든 게시물 표시

2012-09-14

FreeBSD] 암호없이 ssh/scp사용방법

이 글은 암호없이 scp를 사용하는 방법을 설명한다.


리눅스 시스템 관리자는 자주 컴퓨터간에 파일을 복사하거나 파일을 여러 컴퓨터로 전송한다.
ftp를 사용해도 되지만, scp를 사용하면 많은 이점이 있다.
ftp는 LAN/WAN에 내용(심지어 암호도)을 그대로 전송하지만, scp는 암호화하여 전송하기때문에 ftp보다 안전하다.


scp 의 장점은 쉽게 스크립트에서 사용할 수 있는 점이다. 파일을 리눅스 컴퓨터 100대로 복사한다고 가정한다. 직접 100번 복사 명령어를 실행하는 것보다 스크립트를 작성하고 싶을 것이다.
스크립트에서 ftp를 사용하면 로그인할때마다 암호를 물어보기때문에 힘들다.
(역주; netrc 파일을 사용하여 암호를 자동으로 입력하게 만들 수 있지만 보안상 위험하다).

대 신 scp를 사용하는 경우 원격 리눅스 컴퓨터가 암호를 물어보지 않도록 설정할 수 있다. 믿거나 말거나 이 방법은 ftp보다 훨씬 더 안전하다!


scp의 기본 문법은 다음과 같다.
현재 컴퓨터에 있는 'abc.tgz' 파일을 'bozo'라는 원격컴퓨터의 /tmp 디렉토리로 복사하려면:


scp abc.tgz root@bozo:/tmp


그러나 이 경우 bozo의 root 암호를 물어본다.
암호를 물어본다면 스크립트에서 쉽게 사용할 수 없다.
해결책은 다음과 같다 (한번만 해주면 "암호없이" 무제한 scp로 복사할 수 있다):


1. 나중에 scp를 사용하여 파일을 복사할 사용자를 결정한다.
물론 root가 가장 강력하고, 난 개인적으로 root를 사용한다.
여기서 root를 사용할때 발생할 수 있는 보안상 문제점을 강의할 생각은 없다.
내가 지금 무슨 말을 하는지 모르겠다면 root가 아닌 일반 사용자를 사용하라.
결정했다면 이제 그 사용자로 로그인하여 다음 단계를 진행한다.


2. 컴퓨터에 공개키(public key)와 비밀키(private key)를 만든다.
이 게 뭔가? 공개키 암호화 방식을 모른다면 15초간 설명하겠다.
공개키 암호화 방식은 수학적으로 연관된 공개키와 비밀키를 만든다.
그런 다음 공개키는 누구에게라도 줄 수 있지만, 비밀키는 아무에게도 알려주면 안된다.
키들의 수학적 구성상 신기하게도 누구나 공개키를 가지고 내용을 암호화할 수 있지만,
비밀키를 가진 당신만이 암호화한 결과를 해독할 수 있다. 어쨋든 두 키를 만드는 명령은:


ssh-keygen -t rsa


3. 다음과 같이 출력한다:
"Generating public/private rsa key pair"
"Enter file in which to save the key ... "
그냥 enter를 누른다.


4. 그러면 다음과 같이 출력한다:
"Enter passphrase (empty for no passphrase):"
passphrase 를 사용하지 않기때문에 enter를 두번 누른다.


5. 그러면 마지막으로:
"Your identification has been saved in ... "
"Your public key has been saved in ... "
방금 만든 공개키 파일명과 위치를 기억하라 (항상 파일명이 .pub로 끝난다).


6. 공개키를 파일을 복사할 모든 원격 리눅스 컴퓨터에 복사한다.
scp나 ftp를 사용하여 복사한다. root를 선택했다면 (다시 단계 1의 경고를 주의하라),
키는 /root/.ssh/authorized_keys (철자 조심!)에 있어야 한다. root가 아니고 예를 들어 clyde로 로그인한다면,
/home/clyde/.ssh/authorized_keys 에 있어야 한다. authorized_keys 파일이 다른 컴퓨터의 키를 저장하고 있을 수 있기때문에, 파일에 이미 내용이 있다면 (새파일을 덮어쓰지않고) 공개키 파일 내용을 뒤에 추가해야 한다.


이제 끝이다. 별다른 문제가 없다면 파일을 암호없이 원격컴퓨터로 scp할 수 있다. 다시 한번 테스트해보자.
컴퓨터에 있는 'xyz.tgz' 파일을 'bozo'라는 원격컴퓨터의 /tmp 디렉토리로 복사한다


scp xyz.tgz root@bozo:/tmp


와 !!! 암호를 물어보지 않고 복사가 된다!!


일단 암호 하나로 컴퓨터에 로그인하면 모든 원격컴퓨터에 접근할 수 있기때문에 보안에 대해서 주의하라.
그래서 암호를 더 잘 보호해야 한다.


이제 즐길 차례다.
컴퓨터에 있는 'houdini'란 파일을 10개 도시에 흩어져있는 원격컴퓨터의 /tmp 디렉토리로 복사하는 짧은 스크립트를 (5분 안에)
작성해보자. 물론 원격컴퓨터가 100대거나 1000대라도 마찬가지다.
원격컴퓨터들의 이름은: brooklyn, oshkosh, paris, bejing, winslow, rio, gnome, miami, minsk, tokyo.
스크립트는 다음과 같다:


#!/bin/sh
for CITY in brooklyn oshkosh paris bejing winslow rio gnome miami minsk tokyo
do
scp houdini root@$CITY:/tmp
echo $CITY " is copied"
done

신기한 마술같다.
스크립트에서 echo 줄은 현재 진행상황을 알려준다.


혹 시 쉘스크립트가 생소하다면 좋은 투토리얼이 있다:
http://www.freeos.com/guides/lsst/.


알 다시피 scp는 더 강력한 ssh의 일부이다.
위의 6 단계를 마쳤다면 원격컴퓨터에서 명령어를 실행할 수 있다
(물 론 암호없이!). 예를 들어, brooklyn 이라는 원격컴퓨터의 시간을 보려면:


ssh brooklyn "date"


이제 두 개념을 합쳐서 진짜로 멋진 스크립트를 만들어보자. 모든 원격 리눅스 컴퓨터를 백업하기란 쉬운 일이 아니다. 아래 스크립트는 각 컴퓨터의 /home 디렉토리를 백업한다. 상용 백업 소프트웨어와 비교하면 기능은 매우 기본적이지만, 가격면에서는 따라올 수 없다. 대부분의 상용 백업 소프트웨어는 백업할 컴퓨터 대수대로 가격을 매긴다. 이런 패키지를 사용한다면 원격컴퓨터 100대에 대한 비용을 지불하는 대신 원격컴퓨터를 한 컴퓨터로 백업하는 스크립트를 사용한라. 그리고 그 컴퓨터에서만 상용 패키지를 사용하면 99대분 가격을 절약할 수 있다 ! 어쨌던 스크립트를 참고하여 자신의 상황에 알맞는 스크립트를 작성할 수 있다. 이 스크립트를 cron 작업에 걸어둔다 (원격컴퓨터에는 필요없다). 주석을 보면 자세한 내용을 알 수 있다:

#!/bin/sh

# 변 수는 구별하기위해 대문자로 지었다

# 스크립트를 실행하기 전에 원격컴퓨터마다 '/tmp/backups'라는 디렉토리 를
# 만들고, 컴퓨터에는 '/usr/backups'라는 디렉토리를 만들어야 한다


# 컴퓨터에서,
# date 명 령어 결과를 보기 좋게 만들어서 "DATE" 변수를 설정한다
#
DATE=$(date +%b%d)

# 'for 반 복문'은 세가지 작업을 한다

for CITY in brooklyn oshkosh paris bejing winslow rio gnome miami minsk tokyo
do

# 1) 원격컴퓨터의 하드디스크가 꽉차지 않도록 저번에 실행한 스크립트가 만든 tarball을 삭제하 고 
# 확인을 위해 echo한다
#
ssh -1 $CITY "rm -f /tmp/backups/*.tgz"
echo $CITY " old tarball removed"

# 2) 원격컴퓨터마다 /home 디렉토리 를 tarball로 만들어서 /tmp/backups에 저장한다
# tarball 파일명은 구별하기위해 도시명과 시간으로 짓 는다
#
ssh $CITY "tar -zcvpf /tmp/backups/$CITY.$DATE.tgz /home/"
echo $CITY " is tarred"

# 3) 원격컴퓨터에 있는 tarball을 /usr/backups 디렉토리로 복사해온다
#
scp root@$CITY:/tmp/backups/$CITY.$DATE.tgz /usr/backups
echo $CITY " is copied"

done


# 나머지 부분은 오류검사용으 로 없어도 된다:

# 파일명에 날짜를 포함한 오류파일을 만든다. 
# 백업이 안된 컴퓨터가 있다면 이 파일 에 기록한다
#
touch /u01/backup/scp_error_$DATE

for CITY in brooklyn oshkosh paris bejing winslow rio gnome miami minsk tokyo

do

# tarball이 복사되었는지 검사한다. 없다면 오류파일에 기록한다
# '||'은 앞 에 있는 부분이 참이 아닐때만 뒤에 있는 부분을 실행한다는 뜻이다
#
ls /u01/backup/$CITY.$DATE.tgz || echo " $CITY did not copy" >> scp_error_$DATE


# tarball을 정상적으로 열 수 있는지 검사한다. 문제가 있다면 오류파일에 기록한다.
tar ztvf /u01/backup/$CITY.$DATE.tgz || echo "tarball of $CITY is No Good" >> scp_error_$DATE

done



출처 : linux gazette

2012-09-12

FreeBSD]ssh howto(리눅스에도 적용)


SSH Howto
임은재
         eunjea@kldp.org
이 문서는 ssh 서버, 클라이언트의 설정, 사용법에 관한 문서이다.

차례
1. SSH 가 무엇이며, 어디서 구할수 있나?
왜 SSH를 사용해야만 할까?
어디서 구하나?
2. 클라이언트 사용법
기본적인 사용 방법
인증키 사용하기
ssh를 이용한 파일 복사
ssh 터널링
설정 파일
3. 서버 운영
설치
서버 설정
4. 저작권, 관련/참고 문서
저작권
관련/참고 문서
장 1. SSH가 무엇이며, 어디서 구할수 있나?
SSH (Secure SHell)은 말 그대로 보안 로그인 쉘이다.
전통적인 ftp, pop, telnet 같은 서비스들은 잘 알려진 대로 매우 보안에 취약하다. 이런 암호화 되지 않은 인증 방법은 당신의 암호가 그대로 노출될수도 있다.
ssh를 통한 모든 데이타는 암호화되며, 트래픽은 압축되어 더 빠른 전송 효율을 얻을수 있다. 또한 기존의 ftp,pop 같은 안전하지 못한 서비스들을 위한 "터널"까지 지원한다.
sshd 서버를 운영하지 않는 서버 관리자는 보안에 전혀 관심이 없는 사람이다.
왜 SSH를 사용해야만 할까?
다음글은 http://www.openssh.com/의 OpenSSH FAQ중에서 인용하였다.
강력한 보안
프라이버시 보호. 모든 통신은 자동으로 그리고 투명하게 암호화된다.
안전한 X11 세션. 원격 서버에 DISPLAY 변수를 자동으로 설정하고 모든 X11 연결을 보안채널을 통해서 포워딩한다.
TCP/IP 포트를 양 방향에서 다른 포트로 자유롭게 포워딩할수 있다.
rlogin, rsh, rcp등을 완전히 대체한다.
선택적으로 데이터를 압축하여 느린 네트워크 상에서의 속도 향상
서버는 자신의 RSA 키를 가지며 일정 시간마다 자동으로 재 생성한다.
어디서 구하나?
리눅스에서 사용할수 있는 ssh 는 두가지가 존재한다. ssh의 원 제작처인 http://www.ssh.com/ (핀란드 회사) 와 BSD licence(사실 100% BSD licence는 아니다.)의 http://www.openssh.com/가 그것이다.
나는 openSSH를 사용하며 이 문서도 openSSH를 기준으로 설명할 것이다. openSSH는 하나의 클라이언트/서버에서 ssh1,ssh2 프로토콜을 모두 지원한다.
ssh는 이미 당신의 배포본에 이미 포함되어 있을지도 모른다. 직접 컴파일 하여 사용하고 싶다면 http://www.openssh.com/portable.html에 서 소스를 받아 설치한다.
그외 ssh를 사용하기 위해 꼭 필요한 openssl 라이브러리는 www.openssl.org에서 구할수 있다.
ftp://ftp.koru.org/pub/rpm 에는 필자가 최신 버젼의 openSSH 와 openssl을 rpm 빌드해놓은 것과 소스 rpm을 찾을수 있다.
openssh는 OpenBSD, NetBSD, FreeBSD, AIX, HP-UX, IRIX, Linux, NeXT, SCO, SNI/Reliant Unix, Solaris, Digital Unix/Tru64/OSF, MacOS X 등의 다양한 OS를 지원한다.
장 2. 클라이언트 사용법
이 장에서는 ssh 서버에 접속하는 ssh 클라이언트의 사용방법에 대해 알아본다.
기본적인 사용 방법
openSSH 클라이언트는 ssh1,ssh2 프로토콜을 모두 지원하므로, 서버가 지원하는 ssh 프로토콜에 상관없이 접속할수 있다. 예를 들어, 접속할 ssh서버가 gate.eunjea.org 이고 계정명이 silver 라면
          [foo@home silver]$ ssh -l silver gate.eunjea.org
       
또는
          [foo@home silver]$ ssh silver@gate.eunjea.org
       
이제 다음과 같은 메세지와 함께 접속이 진행될 것이다.
          The authenticity of host 'gate.eunjea.org (192.168.1.1)' can't be established.

          RSA1 key fingerprint is e3:56:xx:b4:19:7e:xx:b1:7e:cd:xx:fe:5e:5b:17:66.

          Are you sure you want to continue connecting (yes/no)?
       
위 메세지는 ssh로 해당 서버에 처음 접속할때만 나오는 메세지이며, 접속할 서버의 호스트 키가 ~/.ssh/known_hosts (ssh2의 경우 known_hosts2) 파일에 저장된다. yes로 대답해주면, 다음과 같이 계정 암호를 물어오고, 이제 텔넷과 동일한 작업을 할수 있다.
          Warning: Permanently added 'gate.eunjea.org,192.168.1.1' (RSA1) to the list of known hosts.

          silver@gate.eunjea.org's password:
       
인증키 사용하기
인증키를 사용하는 것은 로그인 할때마다 암호를 직접 입력하는 것보다 더욱 안전하며, 하나의 암호로 여러 ssh서버에 접속할수 있는등의 장점을 가진다.
인증키 만들기
인증키는 ssh-keygen로 만든다. 키를 만들때는 사용할 키의 형태를 지정해 주어야 하는데 원격 서버가 ssh 프로토콜 버전 2를 지원한다면 ``rsa'' 또는 ``dsa'', 프로토콜 1만을 지원한다면 ``rsa1''을 사용한다.
예를 들어 원격 서버가 ssh2를 지원하고, ``rsa'' 키를 만들고자 한다면,
          [ home@foo ]$ ssh-keygen -t rsa

          Generating public/private rsa key pair.

          Enter file in which to save the key (/home/foo/.ssh/id_rsa):
       
키가 저장될 곳과 이름을 물어 오는데 디폴트로 그냥 엔터를 치고 넘어가면, 다음과 같이 인증키 암호를 물어온다. 원하는 암호를 두번 반복해서 입력해주면 키가 생성된다.
          Enter passphrase (empty for no passphrase):

          Enter same passphrase again:

          Your identification has been saved in /home/foo/.ssh/id_rsa.

          Your public key has been saved in /home/foo/.ssh/id_rsa.pub.

          The key fingerprint is:

          64:09:73:19:9e:ac:a0:f7:aa:c3:08:f9:0e:5a:fe:61 foo@home.eunjea.org
       
인증키 생성시 인증키 암호를 공백으로 (passphrase 를 물어올때 그냥 엔터를 치면 된다) 만들수도 있는데, 이것은 ssh 접속시 암호를 입력하지 않아도 그냥 접속이 되므로 편리할수는 있으나, 만약 당신의 인증키가 어떠한 경로로든 유출되었을 경우를 생각 해보면 피해야 할 것이다. 그리고 ssh-add와 ssh-agent를 사용하여 접속시마다 인증키 암호를 입력하지 않는 방법이 있다.
공개 키 사용하기
이제 ~/.ssh/ 안에 한쌍의 키(id_rsa 와 id_rsa.pub)가 생성되어 있을것이다. .pub 확장자가 붙은 것은 공개키로 이 파일을 접속할 리모트 서버들의 ~/.ssh/ 에 authorized_keys 라는 이름으로 복사해준다.
          [foo@home silver]$ scp ~/.ssh/id_rsa.pub silver@gate.eunjea.org:.ssh/authorized_keys
       
이제 ssh 접속을 진행 해보면 계정암호가 아닌 인증키 암호를 물어볼 것이다. 만약 계정 암호를 물어본다면 원격 서버상의 ~/.ssh 디렉토리나 공개키 권한의 문제이므로, 일단 접속후 chmod 755 ~/.ssh 그리고 chmod 644 .ssh/authorized_keys 해준다.
rsa1 방식의 ssh1 프로토콜의 사용할 것이라면 ssh-keygen -t rsa1 으로 키를 만들고, 공개키 (identity.pub)를 같은 방법으로 원격 서버의 ~/.ssh/authorized_keys 에 추가해 주면 된다.
키 파일을 다른 이름으로 저장했거나 서버마다 다른 키를 사용하려면 ssh에 -i 옵션을 사용해 키 파일을 직접 지정해 주면 된다.
인증키를 메모리에 상주 시키기
다음 방법으로 인증키를 메모리에 기억시켜 두면 처음 한번만 인증키 암호를 입력하면 다음부터는 암호를 입력하지 않아도 같은 인증키를 사용하는 모든 서버들에 접속할수 있다.
          [foo@home silver]$ eval $(ssh-agent) [Enter]

          다음과 같은 메세지를 보여줄 것이다.

          Agent pid 31234

          이제 ssh-add 를 입력하면

          Identity added: /home/silver/.ssh/identity (silver@home.eunjea.org)
       
이제 인증키를 복사해둔 ssh서버에 접속하면 이 세션에서는 더 이상 암호를 묻지 않을 것이다.
서버가 지원한다면 되도록 SSH2 프로토콜을 사용하도록 한다. SSH2는 SSH1과는 전혀 다른 프로토콜이며 더욱 안전하고, 성능이 좋다.
ssh를 이용한 파일 복사
scp
위에서 인증키를 리모트 서버에 복사할때 사용한 scp에 대해서 알아보자
예를 들어, 복사하려는 파일명이 'dumb' 라고 하고 접속하려는 원격 서버의 주소는 www.foobar.com, 당신의 쉘 계정은 babo 라고 한다면
dumb 파일을 www.foobar.com 의 babo 계정 홈 디렉토리에 복사하기
          [foo@home silver]$ scp dumb babo@www.foobar.com:.
       
www.foobar.com 의 babo 계정 홈 디렉토리에 있는 dumb 파일을 로컬로 복사하기
          [foo@home silver]$ scp babo@www.foobar.com:dumb .
       
만약 ~/.ssh/config 파일에 다음과 같이 www.foobar.com 의 계정을 설정해 놓았다면,
          Host *fbc

          HostName www.foobar.com

          User babo

          ForwardAgent yes
       
다음과 같이 더 간단하게 할수 있다.
          [foo@home silver]$ scp dumb fbc:.
       
또한 scp 는 -r 옵션도 가지고 있는데 이것은 디렉토리를 통채로 복사 할때 사용한다. 예를 들어 test/ 디렉토리안의 모든 파일과 하위 디렉토리를 서버 계정의 www 디렉토리 안에 복사 하려면 다음과 같이 한다.
          [foo@home silver]$ scp -r test/ babo@www.foobar.com::www/
       
sftp
sftp는 ssh하에서 전통적인 ftp 환경을 제공하며, 리모트상의 프로그램을 실행시킬수도 있다.
openSSH 클라이언트 패키지에는 sftp가 포함되어 있다.
ssh 터널링
ssh 터널링이란 ssh 접속을 다른 프로그램이 사용할수 있도록 port forwarding해주는 것을 말한다. 이 ssh 터널링을 이용해 암호화 접속을 사용하지 않는 네트워크 접속을 보다 안전하게 사용할수 있다.
POP
fetchmail을 사용하면 간단하게 ssh 터널안에서의 pop 메일 긁어오기를 구현할수 있다.
.fetchmailrc 설정예
          poll localhost with protocol pop3 and port 11110:

               preconnect "ssh -C -f 계정@메일서버.com -L 11110:메일서버.com:110 sleep 5"

               password xxxxx
       
자세한 문서는 : SSH 를 이용한 보안 POP
원격 계정의 이메일을 아예 복사해오는 방법도 생각해 볼수 있다. (Compressed TCP/IP-Sessions using SSH-like tools 참조)
IMAP
ssh 터널링과 fetchmail을 사용해서 imap 서버로부터 메일을 가져오려면, 다음과 같은 .fetchmailrc를 만들어 사용하면 된다.
          poll 메일서버.com with proto imap:

               plugin "ssh %h /usr/sbin/imapd" auth ssh;

               user babo is babo here
       
SMTP
역시 같은 문서에서 SSH 접속을 이용한 SMTP 사용법을 제시했는데 방법은 다음과 같이 간단하다.
           ssh -C -l loginid mailserver -L2525:mailserver:25
       
후에 메일 클라이언트를 localhost port 2525 를 통해 메일을 보내도록 하면 된다. 예를 들어 pine을 사용한다면, .pinerc의 smtp-server=localhost:2525 와 같이 해주면 되겠다.
ssh 윈도우 클라이언트인 SecureCRT를 사용해도 가능한데 Session Option -> Connection -> Hostname -> Advanced 탭을 선택해서, 같은 요령으로 사용할 로컬 포트와 원격 호스트 이름, 포워딩할 원격 포트를 선택한다. ssh 접속 후에는 OE의 경우 SMTP 서버를 127.0.0.1 로 지정하고 사용할 포트만 위에서 선택한 로컬 포트로 지정하면 된다. POP 포트도 같은 방법으로 사용 가능 하다.
SSH를 이용한 SMTP는 몇가지 장점을 가지는데 네트워크 트래픽의 감소와 계정 사용자만이 SMTP 서버를 사용할수 있으므로 함부로 릴레이를 열어놓지 않아도 된다는데 의미가 있겠다.
Webmin
Webmin는 웹상에서 브라우저로 서버 관리를 하는 툴이며, 당연히 보안에 민감하다.
webmin은 일반적으로 10000 포트를 사용하므로 다음과 같이 ssh 접속을 연다.
          ssh -f -l [원격 유저] [원격 서버] -L 1234:[원격 서버]:10000 tail -f /etc/motd
       
이제 브라우저에서 http://localhost:1234 로 접속할수 있다.
X
리모트 서버상의 X 어플리케이션들을 실행하고자 한다면 계정 홈 디렉토리의 ~/.ssh/environment 파일을 만들고 다음과 같은 내용을 넣어준다.
          XAUTHORITY=/home/계정 이름/.Xauthority
       
이제 로그아웃한후에 ssh를 다음과 같이 실행해본다. (계정 이름이 silver이고 서버는 gate.eunjea.org 라고 한다면)
          ssh -f -X -l silver gate.eunjea.org xterm
       
이제 xterm 이 로컬의 X에서 실행될 것이다. 다른 X 어플리케이션들도 이와 같이 실행시킬수 있다.
설정 파일
ssh 설정 파일은 ~/.ssh/config 파일 이다. 또는 전체 유저의 설정파일은 /etc/ssh/ssh_config 로 설정할수 있다.
다음은 내가 사용하는 설정 파일의 일부분이다. Host 지시자를 사용하여 접속할 서버마다 다른 옵션을 사용할수 있다.
          # *.eunjea.org 도메인을 가진 서버에 접속할때는 SSH2 프로토콜을 사용한다.

          Host *.eunjea.org

          Protocol 2

       

          # koru.org 에 접속할때는 SSH2 와 압축 옵션을 사용한다.

          Host koru.org

          Protocol 2

          Compression yes

          CompressionLevel 9

       

          # kldp.org에 접속할때는 SSH1 프로토콜을 사용하고

          # Cipher는 blowfish, 압축을 켠다.

          Host kldp.org

          Protocol 1

          Cipher blowfish

          Compression yes
       
그외 중요한 옵션으로는 CheckHostIP 가 있는데 이것은 접속할때 마다 리모트 서버의 IP 주소를 known_hosts 파일과 대조해본다. 이것은 DNS spoofing에 의해 호스트키의 변경을 알수 있는 옵션이다. 디폴트는 yes이다.
이외에도 많은 옵션들이 있는데 ssh의 man 페이지를 참고하라.
장 3. 서버 운영
설치
서버는 간단하게 패키지를 설치하거나 직접 소스를 설치할 경우 일단 보안을 위한 Privilege separation을 위해 sshd 유저와 디렉토리를 만들어 준다.
          $ mkdir /var/empty/sshd

          $ chown root:sys /var/empty/sshd

          $ chmod 755 /var/empty/sshd

          $ groupadd sshd

          $ useradd -g sshd -c 'sshd privsep' -d /var/empty/sshd -s /bin/false sshd
       
ssh 컴파일 옵션:
          configure --with-pam \

             --with-ipv4-default \

             --with-rsh=/usr/bin/rsh \

             --with-default-path=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin \

             --with-privsep-path=/var/empty/sshd
       
서버 설정
서버 설치가 끝난후 설정 파일(/etc/ssh/sshd_config)의 옵션들을 살펴보자. 대부분의 경우 기본 설정파일 그대로 사용하여도 좋지만, 특정 그룹이나 유저들에게만 로그인을 허용하도록 할 경우 다음 지시자를 사용할수 있다.
AllowGroups
ssh 로그인을 해당 그룹으로 제한한다. 각각의 그룹명은 공백으로 구분한다. 와일드 카드(* 와 ?)를 사용할수 있다.
AllowUsers
ssh 로그인을 해당 유저로 제한한다. 사용법은 AllowGroups과 같다.
DenyGroups
AllowGroups의 반대 역할을 한다. 지정된 그룹은 로그인이 거부된다.
DenyUsers
AllowUsers의 반대 역할을 한다. 지정된 사용자는 로그인이 거부된다.
이외 사용자들의 sftp 사용을 허용하려면 다음과 같은 라인이 있는지 확인한다.
          Subsystem   sftp  /usr/lib/openssh/sftp-server
       
이외 옵션들은 sshd 의 man 페이지를 참고한다.
장 4. 저작권, 관련/참고 문서
저작권
Copyright (C) 2001 임은재
이 문서는 GNU Free Documentation License 버전 1.1 혹은 자유 소프트웨어 재단에서 발행한 이후 판의 규정에 따르며 저작권에 대한 본 사항이 명시되는 한 어떠한 정보 매체에 의한 본문의 전재나 발췌도 무상으로 허용됩니다.
본 저자는 문서의 내용이 야기할 수 있는 어떠한 결과에 대해서도 책임을 지지 않습니다.
관련/참고 문서
http://www.linuxdoc.org/HOWTO/mini/Compressed-TCP.html
http://www.mandrakeuser.org/docs/secure/sssh.html