gpt4 book ai didi

android - JSch:如何使用 ssh-keys ssh 进入服务器

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:41:44 25 4
gpt4 key购买 nike

我想从另一个 ssh 服务器后面 ssh 进入一个服务器。网关服务器需要用户名/密码,我可以做到。我正在使用隧道进入下一台服务器,但这台服务器需要一个 ssh key 。我已经通过 PuTTY 生成了 key ,因此它存在于我的用户名中,但我不确定如何为我的 Java 程序检索它。是配置吗?即 setConfig("userauth.publickey", "com.jcraft.jsch.UserAuthPublicKey") 那么我该如何使用这个或其他东西?文档似乎很少,我很感激任何帮助。我尝试过的任何事情都会给我一个错误:当我连接此 session 时“Auth fail”

谢谢!

我使用的隧道方法是:http://sourceforge.net/apps/mediawiki/jsch/index.php?title=ProxySSH所以感谢写它的人!

对于上下文,我想从我的 Android 手机读取/写入我学校的服务器。

最佳答案

启用public-key authentication ,您必须使用其中一种 JSch.addIdentity 方法。

它们采用 OpenSSH key 格式的公钥和私钥 - 因此请确保以这种格式从 PuTTY 导出它。 (JSch 不理解 PuTTY 的 native 格式,尽管您可以编写一个实现 Identity 接口(interface)的适配器,自行解析)。

添加到 JSch 的身份是全局的,而不是每个 session 。这通常不是问题,因为 JSch 会依次尝试其自身和服务器都支持的所有身份验证方法,并且公钥身份验证通常在密码身份验证之前。

所有身份验证方法都需要一个用户名(通常是要登录的帐户的名称)。

使用公钥身份验证时,公钥必须以某种方式事先可供服务器使用。对于 OpenSSH 的 sshd,公钥应列在 ~/.ssh/authorized_keys 中。 (如果您只有一个公钥,只需将其复制到此文件,如果您有多个公钥(每个公钥都将被允许),每个都应该在一行上。)

所以它应该在设置身份后开箱即用。

如果你想确保第一个 session 使用密码身份验证而第二个(隧道) session 使用公钥,你可以使用每个 session 配置,覆盖全局配置:

tunnelSession.setConfig("PreferredAuthentications", "password");

innerSession.setConfig("PreferredAuthentications", "publickey");

(这些是以逗号分隔的列表,这里每个有一个元素。)

关于 ProxySSH 示例,这是我的(在 JSch 的作者 Atsuhiko Yamanaka 的帮助下)。也许我应该将此信息添加到 Wiki 页面。

关于android - JSch:如何使用 ssh-keys ssh 进入服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7665002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com