SSH 错误处理记录
主机秘钥不匹配
报错信息
<pre> Read from socket failed: Connection reset by peer </pre>
通常,在linux中使用ssh的时候,如果出现这个错误,建议首先去查看log。ubuntu的ssh的log记录在/var/log/auth.log log错误会类似于如下:
<pre> Dec 22 09:43:35 x079-liongao sshd[14892]: error: This private key will be ignored. Dec 22 09:43:35 x079-liongao sshd[14892]: error: bad permissions: ignore key: /etc/ssh/ssh_host_dsa_key Dec 22 09:43:35 x079-liongao sshd[14892]: error: Could not load host key: /etc/ssh/ssh_host_dsa_key Dec 22 09:43:35 x079-liongao sshd[14892]: error: This private key will be ignored. Dec 22 09:43:35 x079-liongao sshd[14892]: error: bad permissions: ignore key: /etc/ssh/ssh_host_rsa_key Dec 22 09:43:35 x079-liongao sshd[14892]: error: Could not load host key: /etc/ssh/ssh_host_rsa_key </pre>
找到问题所在,用如下命令
<pre> ssh-keygen -t dsa -P '' -f /etc/ssh/ssh_host_dsa_key ssh-keygen -t rsa -P '' -f /etc/ssh/ssh_host_rsa_key </pre>
分别把这两个密钥生成就可以正常启动和使用 ssh了 ,其他配置问题请查看配置文件,/etc/ssh/ssh_config 和 /etc/ssh/sshd_config
目录权限问题
报错信息
<pre> Permission denied (publickey) </pre>
出现这个问题不一定能说明公钥不存在,如果检查公钥存在/.ssh/authorized_keys文件中切无误,请检查SSH配置文件,迷钥存放目录权限问题
SSH对公钥、私钥的权限和所有权的要求是非常严格的,总结如下:
- 下面两个目录的所有权必须是user,所属组也应该是user,权限必须为700
<pre> ~/user ~/user/.ssh </pre>
- 公钥文件的所有权必须是user,所属组也应该是user,权限必须为644
<pre> ~/.ssh/authorized_keys </pre>
- 私钥文件的所有权必须是user,所属组也应该是user,权限必须是600
<pre> ~/.ssh/id_rsa </pre>