sshd2配置指要 

#sshd是商业化的ssh守护程序,漏洞比openssh少; 
#下载 
#ftp://ftp.ssh.com/pub/ssh 
#linux/freebsd下的服务端程序源码; 
ftp://ftp.ssh.com/pub/ssh/ssh-3.2.2.tar.gz 
#windows下的ssh客户端,一般来说,为了避免问题,尽量使用相同版本的服务端和客户端; 
ftp://ftp.ssh.com/pub/ssh/SSHSecureShellClient-3.2.2.exe 
1.服务端安装(linux为例) 
mkdir -p /usr/local/src/distfiles 
cd /usr/local/src/distfiles 
wget ftp://ftp.ssh.com/pub/ssh/ssh-3.2.2.tar.gz 
tar xfz ssh-3.2.2.tar.gz -C .. 
cd ../ssh-3.2.2 
./confiure --help 
./configure --without-ssh-agent1-compat --disable-debug --without-x11-security --without-internal-ssh1-compat --with-ssh-connection-limit=50 --without-ipv6 --with-libwrap 
make && make install 
#安装程序自动做了 
ln -s /usr/local/sbin/sshd2 /usr/local/sbin/sshd 
#new key 
#rm /etc/ssh2/hostkey* 
#/usr/local/bin/ssh-keygen2 –P /etc/ssh2/hostkey 
#使用新的sshd替代系统的openssh‘s sshd 
#系统默认的sshd启动脚本在/etc/init.d/sshd 
cp /etc/init.d/sshd /etc/init.d/sshd.openssh 
#vi /etc/init.d/sshd 
#!/bin/bash 
# source function library 
. /etc/rc.d/init.d/functions 
# pull in sysconfig settings 
#[ -f /etc/sysconfig/sshd ] && . /etc/sysconfig/sshd 
RETVAL=0 
prog="/usr/local/sbin/sshd" 
# Some functions to make the below more readable 
KEYGEN=/usr/local/bin/ssh-keygen2 
SSHD=/usr/local/sbin/sshd 
PID_FILE=/var/run/sshd.pid 
start() 
        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 
                ;; 
        status) 
                status $SSHD 
                RETVAL=$? 
                ;; 
        *) 
                echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}" 
                RETVAL=1 
esac 
exit $RETVAL 
#end of /etc/init.d/sshd 
#FreeBSD版本 
#!/bin/sh 
#vi /usr/local/sbin/sshd2.sh 
case "$1" in 
  
start) 
        if [ -x /usr/local/sbin/sshd2 ]; then 
                /usr/local/sbin/sshd2 && echo . && echo 'SSHD2 server started.'                                           
        fi 
        ;; 
  
stop) 
        killall -9 mpd && && echo . && echo 'SSHD2 server stopped.'      
        ;; 
restart) 
        echo . 
        echo Restart SSHD2 server ......      
        $0 stop 
        sleep 5 
        $0 start 
        ;; 
*) 
        echo "$0 start | stop | restart" 
        ;; 
  
esac 
#end of /usr/local/sbin/sshd2.sh 
#设置可执行权限 
chmod 700 /usr/local/sbin/sshd2.sh 
#开机自动启动 
ln -s /usr/local/sbin/sshd2.sh /usr/local/etc/rc.d 
rc.conf里指定sshd_enable="NO" 
2.windows客户端配置; 
#使用windows下的SSH Secure Shell客户端连接 
#要求同样的版本3.20 
#首先使用密码验证方式登录,然后在SSH Secure Shell客户端,菜单->edit->setting 
#出来对话框:选择Global Settings ->User Authentication ->Keys 
#列出当前已经有的key,选择Generate New ...,出来向导 
#在key类型处建议使用2048位,DSA/RSA都行,DSA是开放源码的不要钱,RSA是商业算法,严格意义上是要付费的; 
#RSA的加密更强一点; 
#下一步开始创建密匙文件,根据你的机器性能差别,可能需要几分钟; 
#完成后,输入保存密匙的文件名,说明,以及一个额外的加密字,这个加密字是自定义的,不需要跟你的密码相同; 
#完成后,然后在SSH Secure Shell客户端,菜单->edit->setting 
#出来对话框:选择Profile Setting -> Authentication,在列出的Authencation methods中(一般只有Public Key和Password); 
#选择password,点Authencation methods右边的红叉叉,删除Password验证方式; 
#ok,现在你只能使用Public Key验证了; 
3.附加配置,在服务器上限制只能用key验证; 
#vi /etc/ssh2/sshd2_config 
## Authentication 
## publickey and password allowed by default 
        AllowedAuthentications          publickey 
#此处限制只能使用key验证;         
#       AllowedAuthentications          publickey,password 
4.在linux里生成登录用的key 
#登录成为某用户 
ssh-keygen2 -b 2048 
#会让用户输入加密字,跟密码不同; 
#自动生成下列文件 
#私人密匙,用于在linux里登录其他linux系统用; 
Private key saved to $HOME/.ssh2/id_dsa_2048_a 
echo "IdKey id_dsa_2048_a" >$HOME/.ssh2/identification 
#identification指定从本机登录其他系统时使用的私人密匙; 
#公开密匙,用于在其他系统登录本机用; 
Public key saved to $HOME/.ssh2/id_dsa_2048_a.pub 
echo "key id_dsa_2048_a.pub" >$HOME/.ssh2/authorization 
#authorization指定从别的系统登录本机时使用的public key; 
#如果你要从windows登录本机; 
#指定客户端可以使用这个key验证; 
把上述两个文件ftp或邮件传送回windows客户机里,导入到ssh客户端就可以用该public key登录了; 
#如果你要从本机(linux)用ssh2以key方式登录其他ssh2主机; 
#把公开密匙id_dsa_2048_a.pub传送到该主机你的主目录下的.ssh2目录里(如果不存在该目录,要先建立该目录); 
#在$HOME/.ssh2/authorization文件里添加一个key记录 
echo "key id_dsa_2048_a.pub" >>$HOME/.ssh2/authorization 
#现在你可以ssh2 remote_host了 
#ssh2会提示你输入加密字;