- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在考虑使用 JSch 库(或者实际上是它的 sharpSSH C# 端口)为 SFTP 设置公钥客户端和服务器身份验证。不幸的是,我找不到任何关于关键加载函数使用的文件格式的文档:
jsch.addIdentity(filename, passphrase);
jsch.setKnownHosts(filename);
私钥和已知主机文件使用什么文件格式?
最佳答案
JSch 使用 OpenSSH key 文件 格式(用于公钥和私钥)。我没有找到这种格式的规范,但你可以使用 OpenSSH 的 ssh-keygen将 key 从/转换为其他格式的工具(谷歌将展示其他从/转换为更多格式的工具)。
更新:在询问 OpenSSH 邮件列表并阅读一些 RFC 之后,OpenSSH 的公钥文件似乎包含(对于版本 2 key )RFC 4253 (section 6.6) 中指定的公钥。 ,只是用 base64 环绕它(键类型作为前缀,注释字段作为后缀)。我仍然没有找到私钥文件的规范。
不幸的是,JSch 的官方文档几乎不存在,但我确实写了一些 Javadocs为了它。 (虽然似乎没有提到 key 文件格式......我必须解决这个问题。)还有 Manual在 JSch Wiki 中,包含一个关于 public key authentication 的页面(也没有提到 key 格式 :-/)。
已知主机文件的格式也与OpenSSH客户端的相应文件相同。 OpenSSH's sshd manual page 中解释了它的格式, SSH 已知主机文件格式部分:
Each line in these files contains the following fields: markers(optional), hostnames, bits, exponent, modulus, comment. The fields areseparated by spaces.
这实际上只适用于 SSH 1 RSA key 。对于 SSH 2 key ,您有一个类型标识符(ecdsa-sha2-nistp256
、ecdsa-sha2-nistp384
、ecdsa-sha2-nistp521
、 ssh-dss
或 ssh-rsa
),然后是 base-64 编码形式的 key 。 (请参阅同一手册页中的授权 key 文件)。 (我认为 JSch 只支持 DSA 和 RSA key 格式,不支持 ECDSA。)
Note that the lines in these files are typically hundreds of characterslong, and you definitely don't want to type in the host keys by hand.Rather, generate them by a script, ssh-keyscan(1) or by taking/etc/ssh/ssh_host_key.pub and adding the host names at the front.ssh-keygen(1) also offers some basic automated editing for~/.ssh/known_hosts including removing hosts matching a host name andconverting all host names to their hashed representations.
关于c# - JSch 和 sharpSSH 的主要文件格式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8114903/
我正在使用 jsch 进行 sftp 文件传输。当我通过设置缓冲区大小 512(-B 选项)sftp B 512 [sftp 服务器名称] 并调用 put 命令使用 sftp 命令发送文件时,我可以以
我正在尝试使用 JSch 连接到服务器,然后执行交互式 su 命令。 你能告诉我我错过了什么吗?这些东西每次都会挂起,我认为这种行为没有任何理由。特别是在发送密码之前,我专门等待密码字符串(实际上是
在 JSch 中每个 session 可以打开多少个 channel 是否有限制?我试图打开的 channel 是“ChannelShell”类型 我收到“com.jcraft.jsch.JSchEx
我正在尝试从我的 android 手机通过 ssh 连接到 ssh 服务器。 我的进口线: import com.jcraft.jsch.*; 剩下的就在这里 try{
尝试使用 ssh key 身份验证连接到主机。下面是我的代码: package com.mkyong.common; import com.jcraft.jsch.Channel; import co
我正在将一些 java 代码移植到 GRAILS 框架中,但在导入库 (jcraft) 时不断收到此错误: import com.jcraft.jsch.ChannelSftp; import com
我编写了一个连接到远程 LINUX 计算机并执行命令的程序。我使用 jsch-0.1.42.jar 文件连接到远程计算机。我的程序运行良好并返回输出。现在我想调用方法,该方法是使用以下代码从 JSP
当使用 jsch 版本 0.1.51 连接到远程主机时,我们偶尔会在 ChannelExec 上调用 Channel.connect() 时遇到以下异常。 com.jcraft.jsch.JSchEx
GerritTrigger插件以前工作得很好,但从一个我无法确定的时间点来看,连接永远无法建立,错误消息如下:。Gerit触发器版本:2.39.0。SSH密钥是通过ssh-keygen生成的。我注意到
我正在尝试连接到我的一个 unix 服务器,但由于上述错误而失败,请有人帮忙。 JSch jsch = new JSch(); java.util.Properties configuration =
我使用他下面的代码连接到 ssh 服务器。 JSch jsch = new JSch(); Session session = jsch.getSession("username", "ip", po
我有运行 ssh 服务器的 windows 机器。我知道那台机器上的路径。让它成为 D:/Folder1/Folder2 .我正在使用 JSCH 创建 sftp channel 。但是当我尝试 cd
我正在使用 Jsch 连接 sshd 服务器,我是这方面的新手。我成功发送了非控制字符,例如 a、b ...等等。但是,我需要发送“Esc”键命令(控制字符)来执行特定任务。根据link ,我尝试了几
我无法将一台unix服务器的安全服务器连接到另一台unix服务器。通过ssh从putty我可以轻松连接,但从jsch连接时出现以下错误。 成功putty步骤->在putty中连接server1->成功
我的命令有第一部分,其结果通过管道传输到第二部分。当我运行代码时,我总是返回第一部分的结果,而第二部分应用的过滤器显然没有执行。 所以我得到: CONTAINER ID IMAGE COMMAN
我正在尝试使用 JSCH 库通过 SSH 执行多个命令。我面临一个奇怪的问题。当我尝试在 Eclipse 中运行该程序时,代码完成了执行,但命令(mkdir test)未在服务器中执行但是当我一步步调
我正在使用 JSCH 通过 SSH 访问主机,然后启动一些命令。 主机未使用“通用”操作系统,因为它是 BNG:http://en.wikipedia.org/wiki/Border_Network_
好吧,我收到 UnknownHostKey 异常。我不想像这篇文章 com.jcraft.jsch.JSchException: UnknownHostKey 那样使用 StrictHostKeyCh
我正在使用 JSch 执行 sftp get 操作。当我使用 main 方法运行测试时,一切都很好,但使用单元测试时我遇到了问题。错误如下: java.lang.RuntimeException: c
我正在使用 Jsch lib 访问网络中的路由器,但在某些路由器中存在登录横幅。所以我需要读取输出,识别横幅,将其删除并仅获取命令的输出。我正在执行模式下使用 channel 。我认为的一个解决方案是
我是一名优秀的程序员,十分优秀!