SSH란 무엇인가?

 우리가 별 생각없이 쓰고 있는 전통적인 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 데몬의 설정 파일이다.


+ Recent posts