Solaris7 에서 SSH(openssh) 설치

Posted 2009. 2. 17. 11:47


밑에 보시면 Solaris 8 에서 설치하는 글이 있는데 또 적는 이유는  Solaris 8에서 조금 더 수정 및 추가가 되어야 하는 부분이 있어서 이렇게 다시 적습니다. (2009.01.23)

환경 : Solaris7 SPARC


1. SSH 설치에 필요한 Package 다운로드

http://sunfreeware.com  에서 접속하여 오른쪽에 있는 Solaris7 x86, Solaris8 SPARC 중 해당 시스템 사항에 맞추어서 클릭하여  아래에 적힌 목록들을 다운

egd-0.8-sol7-sparc-local
gcc-3.4.6-sol7-sparc-local.gz
libgcc-3.4.6-sol7-sparc-local.gz
openssh-5.1p1-sol7-sparc-local.gz
openssl-0.9.8i-sol7-sparc-local.gz
perl-5.8.8-sol7-sparc-local
prngd-0.9.25-sol7-sparc-local.gz
tcp_wrappers-7.6-sol7-sparc-local.gz
zlib-1.2.3-sol7-sparc-local.gz

위에 리스트중에 이미 설치되어있는것은 생략하셔도 됩니다.
혹시 이 버젼보다 상위 버젼이 나왔다면 그것을 받아서 설치하셔도 됩니다.



2. Package 압축 해제 및 설치

위의 파일들은 모두 패키지 형식이기 때문에 gzip으로 압축만 풀고 간단한 명령어가 치면 자동으로

설치 됩니다.

예) #  gzip -d openssh-5.1p1-sol7-sparc-local.gz   

이렇게 모두 압축을 풀어주세요

압축을 풀게 되면 openssh-5.1p1-sol7-sparc-local 이렇게만 남습니다.


그다음 패키지를 풀면됩니다.


예) # pkgadd -d openssh-5.1p1-sol7-sparc-local

The following packages are available:
  1  SMCosh511     openssh
                   (sparc) 5.1p1

Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: all

Processing package instance <SMCosh511> from </home/kuma/openssh-5.1p1-sol7-sparc-local>

openssh
(sparc) 5.1p1
The OpenSSH Group
Using </usr/local> as the package base directory.
## Processing package information.
## Processing system information.
   6 package pathnames are already properly installed.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.

Installing openssh as <SMCosh511>

## Installing part 1 of 1.
/usr/local/bin/scp
/usr/local/bin/sftp
/usr/local/bin/slogin <symbolic link>
/usr/local/bin/ssh
/usr/local/bin/ssh-add
/usr/local/bin/ssh-agent
/usr/local/bin/ssh-keygen
/usr/local/bin/ssh-keyscan
/usr/local/doc/openssh/CREDITS
/usr/local/doc/openssh/ChangeLog
/usr/local/doc/openssh/INSTALL
/usr/local/doc/openssh/LICENCE
/usr/local/doc/openssh/OVERVIEW
/usr/local/doc/openssh/README
/usr/local/doc/openssh/README.dns
/usr/local/doc/openssh/README.platform
/usr/local/doc/openssh/README.privsep
/usr/local/doc/openssh/README.smartcard
/usr/local/doc/openssh/README.tun
/usr/local/doc/openssh/TODO
/usr/local/doc/openssh/WARNING.RNG
/usr/local/doc/openssh/contrib/Makefile
/usr/local/doc/openssh/contrib/README
/usr/local/doc/openssh/contrib/aix/README
/usr/local/doc/openssh/contrib/aix/buildbff.sh
/usr/local/doc/openssh/contrib/aix/inventory.sh
/usr/local/doc/openssh/contrib/aix/pam.conf
/usr/local/doc/openssh/contrib/caldera/openssh.spec
/usr/local/doc/openssh/contrib/caldera/ssh-host-keygen
/usr/local/doc/openssh/contrib/caldera/sshd.init
/usr/local/doc/openssh/contrib/caldera/sshd.pam
/usr/local/doc/openssh/contrib/cygwin/Makefile
/usr/local/doc/openssh/contrib/cygwin/README
/usr/local/doc/openssh/contrib/cygwin/ssh-host-config
/usr/local/doc/openssh/contrib/cygwin/ssh-user-config
/usr/local/doc/openssh/contrib/cygwin/sshd-inetd
/usr/local/doc/openssh/contrib/findssl.sh
/usr/local/doc/openssh/contrib/gnome-ssh-askpass1.c
/usr/local/doc/openssh/contrib/gnome-ssh-askpass2.c
/usr/local/doc/openssh/contrib/hpux/README
/usr/local/doc/openssh/contrib/hpux/egd
/usr/local/doc/openssh/contrib/hpux/egd.rc
/usr/local/doc/openssh/contrib/hpux/sshd
/usr/local/doc/openssh/contrib/hpux/sshd.rc
/usr/local/doc/openssh/contrib/redhat/gnome-ssh-askpass.csh
/usr/local/doc/openssh/contrib/redhat/gnome-ssh-askpass.sh
/usr/local/doc/openssh/contrib/redhat/openssh.spec
/usr/local/doc/openssh/contrib/redhat/sshd.init
/usr/local/doc/openssh/contrib/redhat/sshd.init.old
/usr/local/doc/openssh/contrib/redhat/sshd.pam
/usr/local/doc/openssh/contrib/redhat/sshd.pam.old
/usr/local/doc/openssh/contrib/solaris/README
/usr/local/doc/openssh/contrib/ssh-copy-id
/usr/local/doc/openssh/contrib/ssh-copy-id.1
/usr/local/doc/openssh/contrib/sshd.pam.freebsd
/usr/local/doc/openssh/contrib/sshd.pam.generic
/usr/local/doc/openssh/contrib/suse/openssh.spec
/usr/local/doc/openssh/contrib/suse/rc.config.sshd
/usr/local/doc/openssh/contrib/suse/rc.sshd
/usr/local/doc/openssh/contrib/suse/sysconfig.ssh
/usr/local/etc/moduli
/usr/local/etc/ssh_config
/usr/local/etc/sshd_config
/usr/local/libexec/sftp-server
/usr/local/libexec/ssh-keysign
/usr/local/libexec/ssh-rand-helper
/usr/local/sbin/sshd
/usr/local/share/Ssh.bin
/usr/local/share/man/man1/scp.1
/usr/local/share/man/man1/sftp.1
/usr/local/share/man/man1/slogin.1 <symbolic link>
/usr/local/share/man/man1/ssh-add.1
/usr/local/share/man/man1/ssh-agent.1
/usr/local/share/man/man1/ssh-keygen.1
/usr/local/share/man/man1/ssh-keyscan.1
/usr/local/share/man/man1/ssh.1
/usr/local/share/man/man5/ssh_config.5
/usr/local/share/man/man5/sshd_config.5
/usr/local/share/man/man8/sftp-server.8
/usr/local/share/man/man8/ssh-keysign.8
/usr/local/share/man/man8/ssh-rand-helper.8
/usr/local/share/man/man8/sshd.8
[ verifying class <none> ]

Installation of <SMCosh511> was successful.
#

이렇게 위의 리스트에 적혀있는 파일들을 예)를 보시고 설치 하시면 됩니다.



3. SSH 접속 환경 구성

# mkdir /var/empty 

# chown root:sys /var/empty
소유자와 그룹을 root:sys로 변경

# chmod 755 /var/empty
empty 사용 권한은 755(rwxr-xr-x)

# groupadd sshd
그룹 sshd 만들기

# useradd -g sshd -c 'sshd privsep' -d /var/empty -s /bin/false sshd



4. Getting Entropy (Solaris 8버젼 이상에서는 필요가 없는 부분입니다.)

만약 이부분을 하지않고 진행할 경우 ssh-keygen  명령어 사용시 에러가 발생하게 됩니다.

# ssh-keygen -t rsa1 -f /usr/local/etc/ssh_host_key -N ""
PRNG is not seeded

여기 진행부분은 필히 순서를 지켜서 사용하셔야 합니다.

먼저 /var/log or /var/adm 로 이동하세요

# cd /var/log
# cat syslog > /usr/local/etc/prngd/prngd-seed

or

# cd /var/adm
# cat messages > /usr/local/etc/prngd/prngd-seed

# mkdir /var/spool/prngd

# /usr/local/sbin/prngd /var/spool/prngd/pool
이부분이 prngd 실행하는 부분입니다.

# ln -s /var/spool/prngd/pool /dev/egde-pool

그다음 /etc/init.d 디렉토리에서 prngd 파일을 하나 생성해야합니다.

# vi prngd  or   # cat >> prngd

#!/bin/sh

pid=`/usr/bin/ps -e | /usr/bin/grep prngd | /usr/bin/sed -e 's/^  *//' -e 's/ .*//'`
case $1 in
'start')
 /usr/local/sbin/prngd /var/spool/prngd/pool
 ;;
'stop')
 if [ "${pid}" != "" ]
 then
  /usr/bin/kill ${pid}
 fi
 ;;
*)
 echo "usage: /etc/init.d/prngd {start|stop}"
 ;;
esac

이 파일은 제가 첨부파일로 올려놓겠습니다.




# chown root:sys /etc/init.d/prngd
prngd 파일의 소유자 및 그룹을  root:sys 로 변경

# chmod 755 /etc/init.d/prngd
prngd 파일의 권한을 755 (r-xr-xr-x)

# ln -s /etc/init.d/prngd /etc/rc2.d/S99prngd

이렇게 하시면 Server Reboot 데몬이 자동 실행되어 가동이 됩니다.




5. Tcp_Wrapper 설정

# vi /etc/hosts.allow
sshd : All    (추가)

# vi /etc/hosts.deny
Server로 접근 못하게 할 IP 등을 넣어시면 됩니다.

위 두부분은 파일만 만들어 놓고 나중에 추가 사항들을 추가 하시는게 좋을것 같습니다. 만약 원격으로 하실 경우 직접 서버가 있는 곳까지 가야할 상황이 생길 수 있으니까요.



6. SSH 사용을 위한 암호키 생성

먼저 PATH에 /usr/local/bin 과 /usr/local/sbin 이 등록되어 있어야 명령어를 실행하실 수 있습니다.

# ssh-keygen -t rsa1 -f /usr/local/etc/ssh_host_key -N ""
# ssh-keygen -t dsa -f /usr/local/etc/ssh_host_dsa_key -N ""
# ssh-keygen -t rsa -f /usr/local/etc/ssh_host_rsa_key -N ""

이렇게 하시면

예) # ssh-keygen -t rsa1 -f /usr/local/etc/ssh_host_key -N ""

Generating public/private rsa1 key pair.
Your identification has been saved in /usr/local/etc/ssh_host_key.
Your public key has been saved in /usr/local/etc/ssh_host_key.pub.
The key fingerprint is:
4f:00:d4:cc:c8:b2:7e:41:6e:3d:5d:c5:d0:52:17:cc root@unknown
The key's randomart image is:
+--[RSA1 2048]----+
|       oo=        .*=.o|
|        . +.+     o oE |
|               = ... . .  |
|            . + o.. .    |
|      .  .  .S..  ..     |
|    .    .  o          . |
|     .    .               |
|                          |
|                          |
+-----------------+
bash-2.03#

이런 형식의 내용을 화면에 뿌려줍니다.  만들어진 파일은 /usr/local/etc/ 안에 있습니다.



7. sshd Daemon Script 작성

# vi /etc/init.d/sshd

#!/bin/sh

pid=`/usr/bin/ps -e | /usr/bin/grep sshd | /usr/bin/sed -e 's/^  *//' -e 's/ .*//'`
case $1 in
'start')
/usr/local/sbin/sshd
;;
'stop')
if [ "${pid}" != "" ]
then
/usr/bin/kill ${pid}
fi
;;
*)
echo "usage: /etc/init.d/sshd {start|stop}"
;;
esac


혹은

case "$1" in

'start')
     # Start the ssh daemon
     if [ -f /usr/local/sbin/sshd ]; then
          echo "starting SSHD daemon"
          /usr/local/sbin/sshd &
     fi
     ;;

'stop')
     # Stop the ssh deamon
     PID=`/usr/bin/ps -e -u 0 | /usr/bin/fgrep sshd | /usr/bin/awk '{print $1}'`
     if [ ! -z "$PID" ] ; then
          /usr/bin/kill ${PID} >/dev/null 2>&1
     fi
     ;;

*)
     echo "usage: /etc/init.d/sshd {start|stop}"
     ;;

esac
exit 0

둘중에 하나를 작성하시면 됩니다.
제가 사용하는 파일을 첨부파일로 올리겠습니다.



# chown root:sys /etc/init.d/sshd
sshd 파일의 소유자 및 그룹을  root:sys 로 변경

# chmod 755 /etc/init.d/sshd
sshd 파일의 권한을 755 (r-xr-xr-x)

# cat >> /etc/rc2.d/S99sshd
/etc/init.d/sshd start
Ctrl + C <- 이거 아시죠? 빠져나오기.. ^^

# chome 744 /etc/rc2.d/S99sshd
sshd 파일의 권한을 744 (rwxr--r--)

이렇게 하시면 Server Reboot 데몬이 자동 실행되어 가동이 됩니다.



8. SSH, PRNGD 실행 및 가동여부 확인

# /etc/init.d/prngd start

# /etc/init.d/prngd stop

# ps -ef | grep prngd
    root 20381     1  0 16:18:33 ?        0:00 /usr/local/sbin/prngd /var/spool/prngd/pool

데몬이 제대로 올라오는지 확인.


# /etc/rc2.d/S99sshd
starting SSHD daemon

# ps -ef | grep sshd
    root   478     1  0 16:16:27 ?        0:02 /usr/local/sbin/sshd

이렇게 띄워져 있다면 실행되고 있습니다.

해 보시고 문제가 있다면 댓글을 남겨주세요~!