We can build an ssh connection to any remote server by following some simple steps mentioned below.
Adding dependencies
We will use the JSch library to connect with the remote server. So, we will add its dependency here –
<!-- https://mvnrepository.com/artifact/com.jcraft/jsch -->
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.55</version>
</dependency>
Now, we can connect with the remote server with Jsch using two methods –
Let’s see each of them one by one.
Making an SSH connection with Jsch using a password
So, let us see what we need to connect to a remote server. Well, there are only a few things-
- Remote server IP
- Remote server port ( The port on which you want to connect on, say, 33000 )
- Username
- Password
Below is the sample code to connect with your server using the password –
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.JSchException;
public class Codekru {
public static void main(String[] args) {
try {
JSch jsch = new JSch();
String username = "codekru"; // your username
String host = "127.0.0.1"; // your remote server address
int port = 33000; // your remote server port
String password = "root"; // your username's password
Session session = jsch.getSession(username, host, port);
session.setConfig("PreferredAuthentications", "publickey,keyboard-interactive,password");
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
session.setTimeout(15000);
session.connect();
} catch (JSchException e) {
e.printStackTrace();
}
}
}
This is it if you want to make an ssh connection using the password. Now, let’s move on to making a connection using a key.
Making an SSH connection using key
So, We will have to store our key someplace in our machine. We kept it at “/Users/codekru/key”. Now, let’s use this key and make an ssh connection.
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.JSchException;
public class Codekru {
public static void main(String[] args) {
try {
JSch jsch = new JSch();
String user = "codekru"; // your username
String host = "127.0.0.1"; // your remote server address
int port = 33000; // your remote server port
String yourKeyName = "/Users/codekru/key";
jsch.addIdentity(yourKeyName);
Session session = jsch.getSession(user, host, port);
session.setConfig("StrictHostKeyChecking", "no");
session.setTimeout(15000);
session.connect();
} catch (JSchException e) {
e.printStackTrace();
}
}
}
Using this, you can establish an ssh connection with Jsch using a key.
What if we used an invalid key? What exception we will get?
We will get an invalid privatekey JSchException.
com.jcraft.jsch.JSchException: invalid privatekey: [[email protected]
at com.jcraft.jsch.KeyPair.load(KeyPair.java:948)
at com.jcraft.jsch.KeyPair.load(KeyPair.java:561)
at com.jcraft.jsch.IdentityFile.newInstance(IdentityFile.java:40)
at com.jcraft.jsch.JSch.addIdentity(JSch.java:406)
at com.jcraft.jsch.JSch.addIdentity(JSch.java:366)
What if we used the wrong password?
Here, we will get an Auth fail JSchException.
com.jcraft.jsch.JSchException: Auth fail
at com.jcraft.jsch.Session.connect(Session.java:519)
at com.jcraft.jsch.Session.connect(Session.java:183)
Related Articles –
- How to execute commands using Jsch in java
- Copy or transfer file from a local to the remote server using Java
I hope you liked this article. If you found anything wrong or have any doubts, please feel free to write us in the comments or mail us at [email protected].