Openssh5.3으로 버전올리기
페이지 정보
작성자 서방님 댓글 0건 조회 182회 작성일 14-05-29 11:35본문
CentOS가 보편화되면서 yum이라는 패키지 관리 프로그램으로 대부분 패키지 업데이트를 합니다.
그러나 이 경우 yum의 패키지 업데이트가 느린 경우가 왕왕 있는데, 대표적인 것이 OpenSSH입니다.
CentOS 5.2에서 OpenSSH를 yum으로 업데이트하더라도 버전은 다음과 같이 표시가 됩니다.
[root@hosting ~]# cat /etc/redhat-release
CentOS release 5.2 (Final)
[root@hosting ~]# ssh -V
OpenSSH_4.3p2, OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
현재 OpenSSH는 버전 5.3까지 나와 있는데, yum으로 업데이트하면 꼴랑 4.3p2만 깔립니다.
OpenSSH는 서버 접속과 직결되는 부분이라, 최신 버전이 나오면 바로바로 업데이트해주어야 합니다.
이 글에서는 Openssh 최신 버전인 5.3을 컴파일하여 설치하는 법을 다루겠습니다.
1. 소스 다운받기
먼저, 다음의 명령들을 순차적으로 수행합니다.
[root@klsi root]# cd /usr/local/src
[root@klsi src]# wget ftp://ftp.kaist.ac.kr/pub/OpenBSD/OpenSSH/portable/openssh-5.8p1.tar.gz
--03:34:37-- ftp://ftp.kaist.ac.kr/pub/OpenBSD/OpenSSH/portable/openssh-5.8p1.tar.gz
=> `openssh-5.8p1.tar.gz'
Resolving ftp.kaist.ac.kr... 완료.
Connecting to ftp.kaist.ac.kr[143.248.234.110]:21... connected.
anonymous로서 로그인하고 있습니다...로그인 했습니다!
==> SYST ... 완료. ==> PWD ... 완료.
==> TYPE I ... 완료. ==> CWD /pub/OpenBSD/OpenSSH/portable ... 완료.
==> PORT ... 완료. ==> RETR openssh-5.3p1.tar.gz ... 완료.
길이: 1,027,130 (unauthoritative)
100%[=================================================================================================================>] 1,027,130 4.69M/s ETA 00:00
03:34:37 (4.69 MB/s) - `openssh-5.8p1.tar.gz'가 보존되었습니다 [1027130]
소스 파일을 받았으면 다음 명령으로 압축을 풉니다.
[root@klsi src]# tar xzvfp openssh-5.8p1.tar.gz
2. telnet 잠시 열어놓기
만약에 OpenSSH 업그레이드 도중에 SSH 접속이 끊기거나 하면 IDC에 방문해야 하는 극악한 경우가 생길 수 있습니다.
이 경우를 대비하여 telnet을 잠시 열어 놓습니다.
CentOS의 경우에는 다음과 같이 설정합니다.
[root@hosting ~]# vi /etc/xinetd.d/krb5-telnet
service telnet 앞 부분에 #로 주석이 되어 있으면 주석을 해제합니다.
disable = yes로 되어 있으면 no로 수정합니다.
저장한 후, /etc/rc.d/init.d/xinetd reload [엔터] 후 /etc/rc.d/init.d/xinetd restart [엔터]를 순서대로 수행합니다.
netstat -nlp 명령으로 23번 포트가 열려져 있는 것을 확인합니다.
만약 iptable rule로 23번 포트 접속을 막아 놓은 경우에는 23번 포트 접속이 가능하도록 룰을 추가하여 줍니다.
RedHat 9의 경우에는 /etc/xinetd.d/telnet 파일을 열어 편집해 줍니다. 설정 변경 방법은 CentOS와 같습니다.
여기까지 성공했으면 telnet으로 서버에 접속한 뒤 su - 명령으로 수퍼유저로 전환합니다.
3. 기존의 패키지 제거
/etc/rc.d/init.d/sshd stop 명령으로 SSH 데몬을 정지한 후
rpm -qa | grep ssh 명령으로 기존 패키지를 확인한 후 제거합니다.
제거하는 방법은 rpm -e openssh-server [엔터] -> rpm -e openssh-client [엔터] -> rpm -e openssh [엔터] 순입니다.
4. 컴파일하기
[root@klsi root]# cd /usr/local/src/openssh-5.3.p1
명령으로 소스 압축을 풀어 놓은 디렉터리로 이동한 후 다음 명령을 수행합니다.
단, zlib이 /usr/local/zlib에 설치되어 있다는 것을 가정하며,
zlib을 OpenSSH와 연동하지 않을 경우에는 이 옵션은 생략해도 무방합니다.
./configure \
--prefix=/usr/local/openssh \
--sysconfdir=/etc/ssh \
--with-zlib=/usr/local/zlib \
--with-pam \
--with-mantype=man \
--with-md5-passwords
configure가 끝나면 make && make install 명령으로 설치를 완료합니다.
5. /etc/ssh/sshd_config 환경 설정
설치가 되면 /etc/ssh/sshd_config 파일을 에디터로 열어 환경 설정 부분을 수정하여 줍니다.
기본적으로 아래 옵션들은 꼭 수정해 주어야 합니다.
Port 22 -> 다른 포트를 사용할 경우에는 변경하며, 주석을 반드시 제거해 줍니다.
Protocol 2 -> SSH1보다는 SSH2가 보안상 강력하므로 반드시 Protocol은 2로 설정합니다.
PermitRootLogin no -> 루트로 직접 접속을 허용하지 않을 경우에는 no로 설정하고, 직접 접속을 허용할 경우에는 yes로 설정합니다.
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key -> Hostkey 앞의 주석을 제거해 줍니다.
PasswordAuthentication yes -> 패스워드 인증을 허용하는 옵션입니다. 반드시 yes로 설정합니다.
PermitEmptyPasswords no -> 빈 패스워드를 허용하지 말라는 옵션이며 반드시 no로 설정합니다.
6. SSH 데몬 자동 실행 스크립트 설정
vi /etc/rc.d/init.d/sshd 명령으로 파일을 연 후 다음 내용을 그대로 추가합니다.
#!/bin/bash
#
# Init file for OpenSSH server daemon
#
# chkconfig: 2345 55 25
# description: OpenSSH server daemon
#
# processname: sshd
# config: /etc/ssh/ssh_host_key
# config: /etc/ssh/ssh_host_key.pub
# config: /etc/ssh/ssh_random_seed
# config: /etc/ssh/sshd_config
# pidfile: /var/run/sshd.pid
# source function library
. /etc/rc.d/init.d/functions
# pull in sysconfig settings
[ -f /etc/sysconfig/sshd ] && . /etc/sysconfig/sshd
RETVAL=0
prog="sshd"
# Some functions to make the below more readable
KEYGEN=/usr/local/openssh/bin/ssh-keygen
SSHD=/usr/local/openssh/sbin/sshd
RSA1_KEY=/etc/ssh/ssh_host_key
RSA_KEY=/etc/ssh/ssh_host_rsa_key
DSA_KEY=/etc/ssh/ssh_host_dsa_key
PID_FILE=/var/run/sshd.pid
do_rsa1_keygen() {
if [ ! -s $RSA1_KEY ]; then
echo -n $"Generating SSH1 RSA host key: "
if $KEYGEN -q -t rsa1 -f $RSA1_KEY -C '' -N '' >&/dev/null; then
chmod 600 $RSA1_KEY
chmod 644 $RSA1_KEY.pub
success $"RSA1 key generation"
echo
else
failure $"RSA1 key generation"
echo
exit 1
fi
fi
}
do_rsa_keygen() {
if [ ! -s $RSA_KEY ]; then
echo -n $"Generating SSH2 RSA host key: "
if $KEYGEN -q -t rsa -f $RSA_KEY -C '' -N '' >&/dev/null; then
chmod 600 $RSA_KEY
chmod 644 $RSA_KEY.pub
success $"RSA key generation"
echo
else
failure $"RSA key generation"
echo
exit 1
fi
fi
}
do_dsa_keygen() {
if [ ! -s $DSA_KEY ]; then
echo -n $"Generating SSH2 DSA host key: "
if $KEYGEN -q -t dsa -f $DSA_KEY -C '' -N '' >&/dev/null; then
chmod 600 $DSA_KEY
chmod 644 $DSA_KEY.pub
success $"DSA key generation"
echo
else
failure $"DSA key generation"
echo
exit 1
fi
fi
}
do_restart_sanity_check()
{
$SSHD -t
RETVAL=$?
if [ ! "$RETVAL" = 0 ]; then
failure $"Configuration file or keys are invalid"
echo
fi
}
start()
{
# Create keys if necessary
do_rsa1_keygen
do_rsa_keygen
do_dsa_keygen
echo -n $"Starting $prog:"
initlog -c "$SSHD $OPTIONS" && success || failure
RETVAL=$?
[ "$RETVAL" = 0 ] && touch /var/lock/subsys/sshd
echo
}
stop()
{
echo -n $"Stopping $prog:"
killproc $SSHD -TERM
RETVAL=$?
[ "$RETVAL" = 0 ] && rm -f /var/lock/subsys/sshd
echo
}
reload()
{
echo -n $"Reloading $prog:"
killproc $SSHD -HUP
RETVAL=$?
echo
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
reload)
reload
;;
condrestart)
if [ -f /var/lock/subsys/sshd ] ; then
do_restart_sanity_check
if [ "$RETVAL" = 0 ] ; then
stop
# avoid race
sleep 3
start
fi
fi
;;
status)
status $SSHD
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}"
RETVAL=1
esac
exit $RETVAL
저장한 후에는 chmod 700 /etc/rc.d/init.d/sshd [엔터] 한 후 /etc/rc.d/rc.local 파일 맨 마지막 줄에 /etc/rc.d/init.d/sshd start 라는 명령 한 줄을 추가합니다.
7. SSH 데몬 구동
명령 프롬프트에서 다음의 명령을 입력합니다.
[root@klsi root]# /etc/rc.d/init.d/sshd start
sshd를 시작함: [ 확인 ]
[root@klsi root]#
netstat -nlp 명령으로 확인하여 22번 포트가 열려 있으면 ssh -V 명령으로 버전을 확인합니다.
[root@klsi root]# ssh -V
OpenSSH_5.3p1, OpenSSL 0.9.7a Feb 19 2003
이렇게 나오면 OpenSSH 업그레이드 작업이 모두 완료됩니다.
댓글목록
등록된 댓글이 없습니다.