【发布时间】:2010-07-21 19:38:52
【问题描述】:
是否可以使用 java 与服务器建立 ssh 连接?
【问题讨论】:
-
FWIW,我快速浏览了下面列出的那些,并且 sshtools 仅在 GPL 许可下可用。 (jsch 在 BSD 下可用,sshJ 在 Apache 下可用。)
标签: java networking ssh connection
是否可以使用 java 与服务器建立 ssh 连接?
【问题讨论】:
标签: java networking ssh connection
是的,我在 Java 应用程序中使用 http://sourceforge.net/projects/sshtools/ 通过 SSH 连接到 UNIX 服务器,效果很好。
【讨论】:
是的,这是可能的。你可以试试下面的代码:
package mypackage;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import java.io.*;
public class SSHReadFile
{
public static void main(String args[])
{
String user = "user";
String password = "password";
String host = "yourhostname";
int port=22;
String remoteFile="/home/john/test.txt";
try
{
JSch jsch = new JSch();
Session session = jsch.getSession(user, host, port);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
System.out.println("Establishing Connection...");
session.connect();
System.out.println("Connection established.");
System.out.println("Crating SFTP Channel.");
ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
sftpChannel.connect();
System.out.println("SFTP Channel created.");
}
catch(Exception e){System.err.print(e);}
}
}
【讨论】:
要连接到 Java 服务器,您需要一个 SSHD 的实现(ssh 客户端是不够的)。你可以试试 Apache SSHD,
因为 sshd 已经在大多数系统上运行,一个更简单的替代方法是通过 SSH 隧道连接到服务器。
【讨论】: