开启SSHD服务时报错解决方法

文章来源:https://www.yuque.com/hhun/code/sshd_no_hostkeys_available

在使用Putty等工具对Ubuntu进行ssh连接时候,常出现无法连接报错情况。

这时需看日志文件 /var/log/auth.log

在开启SSHD服务时报错:

sshd re-exec requires execution with an absolute path

启动SSHD

/usr/sbin/sshd

用绝对路径启动,也报错如下:

Could not load host key: /etc/ssh/ssh_host_key

Could not load host key: /etc/ssh/ssh_host_rsa_key

Could not load host key: /etc/ssh/ssh_host_dsa_key

Disabling protocol version 1. Could not load host key

Disabling protocol version 2. Could not load host key

sshd: no hostkeys available — exiting

通常这种提示信息是由于在 /ect/ssh 下没有这两个key。

可以在终端新建这两个key解决问题。

解决方法

# 新建ssh_host_dsa_key文件
ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
# 此命令会让用户输入passphrase建立key,可以输入自己密码或回车。

# 新建ssh_host_rsa_key文件
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
# 此命令会让用户输入passphrase建立key,可以输入自己密码或回车 。

# 重启ssh
service ssh restart

如果上述两个文件存在,仍然出现这个错误,那么试试 chmod 600 上述两个文件。

之后应该可以解决。

注:若有新问题可以在 /etc/ssh/sshd_config 内更改配置信息。

配置文件

vim /etc/ssh/ssh_config   #编辑服务端主配置文件

PasswordAuthentication yes                  #启用密码验证
PubkeyAuthentication yes                    #启用密钥对验证
AuthorizedKeysFile .ssh/authorized_keys 		#指定公钥库文件

5.png


ssh_config和sshd_config配置文件区别:

远程管理Linux系统基本上都要使用到ssh,原因很简单:telnet、FTP等传输方式是?以明文传送用户认证信息,本质上是不安全的,存在被网络窃听的危险。

SSH(Secure Shell)目前较可靠,是专为远程登录会话和其他网络服务提供安全性的协议。

利用SSH协议可以有效防止远程管理过程中的信息泄露问题,透过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。

ssh_config和sshd_config都是ssh服务器的配置文件,二者区别在于,前者是针对客户端的配置文件,后者则是针对服务端的配置文件。两个配置文件都允许你通过设置不同的选项来改变客户端程序的运行方式。