Chỉnh sửa: Tôi sẽ giữ câu trả lời trước, vì JSch vẫn được sử dụng ở nhiều nơi, nhưng nếu cần thư viện tài liệu tốt hơn, bạn có thể sử dụng sshj. Một ví dụ về cách sử dụng nó để làm sftp là:
SSHClient ssh = new SSHClient();
ssh.loadKnownHosts();
ssh.connect("host");
try {
ssh.authPassword("username", "password");
SFTPClient sftp = ssh.newSFTPClient();
try {
sftp.put(new FileSystemFile("/path/of/local/file"), "/path/of/ftp/file");
} finally {
sftp.close();
}
} finally {
ssh.disconnect();
}
Sử dụng JSch (một lib java ssh, được sử dụng bởi Ant chẳng hạn), bạn có thể làm một cái gì đó như thế:
Session session = null;
Channel channel = null;
try {
JSch ssh = new JSch();
ssh.setKnownHosts("/path/of/known_hosts/file");
session = ssh.getSession("username", "host", 22);
session.setPassword("password");
session.connect();
channel = session.openChannel("sftp");
channel.connect();
ChannelSftp sftp = (ChannelSftp) channel;
sftp.put("/path/of/local/file", "/path/of/ftp/file");
} catch (JSchException e) {
e.printStackTrace();
} catch (SftpException e) {
e.printStackTrace();
} finally {
if (channel != null) {
channel.disconnect();
}
if (session != null) {
session.disconnect();
}
}
Đây là another link sử dụng JSch để thực hiện SFTP.
Bạn có thể sử dụng JSch trực tiếp theo cách này hoặc thông qua Commons VFS, nhưng sau đó bạn sẽ phải có cả hai vons jar và jsch jar chung.
Nguồn
2010-02-27 09:45:48
ftp trên đường hầm ssh? –
http://en.wikipedia.org/wiki/SSH_File_Transfer_Protocol –
Vui lòng sử dụng cụm từ "SFTP" nếu đó là ý của bạn. Giữa FTP, SFTP/SSH, FTPS và đường hầm thường xuyên FTP qua SSH, từ viết tắt trở nên mơ hồ. – prestomation