qt连接不上linux设备

Connecting to host.

img

SSH connection failure.
Unable to negotiate with 192.168.1.18 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss
Device test failed.
在使用qt creator 连接通用linux设备时

解决办法:

方法1. ssh命令指定算法,每次指定比较麻烦


ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa  user@host -p 2222

方法2. 修改ssh配置文件 ~/.ssh/config, 增加配置项,一劳永逸

HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa

no matching host key type found. Their offer: ssh-rsa 问题解决_我不知道也不关心的博客-CSDN博客

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
这个问题可能是由于SSH客户端和服务器之间的主机密钥类型不匹配导致的。你可以尝试以下方法解决这个问题:

1、 在Qt Creator中,打开项目的.pro文件,添加以下内容:

CONFIG += console
CONFIG -= app_bundle
TARGET = your_project_name
TEMPLATE = app

your_project_name替换为你的项目名称。

2、 在项目的主源文件中,添加以下代码:

#include <QCoreApplication>
#include <QProcess>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QProcess process;
    process.start("ssh", QStringList() << "-i" << "/path/to/your/private/key" << "-o" << "StrictHostKeyChecking=no" << "192.168.1.18");
    process.waitForFinished();

    if (process.exitCode() == 0) {
        qDebug() << "连接成功";
    } else {
        qDebug() << "连接失败:" << process.readAllStandardError();
    }

    return a.exec();
}

/path/to/your/private/key替换为你的私钥文件路径。

3、 重新编译并运行项目,检查是否能够成功连接到Linux设备。如果仍然无法连接,请检查你的私钥文件是否正确,以及你的Linux设备是否允许使用SSH连接。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

【以下回答由 GPT 生成】

在Qt Creator连接通用Linux设备时无法连接到设备的问题通常是由于SSH连接失败引起的。解决这个问题的步骤如下:

  1. 检查设备是否已经启用了SSH服务。可以通过运行命令service ssh status来查看SSH服务的状态。如果服务未运行,请使用service ssh start启动SSH服务。

  2. 确认设备的22端口是否打开。可以使用以下命令检查设备上的22端口是否已经开放:sudo iptables -L -n -v | grep 22。如果22端口没有打开,请使用sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT打开该端口。

  3. 检查SSH配置文件是否正确。SSH配置文件通常位于/etc/ssh/sshd_config。确保以下配置项被设置正确:

  4. Port 22:确认SSH服务使用的端口号为22。
  5. RSAAuthentication yes:启用RSA身份验证。
  6. PubkeyAuthentication yes:启用公钥身份验证。
  7. PasswordAuthentication yes:启用密码身份验证。

  8. 确认Qt Creator的SSH设置正确。在Qt Creator的项目设置中,找到“设备”选项卡,确保设备类型设置为“Generic Linux Device”并填写正确的设备IP地址和SSH端口号(默认为22)。

  9. 确保Qt Creator使用的SSH密钥对是正确的。在Qt Creator的项目设置中,找到“SSH秘钥”选项卡,确保选择了正确的SSH密钥对。如果没有密钥对,可以使用以下命令生成密钥对: ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa

运行上述命令后,会在用户的~/.ssh目录下生成SSH密钥对。将公钥(id_rsa.pub)复制到设备上的~/.ssh/authorized_keys文件中。

  1. 重新尝试连接设备。在Qt Creator中点击“连接”按钮,确认是否可以成功连接到通用Linux设备。

如果上述步骤都没有解决问题,可能需要检查设备的网络连接,确保设备和Qt Creator所在的计算机在同一局域网中,并且可以相互访问。如果问题仍然存在,可能需要进一步排查设备的SSH配置或网络设置问题。

请注意,上述解决方案仅供参考,具体操作应根据实际情况进行调整。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^