Pat*_*ick 5 c# java sftp jsch sharpssh
我正在考虑使用JSch库(或实际上是它的sharpSSH C#端口)为SFTP设置公钥客户端和服务器身份验证.不幸的是,我找不到关键加载函数使用的文件格式的任何文档:
jsch.addIdentity(filename, passphrase);
jsch.setKnownHosts(filename);
Run Code Online (Sandbox Code Playgroud)
私钥和已知主机文件使用什么文件格式?
JSch使用OpenSSH 密钥文件格式(公钥和私钥).我没有找到这种格式的规范,但你可以使用OpenSSH的ssh-keygen工具将密钥从/转换为其他格式(而Google将展示其他转换/甚至更多格式的工具).
更新:在询问OpenSSH邮件列表并阅读一些RFC之后,看起来OpenSSH的公钥文件包含(对于版本2密钥)RFC 4253(第6.6节)中指定的公钥,只是围绕它进行了base64环绕(和键类型作为前缀,注释字段作为后缀).我还没有找到私钥文件的规范.
不幸的是,JSch的官方文档几乎不存在,但我确实为它编写了一些Javadoc.(虽然似乎没有提到密钥文件格式......我将不得不解决这个问题.)JSch Wiki中还有一个手册,其中包含一个关于公钥认证的页面(也没有提到密钥格式然而: - /).
在已知的主机文件也是在相同的格式OpenSSH客户端的相应的文件.它的格式在OpenSSH的sshd手册页中解释,SSH KNOWN HOSTS FILE FORMAT:
这些文件中的每一行都包含以下字段:标记(可选),主机名,位,指数,模数,注释.字段由空格分隔.
这实际上只适用于SSH 1 RSA密钥.对于SSH 2个键,您有一个类型识别符(ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-dss或ssh-rsa),然后在碱-64编码的形式的关键.(有关授权密钥文件,请参阅同一手册页中的一点内容).(我认为JSch只支持DSA和RSA密钥格式,没有ECDSA.)
请注意,这些文件中的行通常长达数百个字符,您绝对不希望手动键入主机键.而是通过脚本,ssh-keyscan(1)或通过获取/etc/ssh/ssh_host_key.pub并在前面添加主机名来生成它们.ssh-keygen(1)还为〜/ .ssh/known_hosts提供了一些基本的自动编辑,包括删除与主机名匹配的主机并将所有主机名转换为它们的哈希表示.
| 归档时间: |
|
| 查看次数: |
3560 次 |
| 最近记录: |