Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1760408
  • 博文数量: 150
  • 博客积分: 660
  • 博客等级: 上士
  • 技术积分: 2480
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-08 11:39
文章分类

全部博文(150)

文章存档

2019年(4)

2018年(36)

2017年(53)

2016年(7)

2015年(3)

2014年(3)

2013年(27)

2012年(2)

2011年(1)

2006年(1)

2005年(13)

分类:

2005-11-01 16:47:11

Solaris9自带的ssh工具不是很好用,至少文件传送速度和openssh比起来要差很远,所以只好手工diy了^_^

openssh4.1p1在sparc solaris9下的安装

所有软件均来自

1. 确认所需软件包

源包地址
The sources for these different programs are on sunfreeware.com or you can go to their home pages at

zlib
perl
prngd
openssl
openssh
egd
ftp://ftp.porcupine.org/pub/security/index.html tcp_wrappers

从sunfreeware下载的安装包
openssh-4.1p1-sol9-sparc-local.gz
openssl-0.9.7g-sol9-sparc-local.gz
tcp_wrappers-7.6-sol9-sparc-local.gz (optional, but recommended)
(unless you are using IPV6 - see the tcp_wrappers listing for details on this issue)
zlib-1.2.1-sol9-sparc-local.gz
perl-5.8.5-sol9-sparc-local.gz (optional)
prngd-0.9.25-sol9-sparc-local.gz (optional)
egd-0.8-sol9-sparc-local.gz (optional)
libgcc-3.3-sol9-sparc-local.gz     (如果没有安装gcc,就必须装这个)

2. 安装下载的软件包

With the files downloaded, go to the directory where you put them and run

# gunzip openssh-4.1p1-sol9-sparc-local.gz

# gunzip openssl-0.9.7g-sol9-sparc-local.gz

# gunzip zlib-1.2.2-sol9-sparc-local.gz

# gunzip libgcc-3.3-sol9-sparc-local.gz  (if you don't have gcc 3.3.2 installed)

# gunzip tcp_wrappers-7.6-sol9-sparc-local.gz (again optional)


and optionally for the other packages.  Then run as root

# pkgadd -d openssh-4.1p1-sol9-sparc-local

# pkgadd -d openssl-0.9.7g-sol9-sparc-local

# pkgadd -d zlib-1.2.2-sol9-sparc-local

# pkgadd -d libgcc-3.3-sol9-sparc-local  (if you don't have gcc 3.3.2 installed)

# pkgadd -d tcp_wrappers-7.6-sol9-sparc-local (optional)

可选的那些软件包也装了,安装过程同上

3. sshd用户的安全设定

# mkdir /var/empty
# chown root:sys /var/empty
# chmod 755 /var/empty
# groupadd sshd
# useradd -g sshd -c 'sshd privsep' -d /var/empty -s /bin/false sshd

增加了一个系统用户sshd,预备来启动sshd进程,sshd用户的home目录为/var/empty只有root用户才有权限

4. sshd的系统启动关闭脚本的设置

solaris9 自带的sshd启动关闭脚本已经非常好了,只要略加改造即可使用新安装的openssh4.1p1

solaris9 自己的ssh目录分布如下

/etc/ssh         ;ssh 和sshd的配置文件以及密匙文件
/usr/lib/ssh     :sshd等server端程序文件
/usr/bin/ssh     :ssh等client端程序文件

openssh4.1p1的程序包安装以后的目录分布

/usr/local/etc   : ssh 和sshd的配置文件以及密匙文件
/usr/local/sbin  : sshd等server端程序文件
/usr/local/bin   : ssh等client端程序文件

根据上面的分析即可将原有的sshd文件改造成如下

#!/sbin/sh
#
# Copyright (c) 2001 by Sun Microsystems, Inc.
# All rights reserved.
#
# ident "@(#)sshd       1.1     01/09/19 SMI"
#
# If sshd is configured (/etc/ssh/sshd_config exists and is readable),
# the start it up.
# Checks to see if RSA, and DSA host keys are available
# if any of these keys are not present, the respective keys are created.

KEYDIR=/usr/local/etc                       #将以前的/etc/ssh 修改为/usr/local/etc
KEYGEN="/usr/local/bin/ssh-keygen -q"       #将以前的/usr/bin/修改为/usr/local/bin
PIDFILE=/var/run/sshd.pid

case $1 in
'start')
        if [ -x /usr/local/bin/ssh-keygen ]; then             # 将以前的/usr/bin/修改为/usr/local/bin
                if [ ! -f "$KEYDIR/ssh_host_rsa_key" ]; then
                        echo "Creating new RSA public/private host key pair"
                        $KEYGEN -f $KEYDIR/ssh_host_rsa_key -t rsa -N ''
                fi

                if [ ! -f "$KEYDIR/ssh_host_dsa_key" ]; then
                        echo "Creating new DSA public/private host key pair"
                        $KEYGEN -f $KEYDIR/ssh_host_dsa_key -t dsa -N ''
                fi    
        fi

        [ -x /usr/local/sbin/sshd ] && /usr/local/sbin/sshd &       #将以前的/usr/lib/ssh/修改为/usr/local/sbin
        ;;
'stop')
        #
        # If we are switching Run level downwards then we disconnect
        # all connections.
        #
        # Otherwise we just kill the master daemon that is listening
        # and leave the connections active
        if [ -z "$_INIT_RUN_LEVEL" ]; then
                set -- `/usr/bin/who -r`
                _INIT_RUN_LEVEL="$7"
                _INIT_PREV_LEVEL="$9"
        fi
       
        if [ $_INIT_RUN_LEVEL -lt $_INIT_PREV_LEVEL ]; then
                /usr/bin/pkill -u 0 -x sshd
        fi
        if [ -f "$PIDFILE" ]; then
                /usr/bin/kill -TERM `/usr/bin/cat $PIDFILE`
        fi
        ;;

'restart')
        if [ -f "$PIDFILE" ]; then
                /usr/bin/kill -HUP `/usr/bin/cat $PIDFILE`
        fi
        ;;
*)
        echo "Usage: $0 { start | stop }"
        exit 1
        ;;
esac   

5. 原有的 ssh相关文件的善后处理工作

可以删除原有的sshd软件包,也可改名处理,这次是改名处理
 # cd /usr/bin
 # mv ssh-add ssh-add.old
 # ln -s /usr/local/bin/ssh-add ssh-add
 # mv ssh-agent ssh-agent.old
 # mv ssh-keygen ssh-keygen.old
 # ln -s /usr/local/bin/ssh-agent ssh-agent
 # ln -s /usr/local/bin/ssh-keygen ssh-keygen    
 # ln -s /usr/local/bin/ssh-keyscan ssh-keyscan
 # mv /usr/bin/sftp /usr/bin/sftp.od
 # ln -s /usr/local/bin/sftp /usr/bin/sftp

sshd文件是通过sshd脚本的来启动的,所以没有改动。

可能openssh4.1p1的编译成安装包默认就认为sshd_config和ssh_config文件就在/usr/local/etc,所以以前的/etc/ssh文件也没有改名,只是
再也用不到了。

6. tcp_wrappers 的设置工作

其实就是设置/etc/hosts.allow和/etc/hosts.deny,文件格式如下:
sshd: ALL

规则:如果hosts.allow和hosts.deny存在,只有符合在hosts.allow里面的条目才能登陆。

7. 启用新的openssh4.1p1

kill -9 杀掉 老的进程,/etc/init.d/sshd start开始新的sshd进程

8. 主要参考了

9. 编辑sshd_config 中得条目只允许ssh2协议

    Protocol 2
   

阅读(3234) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~