为什么 SSH 在 shell 中可以登录,但在所有第三方中通过 ssh 隧道登录失败?

为什么 SSH 在 shell 中可以登录,但在所有第三方中通过 ssh 隧道登录失败?

我用来ssh在远程服务器上登录(第一次提示密码)。

在 shell 中,使用以下命令:

ssh [email protected]

效果很好!但是,当我尝试使用 SSH 隧道时,我测试的所有其他数据库软件应用程序(Dbeaver 和 Redis Desktop Manager)都会失败。我选择了我的私钥/home/myuser/.ssh/id_dsa

Redis 桌面管理器中的示例: RDDM

Dbeaver 中的示例: 在此输入图像描述

如果我设置隧道:

ssh [email protected] -L 6379:127.0.0.1:6379 -N

我可以连接到 127.0.0.1:6379,即隧道正在工作。为什么通过第三方这不起作用?

远程服务器运行 CentOS 6,我的桌面运行 Ubuntu 14。

答案1

你在评论中说,

重新启动计算机后,当尝试ssh再次登录时,系统要求我输入密码来解锁id_dsa文件

至少有部分答案。您的其他工具无法解锁私钥,也无法代表ssh-agent它们进行身份验证。您需要从私有证书中删除密码。

语法是:

ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]

正如您在评论中指出的,其实际应用是:

ssh-keygen -p -f ~/.ssh/id_dsa

问题的下一部分是,一些 Java 和 .NET 的第三方库只能处理 RSA ssh 密钥 - 并且(根据我的经验)只能处理一定的密钥长度。 DSA 和 ECDSA 不是选项。

如果没有,~/.ssh/id_rsa则需要创建它,并将公共部分复制到远程主机:

ssh-keygen -t rsa
ssh remoteuser@remotehost 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub

问题的另一部分可能是私钥的格式“错误”并且需要转换。通过简要阅读 Redis 桌面管理器的文档,我认为情况并非如此,但值得仔细检查。更新:看来JSCH - 私钥无效确认密钥应为 OpenSSH 格式 - 这似乎是您已经在使用的格式。

相关内容