o jsch é muito bom…ja usei…funciona bem…mas nu entendi o esquema do ftp…ja fiz acesso a ssh com ele
renanbarros
na verdade faco upload de imagens para um diretorio no servidor, gravando referencia do caminho da imagem no banco… porem tenho que usar ssh (pedido pelo chefe) para fazer a transferencia desses arquivos para o servidor ( de forma segura)…
nunca usei o ssh , to usando FTPClient no codigo,…
Alguem sabe algum tutorial em portugues de ssh com java
Thiago_Senna
Se não me engano você precisa do SFTP. E para isso basta usar a biblioteca Jsch que já foi indicado pelo pessoal acima. Junto com a distribuição do Jsch tem uma pasta com exemplos.
renanbarros
bem … eu comecei a usar com o exemplo do scpto, porem alguns erros acontecem, tipo … channel broken… e as vezes ele entra num if do código que fecha a minha aplicacao , nao to sabendo o porque de estar dando o erro… ja debuguei no netbeans… porem nao consigo entender o erro…
alguem que ja usou o ssh… ja viu esse erro de canal quebrado???
renanbarros
Gente preciso de ajuda !!! preciso de alguem q ja tenha feito algo com SSH pra me ajudar !!
T
thingol
Se for muito complicado, é melhor usar o utilitário de linha de comando.
Como é uma funcionalidade “marginal” de sua aplicação, não vale a pena ficar brigando “muito tempo” com isso.
Se for no Linux ou Unix, use o “scp” ou o “sftp” que vêm com o pacote do SSH (ou OpenSSH).
renanbarros
cara … nao entendi muito bem
mas tenho uma classe ScptoFtp que esta enviaando meu arquivo… da so uma olhada no meu codigo
importcom.jcraft.jsch.*;importjava.awt.Image;importjava.awt.image.BufferedImage;importjava.io.File;importjava.io.FileInputStream;importjava.io.InputStream;importjava.io.OutputStream;importjava.util.Locale;importjavax.imageio.IIOImage;importjavax.imageio.ImageIO;importjavax.imageio.ImageWriteParam;importjavax.imageio.ImageWriter;importjavax.imageio.plugins.jpeg.JPEGImageWriteParam;importjavax.imageio.stream.ImageOutputStream;importjavax.swing.JOptionPane;/** * * @author renan */publicclassScpToFtp{/** Creates a new instance of ScpToFtp */publicScpToFtp(StringfileNome,Stringusuario,Stringpasswd,StringfileNome2)throwsException{FileInputStreamfis=null;Stringlfile=fileNome;Stringuser=usuario;finalStringsenha=passwd;Stringhost="10.3.186.22";Stringrfile=fileNome2;//aqui ele abre a conexaoJSchjsch=newJSch();Sessionsession=jsch.getSession(user,host,22);// username and password will be given via UserInfo interface.UserInfoui=newUserInfo(){publicStringgetPassphrase(){returnnull;}publicStringgetPassword(){returnsenha;}publicbooleanpromptPassword(Stringstring){returntrue;}publicbooleanpromptPassphrase(Stringstring){returntrue;}publicbooleanpromptYesNo(Stringstring){returntrue;}publicvoidshowMessage(Stringstring){}};session.setUserInfo(ui);session.connect();// exec 'scp -t rfile' remotelyStringcommand="scp -p -t "+rfile;Channelchannel=session.openChannel("exec");((ChannelExec)channel).setCommand(command);// get I/O streams for remote scpOutputStreamout=channel.getOutputStream();InputStreamin=channel.getInputStream();channel.connect();// send "C0644 filesize filename", where filename should not include '/'longfilesize=(newFile(lfile)).length();command="C0644 "+filesize+" ";if(lfile.lastIndexOf('/')>0){command+=lfile.substring(lfile.lastIndexOf('/')+1);}else{command+=lfile;}command+="\n";out.write(command.getBytes());out.flush();// send a content of lfile - manadan o arquivofis=newFileInputStream(lfile);byte[]buf=newbyte[1024];while(true){intlen=fis.read(buf,0,buf.length);if(len<=0)break;out.write(buf,0,len);//out.flush();}fis.close();fis=null;// send '\0'buf[0]=0;out.write(buf,0,1);out.flush();out.close();channel.disconnect();session.disconnect();}