标签: jsch

有没有办法用JSch禁用已知的主机检查?

我试图将JSch和SSH的轮胎从Java本地连接到远程(Solaris)主机.我通常使用PuTTy,每次我第一次连接到某个地方时都会提示我一个未知主机的提示,然后我说是,它不再是因为它在Win7注册表中存储已知主机.但JSch期望一个known_hosts文件,我不知道如何制作它.我可以稍后调查一下,但就目前而言,我宁愿跳过这一步.有人知道它是否可行以及如何?

java ssh jsch

15
推荐指数
1
解决办法
7342
查看次数

简单的SSH连接JSch

我试图通过这个简单的例子来创造一些东西:

SSH,使用Android执行远程命令

我只是想看看我是否可以使用SSH从我的Android手机连接到Linux服务器,但它不起作用...

这是我的主要代码:

package com.example.ssh;

import java.util.Properties;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import android.os.Bundle;
import android.app.Activity;

 public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    try
    {
        JSch jsch = new JSch();
          Session session = jsch.getSession("root","192.168.0.26", 22);
          session.setPassword("xxxxx");

          // Avoid asking for key confirmation
          Properties prop = new Properties();
          prop.put("StrictHostKeyChecking", "no");
          session.setConfig(prop);

          session.connect();

    }
    catch (Exception e)
    {
      System.out.println(e.getMessage());
    }
}
}
Run Code Online (Sandbox Code Playgroud)

我做错了什么 ?我没有错误消息,我的Linux上没有看到任何SSH连接.我添加了库jsch和jzlib.我没有问题与putty会话连接.

编辑1:事实上,我发现了一个错误,解释了为什么即使我不知道如何解决问题它也不起作用.错误是:

android.os.NetworkOnMainThreadException

所以它似乎意味着应用程序无法在其主线程上执行网络操作...

ssh android jsch

15
推荐指数
3
解决办法
3万
查看次数

JSCH - 无效的私钥

我正在使用netbeans 7.2运行JDK 1.7和Windows 7.我使用putty-keygen生成了SSH私钥和公钥对(SSH2-2048位).私钥没有任何密码.我现在正尝试使用SFTP连接到其中一台主机.但是当我传递私钥(ppk)来设置Identity时,代码返回无效的私钥错误.我在WinSCP中使用相同的私钥连接到同一主机,它工作正常.请帮我解决错误.这是我的代码:

JSch jsch = new JSch();

Session session = null;

try {

    jsch.addIdentity("D:\\TEMP\\key.ppk");

    session = jsch.getSession("tiabscp", "ssiw.support.qvalent.com", 22);
    session.setConfig("StrictHostKeyChecking", "no");
    //session.setPassword("");
    session.connect();
    Channel channel = session.openChannel("sftp");
    System.out.println("Getting connected");
    channel.connect();
    System.out.println("connected successfully");
    ChannelSftp sftpChannel = (ChannelSftp) channel;
    sftpChannel.get("remotefile.txt", "localfile.txt");
    sftpChannel.exit();
    session.disconnect();
}catch (JSchException e) {

    e.printStackTrace();

}catch (SftpException e) {

    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

java jsch

15
推荐指数
2
解决办法
4万
查看次数

JSch:如何保持会话活跃起来

我正在使用SSH编写用于静态路由管理的Java GUI程序.我的代码如下:

import com.jcraft.jsch.*;
import java.io.*;

public class Konsep {
    String status;
    static String username;
    static String hostname;
    String inputcommand;
    String output;
    static Session session;

    JSch jsch = new JSch();

    public String status(String stringstatus) {
        stringstatus = status;
        return stringstatus;
    }

    public String InputCommand(String inputcommandstatus) {
        inputcommandstatus = inputcommand;
        return inputcommandstatus;
    }

    public void connect(String usernamelokal, String hostnamelokal,
            String password, int port) {
        //        JSch jsch=new JSch();
        try {
            Session sessionlokal = jsch.getSession(usernamelokal,
                    hostnamelokal, port);
            sessionlokal.setPassword(password);
            UserInfo ui = new …
Run Code Online (Sandbox Code Playgroud)

java ssh session keep-alive jsch

15
推荐指数
2
解决办法
3万
查看次数

使用JSch跳过Kerberos身份验证提示

我正在使用下面Connect()SshJava类中的方法,以便使用SSH(JSch)连接到服务器并在服务器中运行命令.

问题是运行Connect()服务器时会提示下一条消息:

Kerberos username [********]: 

Kerberos password for ********: 
Run Code Online (Sandbox Code Playgroud)

并且为了继续运行,我需要手动按Enter两次键,一个用于用户名,一个用于密码.我试图添加下一个代码:

// Press ENTER
Robot r = new Robot();
r.keyPress(KeyEvent.VK_ENTER);
r.keyRelease(KeyEvent.VK_ENTER);
Run Code Online (Sandbox Code Playgroud)

但是这段代码只适用于用户名,我无法弄清楚当服务器要求输入密码时如何自动按ENTER键.到目前为止,我已经尝试将另一个代码片段作为上面显示的代码片段

session.connect();
Run Code Online (Sandbox Code Playgroud)

线.

package ConnectSSH;

import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.io.*;

import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.UserInfo;

public class Ssh{

    private static final String user = "********";
    private static final String host = "********";
    private static final Integer port = 22;
    private static final String pass = "********";

    public void …
Run Code Online (Sandbox Code Playgroud)

java ssh kerberos jsch gssapi

15
推荐指数
1
解决办法
2万
查看次数

如何使用Java SFTP Library JSch将文件从一个目录传输到另一个目录?

我需要使用JSch库编写文件传输程序.我有一个带有两个文件夹的简单目录 -

在此输入图像描述

SFTP_1文件夹中,我有一个位图图像.该SFTP_2文件夹只是一个空文件夹.我的目标是使用SFTP从SFTP_1传输映像到SFTP_2.

这是我到目前为止的代码:

import com.jcraft.jsch.*;

import java.awt.Desktop;

import java.nio.channels.Channel;


public class FileTransfer {

    public FileTransfer() {  
        super();                               
    }

       public static void main (String[] args) {
        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();

             //Channel channel  = session.openChannel("sftp");
              ChannelSftp sftp = null;
              sftp = (ChannelSftp)session.openChannel("sftp") ; //channel;
              //channel.connect(); …
Run Code Online (Sandbox Code Playgroud)

java sftp jsch

15
推荐指数
1
解决办法
2万
查看次数

JSch sftp上传/下载进度

我是JSch和java的新手.我设法获得了一些代码并以某种方式理解它,但我坚持一点.以下代码从SSH服务器下载文件,但我需要显示复制文件百分比的进度表.我该怎么做.我将非常感谢你的帮助.

import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpProgressMonitor; 
public class SFTPExample {
    public static void main(String args[]) throws Exception {
        String user = "root";
        String password = "password";
        String host = "192.168.0.5";
        int port = 22;
        String knownHostsFilename = "/home/world/.ssh/known_hosts";        
        String sourcePath = "/media/nfs/genotype.txt";
        String destPath = "genotype.txt";        
        JSch jsch = new JSch();
        jsch.setKnownHosts(knownHostsFilename);
        Session session = jsch.getSession(user, host, port);
        session.setPassword(password);
        session.connect(); 
        ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
        sftpChannel.connect();

        System.out.println("Downloading test file");
        sftpChannel.get(sourcePath, destPath);            

        sftpChannel.exit();
        session.disconnect();
    }
}
Run Code Online (Sandbox Code Playgroud)

java ssh jsch

14
推荐指数
1
解决办法
2万
查看次数

使用JSch,有没有办法判断一个远程文件是否存在而不执行ls?

使用JSch,有没有办法告诉远程文件是否存在而不执行ls并循环遍历文件以查找名称匹配?

谢谢

java jsch

13
推荐指数
4
解决办法
3万
查看次数

使用JGit键可以安全地访问Git存储库

我正在使用JGit访问远程Git仓库,我需要使用SSH.JGit使用JSch提供安全访问.但是,我不确定如何为JGit设置密钥文件和已知的hosts文件.我试过的内容如下.

使用子类化JSchConfigSessionFactory创建SshSessionFactory的自定义配置:

public class CustomJschConfigSessionFactory extends JschConfigSessionFactory {
    @Override
    protected void configure(OpenSshConfig.Host host, Session session) {
        session.setConfig("StrictHostKeyChecking", "yes");
    }
}
Run Code Online (Sandbox Code Playgroud)

在我访问远程Git仓库的类中,执行以下操作:

CustomJschConfigSessionFactory jschConfigSessionFactory = new CustomJschConfigSessionFactory();

JSch jsch = new JSch();
try {
    jsch.addIdentity(".ssh/id_rsa");
    jsch.setKnownHosts(".ssh/known_hosts");
} catch (JSchException e) {
    e.printStackTrace();  
}
    SshSessionFactory.setInstance(jschConfigSessionFactory);
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何将此JSch对象与JGit关联,以便它可以成功连接到远程存储库.当我尝试使用JGit克隆它时,我得到以下异常:

org.eclipse.jgit.api.errors.TransportException: git@git.test.com:abc.org/test_repo.git: reject HostKey: git.test.com
at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:137)
at org.eclipse.jgit.api.CloneCommand.fetch(CloneCommand.java:178)
at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:125)
at GitTest.cloneRepo(GitTest.java:109)
at GitTest.main(GitTest.java:223)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) …
Run Code Online (Sandbox Code Playgroud)

java git ssh jsch jgit

13
推荐指数
3
解决办法
1万
查看次数

如何使用JSch SFTP库解析Java UnknownHostKey?

我正在运行一个java程序,我使用Java SFTP将文件从一个文件夹传输到另一个文件夹.我遇到的问题是我在Java SFTP中遇到以下错误(使用JSch):

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\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密钥指纹是a2:39:3f:44:88:e9:1f:d7:d1:71:f4:85:98:fb:90:dc at com.jcraft.jsch.Session.checkHost(Session.java: 797)at com.jcraft.jsch.Session.connect(Session.java:342)at com.jcraft.jsch.Session.connect(Session.java:183)at 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 …
Run Code Online (Sandbox Code Playgroud)

java ssh sftp jsch public-key

13
推荐指数
2
解决办法
2万
查看次数

标签 统计

jsch ×10

java ×9

ssh ×7

sftp ×2

android ×1

git ×1

gssapi ×1

jgit ×1

keep-alive ×1

kerberos ×1

public-key ×1

session ×1