ssh遇见的相关问题汇总记录

一、启动ssh服务时发现ssh启动不了

1、查找原因,运行命令查找:

/usr/sbin/sshd -T 

ssh遇见的相关问题汇总记录_第1张图片
2、通过查看资料得出大概原因是,sshd启动的时候会读取配置文件sshd_config内容,然后和代码里面的数组ciphers(文件cipher.c)比较,如果 ciphers 的数组配置与 sshd_config 不一样的话,就会引发 Bad SSH2 cipher spec 的错误。
通过下以命令查看ssh使用了哪些ciphers:

ssh -Q cipher

ssh遇见的相关问题汇总记录_第2张图片
3、打开 /etc/ssh/sshd_config 找到 Ciphers *****那一行改成与上面一致即可。

4、systemctl restart ssh.service 即可正常进行ssh连接。

二、SSH连接失败,报错Host key verification failed

1、原理
当用ssh命令远程连接sshd服务的时候。连接过程是需要认证的,以保证连接的安全和数据传输的加密。客户端ssh连接服务端sshd时,服务端根据自己的私钥生成公钥 (身份验证使用公钥加密算法实现——公钥加密私钥解密),并传送给客户端ssh。客户端ssh命令接收服务端的公钥,(第一次连接时,连接发起人需进行确认,你是否信任这台主机。如果信任则可以连接并将此公钥保存在/root/.ssh/known_hosts文件中,不信任则拒绝连接)。如果连接一旦建立,表示你认同你连接的这台主机,客户端ssh命令会随机生成一个对称秘钥(这个秘钥会使用服务端的公钥加密并将这个对称秘钥发送到服务端),之后客户端和服务端就可以用这个对称秘钥进行数据加密传送。因此如果远程主机发过来的公钥与当前/root/.ssh/known_hosts文件中保存的记录不一致,则认为远程主机有问题,并拒绝连接,“Host key verification failed”。
2、解决方法

  1. 直接将/root/.ssh/known_hosts 文件删除即可。或者你将对应的记录删除即可(根据ip查就行)。之后再次ssh连接。
  2. vi /etc/ssh/ssh_config 修改下方选项,则不再校验服务端主机身份,输入账号密码直接连接。注意这个不建议使用,不安全。
    StrictHostKeyChecking no

你可能感兴趣的:(ssh遇见的相关问题汇总记录)