JSchException Java: Auth cancel

Atualmente estou vendo este problema ao tentar ssh em uma checkbox usando o JSch. Eu testei a conexão usando o Cygwin e ele se conecta perfeitamente. Eu gerou o par de chaves e coloquei a chave pública no arquivo authorized_keys no servidor remoto.

Abaixo está um extrato dos registros

 INFO: Next authentication method: publickey INFO: Authentications that can continue: keyboard-interactive,password INFO: Next authentication method: keyboard-interactive INFO: Authentications that can continue: password INFO: Next authentication method: password INFO: Disconnecting from xx.xx.xx.xx port 22 com.jcraft.jsch.JSchException: Auth cancel 

Código usado para conexão estabelecida

 Properties config = new Properties(); config.put("cipher",",aes256-cbc"); config.put("mac.c2s", "hmac-sha2-256"); config.put("KEXs", "diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256"); config.put("StrictHostKeyChecking", "no"); Session session = jsch.getSession(username,host,port); session.setPassword(password); session.setUserInfo(ui); session.setConfig(config); session.getPort(); session.connect(); session.setPortForwardingL(tunnelLocalPort,tunnelRemoteHost,tunnelRemotePort); 

Aqui está o código para o UserInfo ui

 String password = null; @Override public String getPassphrase() { return null; } @Override public String getPassword() { return password; } public void setPassword(String passwd) { password = passwd; } @Override public boolean promptPassphrase(String message) { return false; } @Override public boolean promptPassword(String message) { return false; } @Override public boolean promptYesNo(String message) { return false; } 

Parece que o jsch não está tentando usar um arquivo-chave, porque seu código não diz ao jsch qual arquivo-chave deve ser usado. Você precisa chamar Jsch.addIdentity() para adicionar um ou mais arquivos chave à session:

 jsch.addIdentity("C:\users\jdoe\.ssh\id_rsa"); 

ou

 String passphrase = ...; jsch.addIdentity("C:\users\jdoe\.ssh\id_rsa", passphrase.getBytes()); 

Existem outras variedades da function addIdentity() , se você quiser fornecer as informações em algum outro formato.

O “cancelamento de Auth” é lançado quando a implementação de autenticação lança JSchAuthCancelException . O que geralmente acontece quando a implementação UserInfo retorna false de um de seus methods.

Seu código não mostra qual é a ui do ui . Portanto, não posso fornecer mais informações até que você nos mostre mais código.


Além disso, você escreve sobre o par de chaves, mas seu código não mostra nenhum uso de uma chave. Em vez disso, você define uma senha.

Para autenticação de chave privada com o JSch, veja, por exemplo:
Podemos usar o JSch para comunicação baseada em chave SSH?