Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1790963
  • 博文数量: 787
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5015
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-22 15:17
文章分类

全部博文(787)

文章存档

2008年(787)

我的朋友

分类:

2008-09-25 16:08:57

用OpenSSH的人都知ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告,避免你受到DNS Hijack之类的攻击。

不过known_hosts的内容一些只是以纯文本方式存放。如果你的帐号被人成功入侵,他可以由known_hosts直接得知你到访过的计算机列表。为减低出现类似情况的机会。OpenSSH在4.0p1引入了 Hash Known Hosts功能,在known_hosts中把访问过的计算机名称或IP地址以hash方式存放,令入侵都不能直接知道你到访过那些计算机。这项新项功能缺省是关闭的,要你手动地在ssh_config加上"HashKnownHosts yes"才会被开启。不过Debian Testing就缺省开启了个功能。

然而,偶然一些计算机的ssh公钥是合理地被更动。虽然遇到这些情况OpenSSH会发出惊告并禁止你进入该计算机。以往当我们确定该次 ssh公钥被更动没有可疑时,我们用文字编辑器开启known_hosts,把相关的公钥记录删掉就可以了。但现在因为所有计算机名称或IP地址都被 hash了,我们很难知道那行是相关计算机的公钥。当然我们可以把整个known_hosts删除,但我们会同时失去其他正常计算机的ssh公钥。

事实上OpenSSH在工具ssh-keygen加了三个选项,协助你管理hash了的known_hosts。你可以用"ssh-keygen -F 计算机名称"找出相关的公钥:

ssh-keygen -F

如果你想更新某计算机的公钥,可以先打"ssh-keygen -R 计算机名称"删除该计算机的公钥,然后再"ssh 计算机名称"再进入该计算机,ssh自然会重新下载新的公钥。

如果你的known_hosts 档案仍未被hash,你可以打"ssh-keygen -H"      
--------------------next---------------------
复制内容到剪贴板
代码:
purge()
{
    usage()
    {
        echo "*** cleanup the specified host key cache in .ssh/known_hosts ***"
        echo "Usage: purge 16.18"
        #return # cannot return in a built-in function
    }

    [ $# -lt 1 ] || [ $# -gt 2 ] || [ ! `echo $1 | sed -n '/\./p'` ] && usage && return

    unset BADHOST && BADHOST="192.168.$1"
    [ "${1%%.*}" == "15" ] || [ "${1%%.*}" == "88" ] &&  BADHOST="172.16.$1"
    [ "${1%%.*}" == "10" ] || [ "${1%%.*}" == "8" ] &&  BADHOST="10.10.$1"
#四个特殊内网网段的例外:
#      10.10.10.0/24 10.10.8.0/24 172.16.15.0/24  172.16.88.0/24

    [ "x$BADHOST" != "x192.168." ] && {
        echo -n "Remove $BADHOST from $HOME/.ssh/known_hosts "
        sed  -e "/^$BADHOST\ /d" $HOME/.ssh/known_hosts > $HOME/.ssh/known_hosts.purged
        install -m 600 $HOME/.ssh/known_hosts.purged $HOME/.ssh/known_hosts
        echo successfully!
    }
}

--------------------next---------------------

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