2012-10-11 17 views
5

Oturum açma kimlik bilgilerini bir Oracle pl/sql paketinden bir java sınıfına geçirerek çok farklı (Session) nesneler oluşturuyorum. Daha sonra bu (Session) nesnelerini bir Vector'da depolarım. Buradaki fikir, bağlantı kurmak, gerekli kanalları açmak, kanalları kapatmak ve son olarak belirli bir oturumu bu Vector'den ayırmaktır. Bunu yapmayı başardım ama her bağlantı için sadece bir kez çalışıyor. Demek istediğim, Vector'de (session1, session2, session3), ben session1.connect() ve session1.disconnect() dediğimde, görünüşe göre denemeden beri session1.connect() işlevini tekrar çağırmak mümkün değil. sunucusuna bağlanmak ancak o zaman olsun:Jsch Oturum nasıl yeniden kullanılır

Vector saklanan oturumu alınıyor ben bir oturum açıp olsun:

INFO: Connecting to sftp.myserver.com port 2122 
INFO: Connection established 
INFO: Remote version string: SSH-2.0-OpenSSH_4.7 
INFO: Local version string: SSH-2.0-JSCH-0.1.48 
INFO: CheckCiphers: aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-  cbc,3des-ctr,arcfour,arcfour128,arcfour256 
INFO: aes256-ctr is not available. 
INFO: aes192-ctr is not available. 
INFO: aes256-cbc is not available. 
INFO: aes192-cbc is not available. 
INFO: arcfour256 is not available. 
INFO: CheckKexes: diffie-hellman-group14-sha1 
INFO: diffie-hellman-group14-sha1 is not available. 
INFO: SSH_MSG_KEXINIT sent 
INFO: SSH_MSG_KEXINIT received 
INFO: kex: server: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange- sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 
INFO: kex: server: ssh-rsa,ssh-dss 
INFO: kex: server: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,arcfour256,arcfour,aes192-cbc,aes256-cbc,[email protected],aes128-ctr,aes192-ctr,aes256-ctr 
INFO: kex: server: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,arcfour256,arcfour,aes192-cbc,aes256-cbc,[email protected],aes128-ctr,aes192-ctr,aes256-ctr 
INFO: kex: server: hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96 
INFO: kex: server: hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96 
INFO: kex: server: none,[email protected] 
INFO: kex: server: none,[email protected] 
INFO: kex: server: 
INFO: kex: server: 
INFO: kex: client: diffie-hellman-group1-sha1,diffie-hellman-group-exchange-sha1 
INFO: kex: client: ssh-rsa,ssh-dss 
INFO: kex: client: aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbc 
INFO: kex: client: aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbc 
INFO: kex: client: hmac-md5,hmac-sha1,hmac-sha1-96,hmac-md5-96 
INFO: kex: client: hmac-md5,hmac-sha1,hmac-sha1-96,hmac-md5-96 
INFO: kex: client: none 
INFO: kex: client: none 
INFO: kex: client: 
INFO: kex: client: 
INFO: kex: server->client aes128-ctr hmac-md5 none 
INFO: kex: client->server aes128-ctr hmac-md5 none 
INFO: SSH_MSG_KEXDH_INIT sent 
INFO: expecting SSH_MSG_KEXDH_REPLY 
INFO: ssh_rsa_verify: signature true 
WARN: Permanently added 'sftp.myserver.com' (RSA) to the list of known hosts. 
INFO: SSH_MSG_NEWKEYS sent 
INFO: SSH_MSG_NEWKEYS received 
INFO: SSH_MSG_SERVICE_REQUEST sent 
INFO: SSH_MSG_SERVICE_ACCEPT received 
INFO: Authentications that can continue: publickey,keyboard-interactive,password 
INFO: Next authentication method: publickey 
INFO: Authentications that can continue: password 
INFO: Next authentication method: password 
INFO: Authentication succeeded (password). 
INFO: Disconnecting from sftp.myserver.com port 2122 

Her şey iyi çalıştı ve sonunda ben session1 kesildi.

Sonra

INFO: Connecting to sftp.myserver.com port 2122 
INFO: Connection established 
INFO: Remote version string: SSH-2.0-OpenSSH_4.7 
INFO: Local version string: SSH-2.0-JSCH-0.1.48 
INFO: CheckCiphers: aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-ctr,arcfour,arcfour128,arcfour256 
INFO: aes256-ctr is not available. 
INFO: aes192-ctr is not available. 
INFO: aes256-cbc is not available. 
INFO: aes192-cbc is not available. 
INFO: arcfour256 is not available. 
INFO: CheckKexes: diffie-hellman-group14-sha1 
INFO: diffie-hellman-group14-sha1 is not available. 
INFO: SSH_MSG_KEXINIT sent 
INFO: Disconnecting from sftp.myserver.com port 2122 
com.jcraft.jsch.JSchException: Packet corrupt 
at com.jcraft.jsch.Session.start_discard(Session.java:994) 
at com.jcraft.jsch.Session.read(Session.java) 
at com.jcraft.jsch.Session.connect(Session.java:288) 
at com.jcraft.jsch.Session.connect(Session.java:162) 
at sftp.make_dir(SFTP:118) 

ben java nesnesi (Oturum) yeniden deneyin şekilde yanlış mı yapıyorum ... yine aşağıdaki özel durum alıyorum session1 kullanmaya çalıştığınızda? şeylerin Yardımlarınız için

Çok teşekkürler

Luca

cevap

6
com.jcraft.jsch.JSchException: Packet corrupt 

Bir çok bağlantı kurmak için dahili olarak gerçekleşir. Her oturum oluşturulduğunda, o oturum ile rastgele bir sayı (paket adı verilir) ilişkilendirilir. Ve bu oturum bir JSCH oturum havuzunda saklanır.

Oturumun bağlantısı kesildiğinde, oturum havuzdan kaldırılır ve paket boş bırakılır. Bunun gerçekleştiği başka birçok şey var ama bu 2 mesele, en çok yukarıdaki hata mesajı için.

Bağlantının kesildiği oturumu kullanarak bağlanmaya çalıştığınızda, paket bulamıyor ve bu hatayı atar.

+0

Açıklama için teşekkürler @tushmish! Bunu bir çözüm olarak işaretlemenin gecikmesi için özür dilerim. O zaman "geçici çözüm" bir ArrayList'te saklanan özel bir Oturumlar nesnesi havuzu oluşturuyordu ve daha sonra bunları bertaraf etmeye özen gösteriyordu. Bildiğim kadar zarif değil, yapmak zorunda olduğum şey için çalışıyordum. – Luca

İlgili konular