ssh问题:ssh_exchange_identification: Connection closed by remote host

启动sshd服务时,报如下的错误信息:

引用
# /usr/local/sbin/sshd
Could not load host key: /usr/local/etc/ssh/ssh_host_rsa1_key
Could not load host key: /usr/local/etc/ssh/ssh_host_rsa_key
Could not load host key: /usr/local/etc/ssh/ssh_host_dsa_key
Disabling protocol version 2. Could not load host key
sshd: no hostkeys available -- exiting.




一、故障原因
从提示信息可以看出,该问题发生的原因是,sshd服务器启动时,没有找到其自身需要的私钥。一般的OpenSSH版本都支持三种协议:rsa1、rsa2和dsa,这在配置文件中决定:

引用
# cat /usr/local/etc/ssh/sshd_config |grep HostKey
# HostKey for protocol version 1
HostKey /usr/local/etc/ssh/ssh_host_rsa1_key
# HostKeys for protocol version 2
HostKey /usr/local/etc/ssh/ssh_host_rsa_key
HostKey /usr/local/etc/ssh/ssh_host_dsa_key


※ 注意,根据配置文件定义的不同,例如:使用源码,还是pkg包安装,这些路径可能会有差异。Linux上rpm定义的配置文件,与SCO上源码安装时配置文件中上述密钥的默认名称和路径都不同。需根据实际情况操作。
解决方法很简单,只要生成上述几个私钥文件,并给予适当的权限即可。

二、解决问题
我们知道,通常在Linux发行版下是不会发生这问题的,因为系统提供的rpm包已经生成这些文件的操作,放在启动前进行了。如果刚安装完系统,第一次启动sshd服务时,会有:

引用
# service sshd start
生成 SSH1 RSA 主机键:                                                                         [确定]
生成 SSH2 RSA 主机键:                                                                         [确定]
正在生成 SSH2 DSA 主机键:                                                                 [确定]
启动 sshd:                                                                                                [确定]


既然这样,我们就可以参考sshd启动脚本来生成相关的密钥了。
你可以查看/etc/init.d/sshd中do_rsa1_keygen()等三个函数的操作,这里不再一一说明。
转换到SCO上,具体的操作步骤就是:

# cd /usr/local/etc/ssh/
# /usr/local/bin/ssh-keygen -q -t rsa1 -f ./ssh_host_rsa1_key -C '' -N ''
# chmod 600 ./ssh_host_rsa1_key
# chmod 644 ./ssh_host_rsa1_key.pub
# /usr/local/bin/ssh-keygen -q -t rsa -f ./ssh_host_rsa_key -C '' -N ''
# chmod 600 ./ssh_host_rsa_key
# chmod 644 ./ssh_host_rsa_key.pub
# /usr/local/bin/ssh-keygen -q -t dsa -f ./ssh_host_dsa_key -C '' -N ''
# chmod 600 ./ssh_host_dsa_key
# chmod 644 ./ssh_host_dsa_key.pub


最后,启动sshd服务即可:

完成后。重启sshd :
service sshd restart     /etc/init.d/sshd restart

# /usr/local/sbin/sshd
# netstat -an|grep 22


问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值