项目场景:
一个双系统的机器,windows10和Ubuntu18.04.2,我想通过finshell连接Ubuntu,
问题描述
连接但是一直报错,ssh已经开启,如下
Session.connect: java.io.IOException: End of IO Stream Read
在ubuntu18.04.2中sshd -t报下面的错误
Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Could not load host key: /etc/ssh/ssh_host_ed25519_key
原因分析:
/etc/ssh下没有ssh_host文件,sshd_config配置文件有问题
解决方案:
这个错误通常是因为SSH配置文件中指定的密钥文件不存在或者权限不正确。
可以按照以下步骤检查和修复:
1. 确认 `/etc/ssh` 目录下确实存在三个密钥文件: `ssh_host_rsa_key`、`ssh_host_ecdsa_key` 和 `ssh_host_ed25519_key`。使用 `ls` 命令检查:
```
ls /etc/ssh/
```2. 确认这些文件的权限正确。这些文件应该只能由 root 用户读取:
```
sudo chmod 600 /etc/ssh/ssh_host_*
sudo chown root:root /etc/ssh/ssh_host_*
```3. 如果密钥文件确实不存在,可以使用以下命令重新生成:
```
sudo ssh-keygen -A
```这个命令会重新生成所有默认的 SSH 密钥文件。
4. 确认 sshd 服务已经启动。可以使用以下命令检查:
```
sudo service ssh status
```如果服务没有启动,可以使用以下命令启动:
```
sudo service ssh start
```或者重新启动:
```
sudo service ssh restart
```
如果你在执行了 `sudo ssh-keygen -A` 后仍然无法通过 SSH 连接到远程服务器,显示认证失败,你可以尝试以下步骤:
1. 检查 SSH 服务是否已经启动。在 Ubuntu 上,可以使用以下命令来检查 SSH 服务的状态:
```
sudo service ssh status
```如果 SSH 服务没有启动,可以使用以下命令来启动 SSH 服务:
```
sudo service ssh start
```2. 检查 SSH 配置文件是否正确。在 Ubuntu 上,SSH 配置文件位于 `/etc/ssh/sshd_config`。你可以检查该文件是否包含以下行:
```
PubkeyAuthentication yes
PasswordAuthentication yes
```如果这两行是注释掉的(前面有 # 符号),则需要将其取消注释。
```sudo service ssh restart
完成上述步骤后,你应该可以通过 SSH 连接到远程服务器了。