我用来ssh
在远程服务器上登录(第一次提示密码)。
在 shell 中,使用以下命令:
ssh [email protected]
效果很好!但是,当我尝试使用 SSH 隧道时,我测试的所有其他数据库软件应用程序(Dbeaver 和 Redis Desktop Manager)都会失败。我选择了我的私钥/home/myuser/.ssh/id_dsa。
Redis 桌面管理器中的示例:
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 格式 - 这似乎是您已经在使用的格式。