我正在运行一个Java程序,其中使用Java SFTP将文件从一个文件夹传输到另一个文件夹。我遇到的问题是我在Java SFTP(使用JSch)中遇到以下错误:
C:\ Oracle \ Middleware \ Oracle_Home \ oracle_common \ jdk \ bin \ javaw.exe-服务器-classpath C:\ JDeveloper \ mywork \ Java_Hello_World.adf; C:\ JDeveloper \ mywork \ Java_Hello_World \ Client \ classes; C:\ Users \ ADMIN \ Downloads \ jsch-0.1.53.jar -Djavax.net.ssl.trustStore = C:\ Users \ IBM_AD〜1 \ AppData \ Local \ Temp \ trustStore5840796204189742395.jks FileTransfer com.jcraft.jsch.JSchException:UnknownHostKey: 127.0.0.1。RSA密钥指纹为com.jcraft.jsch.Session.checkHost(Session.java:a2:39:3f:44:88:e9:1f:d7:d1:71:f4:85:98:fb:90:dc 797)在com.jcraft.jsch.Session.connect(Session.java:342)在com.jcraft.jsch.Session.connect(Session.java:183)在FileTransfer.main(FileTransfer.java:33)退出进程退出代码0。
以下是我到目前为止的代码:
FileTransfer fileTransfer = new FileTransfer();
JSch jsch = new JSch();
try {
String host = "127.0.0.1";
int port = 22;
String user = "user";
Session session = jsch.getSession(user, host, port);
session = jsch.getSession("username", "127.0.0.1", 22);
session.connect(); // bug here , java.net.ConnectException
ChannelSftp sftp = null;
sftp = (ChannelSftp)session.openChannel("sftp") ; //channel;
//extra config code
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
// end extra config code
sftp.rename("C:\\Users\\ADMIN\\Desktop\\Work\\ConnectOne_Bancorp\\Java_Work\\SFTP_1\\house.bmp", "C:\\Users\\ADMIN\\Desktop\\Work\\ConnectOne_Bancorp\\Java_Work\\SFTP_2\\house.bmp");
session.disconnect();
} catch (JSchException e) {
e.printStackTrace();
} catch (SftpException e) {
e.printStackTrace();
} //end-catch
我的Cygwin已设置好,并检查netstat -a -b了它的运行(带有)。
你正在尝试通过将设置StrictHostKeyChecking
为来跳过主机密钥检查no。
但是你必须在检查之前(即在之前)执行此操作session.connect()
。
无论如何,除非你不关心安全性,否则永远不要这样做。主机密钥检查可以保护你免受中间人攻击。
而是设置一个预期的主机密钥,以便JSch对其进行验证。
例如:
JSch.setKnownHosts
提供类似.ssh/known_hosts
文件的路径的调用。
要生成.ssh/known_hosts-like
文件,可以使用ssh-keyscanOpenSSH
中的命令。如果从* nix
服务器连接,则应该具有可用的命令,只需运行
ssh-keyscan example.com > known_hosts
格式如下:
example.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA0hVqZOvZ7yWgie9OHdTORJVI5fJJoH1yEGamAd5G3werH0z7e9ybtq1mGUeRkJtea7bzru0ISR0EZ9HIONoGYrDmI7S+BiwpDBUKjva4mAsvzzvsy6Ogy/apkxm6Kbcml8u4wjxaOw3NKzKqeBvR3pc+nQVA+SJUZq8D2XBRd4EDUFXeLzwqwen9G7gSLGB1hJkSuRtGRfOHbLUuCKNR8RV82i3JvlSnAwb3MwN0m3WGdlJA8J+5YAg4e6JgSKrsCObZK7W1R6iuyuH1zA+dtAHyDyYVHB4FnYZPL0hgz2PSb9c+iDEiFcT/lT4/dQ+kRW6DYn66lS8peS8zCJ9CSQ==
并known_hosts在你的JSch代码中引用生成的文件。
如果你使用的是Windows,则可以ssh-keyscan
从Win32-OpenSSH
项目或Windows
的Git
获取Windows
版本。
致电JSch.getHostKeyRepository().add()
以提供期望的主机密钥(例如,作为其他凭据的硬编码)。
问题内容: 它很好用,但是我希望它返回一个包含所有字符串的数组,而不是最后一个元素返回一个字符串。 任何想法如何做到这一点? 问题答案: 因此,你想构建一个XML解析器来解析这样的RSS feed。 现在,你可以使用两个SAX实现。你可以使用org.xml.sax或android.sax实现。在发布简短的示例后,我将解释两者的优点和缺点。 android.sax Implementation 让我
问题内容: 它很好用,但是我希望它返回一个包含所有字符串的数组,而不是最后一个元素返回一个字符串。 任何想法如何做到这一点? 问题答案: 因此,你想构建一个XML解析器来解析这样的RSS feed。 现在,你可以使用两个SAX实现。你可以使用org.xml.sax或android.sax实现。在发布简短的示例后,我将解释两者的优点和缺点。 android.sax实现 让我们从实现开始。 你首先必须
C:\Oracle\Middleware\Oracle_Home\Oracle_Common\jdk\bin\javaw.exe-server-classpath C:\jdeveloper\mywork\java_hello_world.adf;C:\jdeveloper\mywork\java_hello_world\client\classes;C:\users\admin\download
根据这篇博文,我读过更好的方法是用parcelable而不是seralisable解析http://blog.robinchutaux.com/blog/a-smart-way-to-use-retrofit/ 但是如何使用Parceler库(https://github.com/johncarl81/parceler)自定义解析? 在GSON库中,我们可以这样做: 并像这样配置GsonBuild
问题内容: 我正在使用golang,并且尝试从mysql读取时间,并且遇到以下错误。 我得到的错误是 我怎样才能解决这个问题? 问题答案: 假设您正在使用,则可以通过添加到连接字符串中来要求驱动程序将DATE和DATETIME自动扫描到。 参见https://github.com/go-sql-driver/mysql#timetime- support 示例代码: 请注意,这适用于,但不适用于。
问题内容: 在实现代理服务器时,我将HTTP请求作为字符串发送,如下所示: GET http:// localhost:54321 / x HTTP / 1.1 主机:localhost:54321 缓存控制:无缓存 是否有内置的类来解析此请求? 问题答案: 我对这种解析的内置支持一无所知。如果您确实需要这样的解析器,则可以签出以下库: http //hc.apache.org/index.htm