우리가 별 생각없이 쓰고 있는 전통적인 ftp, pop, telnet 와 같은 서비스들은 익히 알려진대로 메시 지들이 암호화 되지 않은 방식이므로 스니핑과 같은 해킹 기법에 의해 암호가 노출될 수 있습니다.
SSH는 이러한 서비스들이 보안에 아주 취약한 점을 대체하기 위하여 나온 원격 로그인 프로그램입니다.
일반 로그인 프로그램들이 패킷을 전송할 때 평문으로 전달을 하기 때문에 패스워드를 쉽게 가로챌 수 있는 것에 비해 SSH는 패킷 자체를 암호화 하여 전송하기 때문에 원격 관리에 혁명을 일으킨 프로그램입니다. SSH를 통한 모든 데이타는 암호화되며, 트래픽은 압축되어 더 빠른 전송 효율을 얻을 수 있습니다.
여기서는 ssh1, ssh2 와 호환이 되는 OpenSSH로 설명을 하며 인증키 방식을 설명하지 않고 패드워드 방식으로 설명을 합니다.(왜냐? 이게 더 간단하니까!)
OpenSSH 설치하기
OpenSSH 의 리눅스 버전은 http://www.openssh.com/portable.html에서 배포되고 있으며 소스와 RPM 패키지로 배포되고 있습니다.
대부분의 레드햇 계열 배포판에서는 설치시에 openssh 클라이언트 패키지가 설치 됩니다. 사용자들은 서버 패키지만 설치하면 쉽게 ssh 서버를 구축할 수 있습니다.
와우리눅스 7.1 파란의 경우 OpenSSH 2.5.0 버전의 ssh 클라이언트가 기본으로 설치가 되며 ssh 서버를 구성하기 위해서는 openssh-server 패키지를 설치하면 됩니다. 와우리눅스 7.0 까치 사용자 들은 아래의 패키지를 설치하여 업그레이드 하면 됩니다.
#rpm -Uvh openssh-2.9p2-1.i386.rpm
#rpm -Uvh openssh-server-2.9p2-1.i386.rpm
#rpm -Uvh openssh-clients-2.9p2-1.i386.rpm
와우리눅스 7.1 파란의 경우, openssl 패키지와의 의존성 문제로 업그레이드가 안될 것입니다. 이러한 문제는 소스 패키지를 재빌드 하여 설치하면 해결 됩니다.
#rpm --rebuild openssh-2.9p2-1.src.rpm
#cd /usr/src/redhat/RPMS/i386/
#rpm -Uvh openssh-2.9p2-1.i386.rpm
#rpm -Uvh openssh-server-2.9p2-1.i386.rpm
#rpm -Uvh openssh-clients-2.9p2-1.i386.rpm
서버 실행
ssh 서버를 구축하기 위해서는 아래의 패키지를 설치합니다. ssh 서버는 22번 포트를 사용합니다.
#rpm -Uvh openssh-server-2.9p2-1.i386.rpm
#/etc/rc.d/init.d/sshd start
이렇게 해서 OpenSSH 서버를 실행 시킵니다. 이제 ssh 서버가 실행중인 상태입니다.
openssh 서버를 xinetd 서버로 운영하기
/etc/xinet.d/아래에 ssh 이름으로 파일을 만들고 아래와 같이 작성합니다.
service ssh
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/sshd
server_args = -i
log_on_failure += USERID
}
ssh 로 원격 컴퓨터에 접속하기
telnet 를 사용하여 telnet 서버에 접속하는 것처럼 ssh 명령을 사용하여 ssh 서버에 접속합니다.
ssh 를 사용하는 방법은 꽤 쉽습니다. telnet 의 사용방법과 동일하며 유연한 많은 옵션을 지원합니다.
자세한 것은 man ssh 하시고 일단은 다음과 같이 접속할 수 있습니다.
접속하고자 하는 호스트의 계정은 -l 옵션을 사용하여 접속하거나, @ 로 계정과 서버주소를 구분하여 접속합니다.
#ssh -l 유저네임 서버주소
#ssh 유저네임@서버주소 (예 -- ssh lsk@xiannetwork.com)
만약, host 에 처음 연결하는 것이라면 유저 인증을 하기 위해 아래와 같은 메시지 프롬프트를 보게 됩니다.
The authenticity of host 'hostname' can't be established.
RSA key fingerprint is 3b:60:57:4e:6c:59:5a:99:cf:41:d5:e0:14:af:0d:a1.
Are you sure you want to continue connecting (yes/no)?
물론 눈치 채셨겠지만, 여기에서는 yes 라고 답해 주시면 됩니다.
보안 파일 전송 SCP 사용하기
ssh는 또한 보안적인 방법으로 인터넷에서 파일 전송을 하는 방법을 제공합니다. 이 프로그램은 scp (Secure Copy)라고 하며 scp 의 사용방법은 매우 단순합니다.
#scp user@host:filename user@host:filename
ssh 를 이용하여 다른 호스트에 로컬 파일을 복사하려면,
#scp linux.gif junilove@junilove.nameip.net:
이렇게 하면 현재 디렉토리에 있는 freeos.gif 파일이 junilove.nameip.net 호스트의 junilove 유저의 디렉토리에 복사가 됩니다. 끝에 있는 ':' 은 반드시 써주어야 합니다.
반대로 호스트에 있는 파일을 로컬 디렉토리에 복사하려면,
#scp junilove@junilove.nameip.net:linux.gif ./
합니다. 이렇게 하면 junilove.nameip.net 의 junilove의 유저의 홈디렉토리에 있는 linux.gif 파일을 로컬 디렉토리에 복사합니다.
scp 에 '-r' 옵션을 사용하면 하위 디렉토리까지 복사할 수 있습니다.
윈도우용 ssh 클라이언트
리눅스 시스템에서는 ssh 클라이언트가 설치되어서 바로 사용할 수 있지만 윈도우 시스템에서는 별도의 ssh 지원 클라이언트를 설치해야 합니다. 필자가 사용한 PuTTY 는 ssh2 프로토콜을 지원하는 공개소프트웨어이며, 소스도 공개되어 있습니다.
이 외에도 scp 클라이언트로 pscp.exe 가 배포되고 있습니다.
다만 한글지원이 잘 되지 않는다는 문제점이 있습니다. 이외에도 쉐어웨어로 많이 사용되는 SecureCRT 가 있습니다.
PuTTY를 사용하기전에 먼저 http://www.chiark.greenend.org.uk/~sgtatham/putty/ 에서 PuTTY를 받아서 설치합니다.
별도의 설치과정은 필요없으며 실행파일을 실행하기만 하면 사용 할 수 있습니다. 처음 실행하면 아래와 같은 화면이 보이며 'Host Name' 부분에 서버주소를 적고 'Protocol' 은 ssh 로 설정합니다.
PuTTY 는 기본으로 ssh1 프로토콜을 사용하도록 설정되어 있습니다. 이것을 ssh2 프로토콜으로 변
경합니다.
이제 'open' 버튼을 클릭하면 연결이 됩니다. 연결이 되면 처음 접속시에는 아래와 같은 화면이 보입니다. yes 를 선택합니다.
'login as:' 에 계정이름을 적고 'password:' 에 계정암호를 입력하면 로그인이 됩니다. 쉘 프롬프트에서 exit 를 입력하면 자동으로 로그아웃되며 PuTTY 의 프로그램은 종료됩니다.
ssh 사용 팁
ssh 를 여러가지로 활용하여 사용할 수 있습니다. 더 자세한 것들은 man ssh 를 하여 메뉴얼 페이지를 보세요. 먼저 아래와 같이 하면 서버에 있는 파일을 로컬로 복사 할 수 있습니다.
#ssh user@remote.com dd if=remotefilename | dd of=localfiename
다음과 같이 하면 서버의 파일을 로컬의 /dev/fd0 장치 드라이버에 기록할 수 있습니다.
#ssh user@remote.com dd if=remotefilename | dd of=/dev/fd0
아래의 방법은 현재의 디렉토리를 압축하여 서버의 junilove 계정의 홈디렉토리에
my_local_backup.tar.gz 에 기록합니다.
#tar cfz - . | ssh junilove@yourmachine.com dd of=my_local_backup.tar.gz
관련 자료
http://www.openssh.com/faq.html : OpenSSH FAQ
http://kldp.org/HOWTO/mini/html/Compressed-TCP/ : 압축된 TCP/IP세션을 SSH 같은 도구들로 이용하기
http://kldp.org/KoreanDoc/html/SSH-KLDP/ : SSH Howto
###########에러 구문 참고#####################################################
기본적으로 ssh2 는 DNS의 Reverse (역질의)를 참고한다.
즉 이 역질의를 꺼놓지 않으면 다음과 같은 에러가 난다.
[young@local young]$ ssh
whoami.sarang.net
Disconnected; authentication
error (No further authentication methods available.).
[young@local young]$
이 에러를 제거하기 위해서는 다음과 같이 ssh2d_config를 수정해야 한다.
[root@whoami ssh2]# vi
/etc/ssh2/sshd2_config
46 RequireReverseMapping yes
47 UserKnownHosts yes
위 46번째 줄에 yes를 no로 바꾸어 준다. 참고로 sshd2_config 파일은 sshd2 데몬의 설정 파일이다.
'#창고 > 컴퓨터 관리' 카테고리의 다른 글
[Linux] 리눅스 설치시 꼭 알아야할 10가지 (0) | 2009.05.01 |
---|---|
[Linux] ls 명령어 간단 사용법 (0) | 2009.05.01 |
[Linux] Linux 에서 Root 암호 잊어버렸을때 (0) | 2009.05.01 |
[Linux] Linux 를 한글로 설치하였는데 한글이 깨져서 보일 때 (0) | 2009.05.01 |
[Linux] Linux 기본 명령어 (0) | 2009.05.01 |
[Linux] 리눅스 배포본의 종류 (0) | 2009.05.01 |
[Linux] Linux 에서 가장 많이 사용되는 명령어 모음 (0) | 2009.05.01 |