Mentransfer file melalui SFTP menggunakan java.

Dalam tutorial ini, kita akan membahas cara mengunggah dan mengunduh file dari server jarak jauh menggunakan SFTP di Java.

1. Konfigurasi Maven

<dependency>

    <groupId>com.jcraft</groupId>

    <artifactId>jsch</artifactId>

    <version>0.1.55</version>

</dependency>

2. Konfigurasi JSch

JSch memungkinkan kita menggunakan Otentikasi Kata Sandi atau Otentikasi Kunci Publik untuk mengakses server jarak jauh. Dalam contoh ini, kami akan menggunakan autentikasi kata sandi.

private ChannelSftp setupJsch() throws JSchException {

    JSch jsch = new JSch();

    jsch.setKnownHosts("/Users/john/.ssh/known_hosts");

    Session jschSession = jsch.getSession(username, remoteHost);

    jschSession.setPassword(password);

    jschSession.connect();

    return (ChannelSftp) jschSession.openChannel("sftp");

}

Dalam contoh di atas, remoteHost mewakili nama atau alamat IP server jarak jauh (mis. example.com). Kita dapat mendefinisikan variabel yang digunakan dalam pengujian sebagai:

private String remoteHost = "HOST_NAME_HERE";

private String username = "USERNAME_HERE";

private String password = "PASSWORD_HERE";

Kita juga dapat membuat file known_hosts menggunakan perintah berikut:

ssh-keyscan -H -t rsa REMOTE_HOSTNAME >> known_hosts

3. Upload file

Untuk mengunggah file ke server jarak jauh, kita akan menggunakan metode ChannelSftp.put():

public void whenUploadFileUsingJsch_thenSuccess() throws JSchException, SftpException {

    ChannelSftp channelSftp = setupJsch();

    channelSftp.connect();

 

    String localFile = "src/main/resources/sample.txt";

    String remoteDir = "remote_sftp_test/";

 

    channelSftp.put(localFile, remoteDir + "jschFile.txt");

 

    channelSftp.exit();

}

Dalam contoh ini, parameter pertama dari metode mewakili file lokal yang akan ditransfer, src/main/resources/sample.txt, sedangkan remoteDir adalah jalur direktori target di server jarak jauh.

4. Download file

Kita juga dapat mengunduh file dari server jarak jauh menggunakan ChannelSftp.get():

public void whenDownloadFileUsingJsch_thenSuccess() throws JSchException, SftpException {

    ChannelSftp channelSftp = setupJsch();

    channelSftp.connect();

 

    String remoteFile = "welcome.txt";

    String localDir = "src/main/resources/";

 

    channelSftp.get(remoteFile, localDir + "jschFile.txt");

 

    channelSftp.exit();

}

remoteFile adalah jalur file yang akan diunduh, dan localDir mewakili jalur direktori lokal target.

Tidak ada komentar:

Posting Komentar