标签: sshj

Jsch或SSHJ或Ganymed SSH-2?

  1. 我需要连接到服务器(用户名,密码,主机) - 简单

  2. 输入3-10命令 - command ="dir; date; cd; dir"是否有更简单的方法?,不写20行:while(smtng){很多东西+神秘的打印到scr:D}

  3. 下载文件 - 简单

  4. 将另一个下载的文件写入同一个文件(添加不是owerride) - 任何想法如何?

因此,为了执行这些可增加的简单任务,如果您敢于使用Jsch(awsome文档),这似乎是不可能的,Jsch,sshj,Ganymed之间有选择任何建议吗?

神秘:

2)多个命令进入

4)在现有的txt文件中添加更多txt:D(可能还有一个内置命令)或不?

  /* just for download/owerride : sftpChannel.get("downloadfile.txt", "savefile.txt");*/
Run Code Online (Sandbox Code Playgroud)

java ssh jsch sshj

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

通过sshj杀死进程

我使用sshj和我试图拖尾文件,但我的问题是远程进程永远不会被杀死.

在下面的示例代码中,您可以看到我尝试tail/var/log/syslog,然后我向进程发送一个kill信号.但是,在应用程序停止并列出服务器上的所有进程后,我仍然可以看到一个活动的尾部进程.

为什么这段代码不会杀死进程?我该怎么做才能解决这个问题呢?

    SSHClient ssh = new SSHClient();
    ssh.addHostKeyVerifier(new PromiscuousVerifier());
    try {           
        ssh.connect("localhost");
        ssh.authPassword("xxx", "xxx");
        final Session session = ssh.startSession();
        try {
            final Command cmd = session.exec("tail -f /var/log/syslog");
            cmd.signal(Signal.KILL);
            System.out.println("\n** exit status: " + cmd.getExitStatus());
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            session.close();
        }
    } finally{
        ssh.disconnect();
    }
Run Code Online (Sandbox Code Playgroud)

编辑

还尝试发送所有可用信号.

            for(Signal s : Signal.values()){
                cmd.signal(s);
            }
Run Code Online (Sandbox Code Playgroud)

java ssh sshj

5
推荐指数
2
解决办法
1435
查看次数

如何使用SSHJ保持SSH连接存活?

我正在开发一个使用SSHJ进行SFTP传输的库.由于请求频繁,我想知道我是否可以保持连接打开.

显然,如果服务器频繁超时,这将无法实现.由于我无法控制服务器,因此我必须保持连接处于活动状态:使用常规SSH客户端,我可以指定一个ServerAliveInterval并让客户端为我执行此操作.

我想用SSHJ做同样的事情,但我不知道要发送什么消息.

SSH手册只是说ServerAliveInterval

设置超时间隔(以秒为单位),之后如果没有从服务器收到数据,ssh(1)将通过加密通道发送消息以请求服务器响应.

所以我想知道:发送了什么消息?我怎么能通过SSHJ重现这个消息?

java ssh timeout sshj

5
推荐指数
1
解决办法
2849
查看次数

与sshj示例('exec')挣扎:无法用指纹验证`ssh-rsa`主机密钥

我正在尝试编写一个java程序,它将通过ssh连接并在工作的服务器上做一些事情(redhat linux).我的盒子是窗户.我读到了sshj,我正试图让这个例子起作用.我已经完成了大多数依赖项,现在我在处理公钥/私钥时出错了,不幸的是我也不太了解(是的,这是一个完美的新手风暴!).这是错误:

例外在线程"主" net.schmizz.sshj.transport.TransportException:[HOST_KEY_NOT_VERIFIABLE]无法验证ssh-rsa与指纹主机密钥5f:d6:94:00:9e:ec:7e:34:6d:d0:d3:76:df:5e:dd:3d用于myserver在端口22

这是代码:

import net.schmizz.sshj.SSHClient;
import net.schmizz.sshj.common.IOUtils;
import net.schmizz.sshj.connection.channel.direct.Session;
import net.schmizz.sshj.connection.channel.direct.Session.Command;

import java.io.IOException;
import java.util.concurrent.TimeUnit;

/** This examples demonstrates how a remote command can be executed. */
public class sshBuddy {

    public static void main(String... args)
            throws IOException {
        final SSHClient ssh = new SSHClient();
        ssh.loadKnownHosts();
        //ssh.addHostKeyVerifier("5f:d6:94:00:9e:ec:7e:34:6d:d0:d3:76:df:5e:dd:3d");

        ssh.connect("myserver");
        try {
            ssh.authPublickey(System.getProperty("myusername"));
            final Session session = ssh.startSession();
            try {
                final Command cmd = session.exec("ping -c 1 google.com");
                System.out.println(IOUtils.readFully(cmd.getInputStream()).toString());
                cmd.join(5, TimeUnit.SECONDS);
                System.out.println("\n** exit status: …
Run Code Online (Sandbox Code Playgroud)

fingerprint sshj

5
推荐指数
2
解决办法
4888
查看次数

将远程文件流式传输到文件对象中

如果有人知道如何将远程文件直接流式传输到文件对象的快速方法,那么没有必要将文件临时存储在计算机上,我们将不胜感激!到目前为止,我从远程ios设备复制文件如下(使用net.schmizz.sshj):

SSHClient ssh = new SSHClient();
ssh.addHostKeyVerifier(fingerprint);
ssh.connect(ip);

try {
    ssh.authPassword("username", "userpassword".toCharArray());
    ssh.newSCPFileTransfer().download(fileRemote, new FileSystemFile(fileLocal));
} catch (IOException ioe) {
    ioe.printStackTrace();
} finally {
    ssh.disconnect();
}
Run Code Online (Sandbox Code Playgroud)

如果有人对解决方案的代码感兴趣:

正如Nutlike在回答中提到的那样,最好使用它InMemoryDestFile.所以创建以下类:

class MyInMemoryDestFile extends InMemoryDestFile {
    public ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

    @Override
    public ByteArrayOutputStream getOutputStream() throws IOException {
        return this.outputStream;
    }
}
Run Code Online (Sandbox Code Playgroud)

...在执行下载操作的方法中,创建新类的实例:

MyInMemoryDestFile a = new StreamingInMemoryDestFile();
Run Code Online (Sandbox Code Playgroud)

并访问输出流:

ssh.newSCPFileTransfer().download(remoteFile, a);
a.getOutputStream().toByteArray();
Run Code Online (Sandbox Code Playgroud)

最好的祝福

java sshj

5
推荐指数
1
解决办法
1051
查看次数

如何修改 net.schmizz.sshj 日志记录级别?

到目前为止,我可以更改默认配置的记录器级别或为 sshj 库禁用它吗?

Config config = new DefaultConfig();
config.setKeepAliveProvider(KeepAliveProvider.KEEP_ALIVE);
SSHClient sshClient = new SSHClient(config);
Run Code Online (Sandbox Code Playgroud)

当我尝试上面的代码时,我遇到了这些问题:

[main] WARN net.schmizz.sshj.DefaultConfig - Illegal key size
[main] WARN net.schmizz.sshj.DefaultConfig - Illegal key size
[main] WARN net.schmizz.sshj.DefaultConfig - Illegal key size
[main] WARN net.schmizz.sshj.DefaultConfig - Illegal key size
[main] WARN net.schmizz.sshj.DefaultConfig - Illegal key size
[main] WARN net.schmizz.sshj.DefaultConfig - No such algorithm: IDEA/CBC/NoPadding
[main] WARN net.schmizz.sshj.DefaultConfig - No such algorithm: IDEA/CTR/NoPadding
[main] WARN net.schmizz.sshj.DefaultConfig - Illegal key size
[main] WARN net.schmizz.sshj.DefaultConfig - Illegal key size …
Run Code Online (Sandbox Code Playgroud)

java ssh logging sshj

5
推荐指数
1
解决办法
2412
查看次数

scp命令中-f的含义是什么?

我正在使用库sshj发送scp命令.它使用选项-f从服务器下载到另一个服务器.我找不到男人的-f选项.

scp命令中-f的含义是什么?

java scp sshj

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

如何使用sshj java api连接用户名和密码的远程机器?

如何使用sshj java api连接用户名和密码的远程机器?

我试过这段代码.这段代码有什么问题?

final SSHClient ssh = new SSHClient();
        ssh.connect("192.168.0.1");
        ssh.authPassword("abcde", "fgh".toCharArray());
        try {
            final Session session = ssh.startSession();
            try {
                final Command cmd = session
                        .exec("cd /home/abcde/Desktop/");
                System.out.println(IOUtils.readFully(cmd.getInputStream())
                        .toString());
                cmd.join(5, TimeUnit.SECONDS);
                System.out.println("\n** exit status: " + cmd.getExitStatus());
            } finally {
                session.close();
            }
        } finally {
            ssh.disconnect();
        }
Run Code Online (Sandbox Code Playgroud)

它抛出以下错误.

net.schmizz.sshj.transport.TransportException:[HOST_KEY_NOT_VERIFIABLE]无法验证ssh-rsa与指纹主机密钥********用于192.168.0.1在端口22

java ssh sshj

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

使用 sshj 在 SFTP 服务器上解决不受支持的 SETSTAT 请求的解决方法

我正在尝试使用身份字符串 SFTP 到服务器:SSH-2.0-AWS_SFTP_1.0 使用 sshj 使用以下 Java 代码。

<dependency>
    <groupId>com.hierynomus</groupId>
    <artifactId>sshj</artifactId>
    <version>0.29.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
private SSHClient setupSshj(String remoteHost, String username, String password) throws IOException {
    SSHClient client = new SSHClient();
    client.addHostKeyVerifier(new PromiscuousVerifier());
    client.connect(remoteHost);
    client.authPassword(username, password);
    return client;
}

public void sftpfiles() throws IOException {
    if (Boolean.parseBoolean(GetConfigValue("dds", "sendFiles"))) {
        SSHClient sshClient = setupSshj(GetConfigValue("dds", "RemoteAddress"), GetConfigValue("dds", "RemoteLogin"), GetConfigValue("dds", "RemotePassword"));
        SFTPClient sftpClient = sshClient.newSFTPClient();
        sftpClient.put("/home/vm/test.txt", GetConfigValue("dds", "RemoteDirectory"));
        sftpClient.close();
        sshClients.disconnect();
    }
}
Run Code Online (Sandbox Code Playgroud)

并得到错误

错误 SETSTAT 不受支持

我知道 AWS 服务不允许在上传时设置时间戳,但是我不知道需要进行哪些调整才能配置 SFTP 客户端。

问候康泰

java sftp sshj aws-sftp

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

使用Java中的命令和文件进行SSH

我想在Java中运行SSH,但我还没想出如何运行包含命令和文件的SSH语句.例如,在标准终端中的命令:

ssh user@host 'upload' < myfile.txt
Run Code Online (Sandbox Code Playgroud)

希望通过Java库,而不是某种类型的Runtime.exec()

java ssh jsch sshj

0
推荐指数
1
解决办法
219
查看次数

标签 统计

sshj ×10

java ×9

ssh ×6

jsch ×2

aws-sftp ×1

fingerprint ×1

logging ×1

scp ×1

sftp ×1

timeout ×1