Using JSCH
Dependencies
If you use maven, add this to your pom.xml :
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.53</version>
</dependency> |
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.53</version>
</dependency>
Session
Open session
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
JSch jsch = new JSch();
session=jsch.getSession(login, hostname, port);
session.setPassword(password);
session.setConfig(config);
session.connect(); |
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
JSch jsch = new JSch();
session=jsch.getSession(login, hostname, port);
session.setPassword(password);
session.setConfig(config);
session.connect();
Close session
if(session != null && session.isConnected()) {
session.disconnect();
} |
if(session != null && session.isConnected()) {
session.disconnect();
}
Channel
Run command
ChannelExec channel=(ChannelExec) session.openChannel("exec");
BufferedReader reader=new BufferedReader(new InputStreamReader(channel.getInputStream()));
channel.setCommand(command);
channel.setErrStream(System.err);
channel.setInputStream(null);
channel.connect();
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
channel.disconnect(); |
ChannelExec channel=(ChannelExec) session.openChannel("exec");
BufferedReader reader=new BufferedReader(new InputStreamReader(channel.getInputStream()));
channel.setCommand(command);
channel.setErrStream(System.err);
channel.setInputStream(null);
channel.connect();
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
channel.disconnect();
Send File
ChannelSftp channel = (ChannelSftp) session.openChannel("sftp");
channel.connect();
channel.put(new ByteArrayInputStream(sourceFile.getBytes()), destinationFile);
channel.disconnect(); |
ChannelSftp channel = (ChannelSftp) session.openChannel("sftp");
channel.connect();
channel.put(new ByteArrayInputStream(sourceFile.getBytes()), destinationFile);
channel.disconnect();
Read File
ChannelSftp channel = (ChannelSftp) session.openChannel("sftp");
channel.connect();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
InputStream is = c.get(filePath);
try {
byte[] buffer = new byte[256];
int count;
while (-1 != (count = is.read(buffer))) {
bos.write(buffer, 0, count);
}
} finally {
IoUtils.closeQuietly(is);
}
channel.disconnect();
return new String(bos.toByteArray()); |
ChannelSftp channel = (ChannelSftp) session.openChannel("sftp");
channel.connect();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
InputStream is = c.get(filePath);
try {
byte[] buffer = new byte[256];
int count;
while (-1 != (count = is.read(buffer))) {
bos.write(buffer, 0, count);
}
} finally {
IoUtils.closeQuietly(is);
}
channel.disconnect();
return new String(bos.toByteArray());
Using Apache Mina
Dependencies
If you use maven, add this to your pom.xml :
<dependencies>
<dependency>
<groupId>org.apache.sshd</groupId>
<artifactId>sshd-core</artifactId>
<version>${apache-mina.version}</version>
</dependency>
</dependencies> |
<dependencies>
<dependency>
<groupId>org.apache.sshd</groupId>
<artifactId>sshd-core</artifactId>
<version>${apache-mina.version}</version>
</dependency>
</dependencies>
Session
Open session
try(SshClient client = SshClient.setUpDefaultClient()) {
client.start();
session = client.connect(login, hostname, port)
.verify(7L, TimeUnit.SECONDS)
.getSession();
session.addPasswordIdentity(password);
session.auth().verify(5L, TimeUnit.SECONDS);
}
catch (IOException e) {
LOGGER.debug("Open SSH Session",e);
} |
try(SshClient client = SshClient.setUpDefaultClient()) {
client.start();
session = client.connect(login, hostname, port)
.verify(7L, TimeUnit.SECONDS)
.getSession();
session.addPasswordIdentity(password);
session.auth().verify(5L, TimeUnit.SECONDS);
}
catch (IOException e) {
LOGGER.debug("Open SSH Session",e);
}
Close session
if(session != null && session.isOpen()) {
session.close(true);
} |
if(session != null && session.isOpen()) {
session.close(true);
}
Channel
Run command
String response = session.executeRemoteCommand(command,stderr,Charset.defaultCharset()); |
String response = session.executeRemoteCommand(command,stderr,Charset.defaultCharset());