คำเตือน | SSHJ เวอร์ชันสูงสุดและรวมถึง 0.37.0 มีความเสี่ยงต่อ CVE-2023-48795 - Terrapin โปรดอัปเกรดเป็น 0.38.0 หรือสูงกว่า |
ในการเริ่มต้น โปรดดูตัวอย่างใดตัวอย่างหนึ่ง หวังว่าคุณจะพบว่า API น่าใช้งานด้วย :)
หากต้องการรับ SSHJ คุณมีสองตัวเลือก:
เพิ่มการพึ่งพา SSHJ ในโปรเจ็กต์ของคุณ
สร้าง SSHJ ด้วยตัวคุณเอง
และหากต้องการ คุณยังสามารถเรียกใช้ตัวอย่าง SSHJ ได้อีกด้วย
ที่นี่ไม่มีการเผยแพร่ SSHJ แบบไบนารี แต่คุณสามารถดาวน์โหลดได้โดยตรงจากพื้นที่เก็บข้อมูล Maven Central หากคุณต้องการ
หากคุณกำลังสร้างโปรเจ็กต์โดยใช้ Maven คุณสามารถเพิ่มการพึ่งพาต่อไปนี้ให้กับ pom.xml
:
< dependency >
< groupId >com.hierynomus</ groupId >
< artifactId >sshj</ artifactId >
< version >0.38.0</ version >
</ dependency >
หากโปรเจ็กต์ของคุณสร้างขึ้นโดยใช้เครื่องมือสร้างอื่นที่ใช้พื้นที่เก็บข้อมูล Maven Central ให้แปลการขึ้นต่อกันนี้เป็นรูปแบบที่เครื่องมือสร้างของคุณใช้
โคลนที่เก็บ SSHJ
ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Java6 ด้วย Java Cryptography Extensions (JCE) ที่มีความแข็งแกร่งไม่จำกัด
รันคำสั่ง . ./gradlew clean build
ในไดเร็กทอรี examples
มีโปรเจ็กต์ Maven แยกต่างหากที่แสดงวิธีการใช้ไลบรารีในบางกรณีตัวอย่าง หากคุณต้องการเรียกใช้ ให้ปฏิบัติตามหลักเกณฑ์เหล่านี้:
ติดตั้ง Maven 2.2.1 ขึ้นไป
โคลนที่เก็บ SSHJ
ไปที่ไดเร็กทอรี examples
และรันคำสั่ง mvn eclipse:eclipse
นำเข้าโปรเจ็กต์ examples
ไปยัง Eclipse
เปลี่ยนรายละเอียดการเข้าสู่ระบบในคลาสตัวอย่าง (ที่อยู่ ชื่อผู้ใช้ และรหัสผ่าน) และเปิดใช้งาน!
การอ่านไฟล์known_hostsสำหรับการตรวจสอบคีย์โฮสต์
publickey รหัสผ่าน และการตรวจสอบแบบโต้ตอบด้วยแป้นพิมพ์
คำสั่ง ระบบย่อย และแชนเนลเชลล์
การส่งต่อพอร์ตท้องถิ่นและระยะไกล
scp + การใช้งาน sftp เวอร์ชัน 0-3 เสร็จสมบูรณ์
รวมการใช้งาน / อะแดปเตอร์สำหรับอัลกอริทึมต่อไปนี้:
aes{128,192,256}-{cbc,ctr}
, aes{128,256}[email protected]
, blowfish-{cbc,ctr}
, [email protected]
, 3des-{cbc,ctr}
, twofish{128,192,256}-{cbc,ctr}
, twofish-cbc
, serpent{128,192,256}-{cbc,ctr}
, idea-{cbc,ctr}
, cast128-{cbc,ctr}
, arcfour
, arcfour{128,256}
SSHJ ยังรองรับการเข้ารหัสแบบขยาย (ไม่เป็นทางการ) ต่อไปนี้: camellia{128,192,256}-{cbc,ctr}
, camellia{128,192,256}-{cbc,ctr}@openssh.org
diffie-hellman-group1-sha1
, diffie-hellman-group14-sha1
, diffie-hellman-group14-sha256
, diffie-hellman-group15-sha512
, diffie-hellman-group16-sha512
, diffie-hellman-group17-sha512
, diffie-hellman-group18-sha512
diffie-hellman-group-exchange-sha1
, diffie-hellman-group-exchange-sha256
, ecdh-sha2-nistp256
, ecdh-sha2-nistp384
, ecdh-sha2-nistp521
, [email protected]
SSHJ ยังรองรับอัลกอริธึมการแลกเปลี่ยนคีย์แบบขยาย (ไม่เป็นทางการ) ต่อไปนี้: `[email protected]`, `diffie-hellman-group15-sha256`, `[email protected]`, `[email protected]` `, `diffie-hellman-group16-sha256`, `[email protected]`, `[email protected]`, `[email protected]` `
ssh-rsa
, ssh-dss
, ecdsa-sha2-nistp256
, ecdsa-sha2-nistp384
, ecdsa-sha2-nistp521
, ssh-ed25519
, ssh-rsa2-256
, ssh-rsa2-512
hmac-md5
, hmac-md5-96
, hmac-sha1
, hmac-sha1-96
, hmac-sha2-256
, hmac-sha2-512
, hmac-ripemd160
, [email protected]
[email protected]
, [email protected]
, [email protected]
, [email protected]
, [email protected]
, [email protected]
, [email protected]
zlib
และ [email protected]
(zlib ล่าช้า)
pkcs5
, pkcs8
, openssh-key-v1
, [email protected]
, [email protected]
หากคุณต้องการสิ่งที่ไม่ได้รวมอยู่ด้วย การเพิ่มก็ไม่ควรยากเกินไป (ร่วมบริจาคด้วย!)
การเปรียบเทียบการใช้งาน SSH
จาวา 8 หรือสูงกว่า
SLF4J 2.0.0
ปราสาทเด้ง
ติดตามปัญหา: https://github.com/hierynomus/sshj/issues
ส้อมไป!
บรรเทา CVE-2023-48795 - Terrapin
ผสาน #917: ใช้ส่วนขยายการแลกเปลี่ยนคีย์ที่เข้มงวดของ OpenSSH
รวม #903: แก้ไขสำหรับการเขียนสตริงคีย์โฮสต์ที่รู้จัก
ผสาน #913: ป้องกันไม่ให้บัฟเฟอร์การส่งต่อพอร์ตระยะไกลเติบโตอย่างไร้ขอบเขต
ย้ายการทดสอบไปที่ JUnit5
รวม #827: สำรองไปยังส่วนขยาย [email protected] หากมี
ผสาน #904: เพิ่มการรองรับ ChaCha20-Poly1305 สำหรับคีย์ OpenSSH
รวม #899: เพิ่มการรองรับคีย์ส่วนตัว AES-GCM OpenSSH
ผสาน #901: แก้ไขข้อบกพร่องในการบีบอัด ZLib
รวม #898: ปรับปรุงการจัดการไฟล์ที่มีรูปแบบไม่ถูกต้องสำหรับคีย์ส่วนตัวของ OpenSSH
เขียนการทดสอบการรวมใหม่เป็น JUnit5
รวม #851: แก้ไขสภาพการแข่งขันในการแลกเปลี่ยนคีย์ที่ทำให้เกิด SSH_MSG_UNIMPLEMENTED เป็นระยะๆ
ผสาน #861: เพิ่ม DefaultSecurityProviderConfig โดยปิดการใช้งาน BouncyCastle
รวม #881: เขียนคลาสการทดสอบใหม่ให้กับเอ็นจิ้น JUnit Jupiter
ผสาน #880: ลบยูทิลิตี้ Java 7 backport Socket ออก
รวม #879: แทนที่ Base64 แบบกำหนดเองด้วย java.util.Base64
รวม #852: ลบวิธีการแฮชรหัสผ่าน bcrypt ที่ไม่ได้ใช้
ผสาน #874: เวอร์ชันขั้นต่ำของ Java 8 + การอัพเกรดการพึ่งพา
ผสาน #876: เปลี่ยน newStatefulSFTPClient
เพื่อส่งคืน StatefulSFTPClient
รวม #860: อัปเกรดเป็น Gradle 7.6.1
รวม #838: แทนที่คลาส Curve25519 ด้วยข้อตกลงคีย์ X25519
รวม #772: ลบการพึ่งพา jzlib
ผสาน #835: ปรับปรุงข้อความ TimeoutException
รวม #815: รองรับ authPassword บน FreeBSD
รวม #813: ป้องกัน CHANNEL_CLOSE
ระหว่าง isOpen และเขียนการโทร
รวม #811: เพิ่ม Transport.isKeyExchangeREquired
เพื่อป้องกัน KEXINIT ที่ไม่จำเป็น
รวม #743: ใช้ข้อมูลประจำตัวไคลเอ็นต์เริ่มต้นสำหรับ AuthGssApiWithMic
ผสาน #801: กู้คืนสถานะการขัดจังหวะของเธรดหลังจากจับ InterruptedException
ผสาน #793: รวมคลาส PKCS5 และ PKCS8
อัปเกรดการอ้างอิง SLF4J (1.7.36) และ Logback (1.2.11)
ผสาน #791: อัปเดตตัวอย่าง KeepAlive
รวม #775: เพิ่มการสนับสนุน SFTP ดำเนินการต่อ
อัปเกรดการอ้างอิง BouncyCastle (1.70)
รวม #687: ปิดการเชื่อมต่ออย่างถูกต้องเมื่อรีโมทปิดการเชื่อมต่อ
ผสาน #741: เพิ่มการสนับสนุนสำหรับคอนเทนเนอร์ทดสอบในการตั้งค่าการทดสอบเพื่อทดสอบสถานการณ์เพิ่มเติม
รวม #733: ส่งข้อเสนอคีย์ที่ถูกต้องหากลูกค้าทราบคีย์ CA
รวม #746: แก้ไขข้อผิดพลาดในการอ่านไฟล์คีย์ส่วนตัวของ Putty ด้วยข้อความรหัสผ่าน
ผสาน #742: ใช้ Config.keyAlgorithms เพื่อพิจารณาการสนับสนุน rsa-sha2
ผสาน #754: ใช้เวอร์ชันโปรโตคอล SFTP เพื่อตั้งค่าสถานะการเปลี่ยนชื่อ FXP แบบมีเงื่อนไข
ผสาน #752: เริ่มต้นและยุติเธรด KeepAlive อย่างถูกต้อง
รวม #753: ระบุชื่อเธรดที่ดีกว่า
รวม #724: เพิ่มพารามิเตอร์เพื่อจำกัดความยาวการอ่านล่วงหน้า
รวม #763: ลองใช้อัลกอริธึมคีย์สาธารณะทั้งหมดสำหรับประเภทคีย์เฉพาะ
ผสาน #756: ลบวิธีการเชื่อมต่อพร็อกซีที่เลิกใช้แล้ว
ผสาน #770: เพิ่มการรองรับคีย์ ed25519
aes-128-cbc
ผสาน #773: แก้ไข NPE เมื่ออ่าน OpenSSHKeyV1KeyFile ที่ว่างเปล่า
รวม #777: อย่าร้องขอแพ็กเก็ตแบบอ่านล่วงหน้ามากเกินไป
ส่ง EOF เมื่อปิดช่อง (แก้ไข #143, #496, #553, #554)
ผสาน #726: แยกคีย์ OpenSSH v1 พร้อมข้อมูล CRT แบบเต็ม
รวม #721: ต้องการอัลกอริธึมคีย์โฮสต์ที่รู้จักสำหรับการตรวจสอบคีย์โฮสต์
รวม #716, #729 และ #730: เพิ่มการรองรับไฟล์คีย์ PuTTY v3 อย่างเต็มรูปแบบ
รวม #708 และ #71: เพิ่มการรองรับคีย์ส่วนตัว PKCS#8
ผสาน #703: รองรับคีย์ใบรับรองโฮสต์
อัปเกรดการอ้างอิง BouncyCastle (1.69), SLF4j (1.7.32), Logback (1.2.6), asn-one (0.6.0)
ผสาน #702: รองรับการตรวจสอบสิทธิ์คีย์สาธารณะโดยใช้ใบรับรอง
ผสาน #691: แก้ไขการเขียนจำนวนเต็มลบที่ไม่ได้ลงนามลงในบัฟเฟอร์
รวม #682: รองรับการเข้ารหัส [email protected]
รวม #680: mtimes สงวนที่กำหนดค่าได้สำหรับการถ่ายโอน SCP
การพึ่งพาแบบชน (asn-one 0.5.0, BouncyCastle 1.68, slf4j-api 1.7.30)
ผสาน #660: รองรับคีย์ ED25519 และ ECDSA ในรูปแบบ PuTTY
รวม #655: Bump BouncyCastle เนื่องจาก CVE
ผสาน #653: ทำให้คลาสพารามิเตอร์สามารถใช้เป็นคีย์ HashMap
รวม #647: ลดระดับบันทึกสำหรับตัวแยกวิเคราะห์
ผสาน #630: เพิ่มการรองรับการเข้ารหัส [email protected]
และ [email protected]
รวม #636: ปรับปรุงความเข้ากันได้ของ Android
ผสาน #627: ป้องกันการรั่วไหลของคีย์
การเปลี่ยนแปลงที่ทำลายล้าง : ลบ setSignatureFactories
และ getSignatureFactories
ออกจาก Config และสลับเป็น getKeyAlgorithms
และ setKeyAlgorithms
แก้ไข # 588: เพิ่มการสนับสนุนสำหรับลายเซ็น ssh-rsa2-256
และ ssh-rsa2-512
รวม #579: แก้ไข NPE ใน OpenSSHKnownHosts
รวม #587: เพิ่มตัวค้นหารหัสผ่านลองอีกครั้งสำหรับ OpenSSHKeyV1KeyFile
ผสาน #586: ทำให้ KeyType เข้ากันได้กับ Android Store
รวม #593: เปลี่ยน UserAuth.getAllowedMethods()
เป็นประเภทการส่งคืนคอลเลกชัน
รวม #595: อนุญาตให้อ่านคีย์ความยาวใดก็ได้
รวม #591: อนุญาตให้ค้นหาส่วนขยาย SFTP
รวม #603: เพิ่มวิธีการสร้างไคลเอนต์ Stateful SFTP
รวม #605: ใช้เธรด Daemon เพื่อหลีกเลี่ยงการบล็อกการปิดระบบ JVM
รวม #606: ใช้ JCERandom RNG เป็นค่าเริ่มต้นเสมอ
รวม #609: ล้างข้อความรหัสผ่านหลังการใช้งานเพื่อป้องกันปัญหาด้านความปลอดภัย
รวม #618: แก้ไข localport ของ DirectConnection เพื่อใช้กับ OpenSSH > 8.0
รวม #619: อัปเกรด BouncyCastle เป็น 1.66
รวม #622: ส่ง 'ext-info-c' ด้วยอัลกอริทึม KEX
ผสาน #623: แก้ไขการเข้ารหัสการขนส่งของลายเซ็น nistp521
ผสาน #607: แก้ไข pubkeys ทางคณิตศาสตร์ให้เป็นอัลกอริธึมหลัก
ผสาน #602: แก้ไขการกำหนดคีย์ใบรับรอง RSA
แก้ไข # 415: แก้ไขคำนำหน้า '/' ผิดไปยังเส้นทางใน SFTPClient.mkdirs
เพิ่มการรองรับอัลกอริธึม MAC ของ ETM (Encrypt-then-Mac)
แก้ไข #454: เพิ่มการตรวจสอบความจุที่ขาดหายไปสำหรับ Buffer.putUint64
แก้ไข #466: เพิ่มการหมดเวลาล็อคสำหรับการดำเนินการระยะไกลเพื่อป้องกันการหยุดทำงาน
แก้ไข #470: ทำให้ EdDSA เป็นโรงงานลายเซ็นเริ่มต้น (แรก)
แก้ไข # 467: เพิ่ม AES256-CBC เป็นโหมดการเข้ารหัสในการรองรับ openssh-key-v1
แก้ไข #464: เปิดใช้งาน [email protected] ใน DefaultConfig
แก้ไข #472: จัดการเซิร์ฟเวอร์ที่เริ่มต้นคำขอทั่วโลก
แก้ไข # 485: เพิ่มการรองรับประเภทคีย์ทั้งหมดให้กับไฟล์คีย์ openssh-key-v1
แก้ไข #413: ใช้ UTF-8 สำหรับ PrivateKeyFileResource
แก้ไข #427: รองรับไฟล์ ed25519 openssh-key-v1 ที่เข้ารหัส
อัปเกรด BouncyCastle เป็น 1.60
เพิ่มการรองรับสำหรับ [email protected] MAC
เพิ่มการรองรับ hmac-ripemd160
แก้ไข #382: แก้ไขการหลบหนีใน WildcardHostmatcher
เพิ่มชุดทดสอบการรวมโดยใช้ Docker กับ OpenSSH
แก้ไข #187: แก้ไขข้อผิดพลาดความยาวใน Buffer.putString
แก้ไข #405: ยืนยันโฮสต์ต่อไปหากคีย์โฮสต์แรกไม่ตรงกัน
รวม #372: อัปเกรดเป็น 'net.i2p.crypto:eddsa:0.2.0'
แก้ไข #355 และ #354: ถอดรหัสไบต์ลายเซ็นอย่างถูกต้อง
แก้ไข #365: เพิ่มการรองรับลายนิ้วมือ OpenSSH รูปแบบใหม่ของคีย์เซิร์ฟเวอร์
แก้ไข #356: แก้ไขการตรวจจับประเภทคีย์สำหรับคีย์สาธารณะ ECDSA
ทำให้เข้ากันได้กับ SSHJ Java9
แก้ไข #341: แก้ไขเส้นทางการเดินระหว่างการคัดลอกแบบเรียกซ้ำ
รวม #338: เพิ่ม ConsolePasswordFinder เพื่ออ่านรหัสผ่านจาก stdin
ผสาน #336: เพิ่มการรองรับลายเซ็น ecdsa-sha2-nistp384 และ ecdsa-sha2-nistp521
แก้ไข #331: เพิ่มการรองรับไวด์การ์ดในไฟล์known_hosts
ผสาน #322: แก้ไขการถดถอยจาก 40f956b (พารามิเตอร์ความยาวไม่ถูกต้องในเอาท์พุตสตรีม)
ผสาน #319: เพิ่มการรองรับไฟล์คีย์ใบรับรอง [email protected]
และ [email protected]
อัปเกรด Gradle เป็น 3.4.1
ผสาน #305: เพิ่มการรองรับสำหรับการเข้ารหัสสตริงแบบกำหนดเอง
แก้ไข #312: อัปเกรด BouncyCastle เป็น 1.56
รวม #294: อ้างอิง ED25519 ด้วยค่าคงที่แทนชื่อ
รวม #293, #295 และ #301: แก้ไขบรรจุภัณฑ์ OSGi
เพิ่มกลุ่ม Diffie Hellman ใหม่ 15-18 สำหรับอัลกอริทึม KeyExchange ที่แข็งแกร่งยิ่งขึ้น
เปิดใช้งานไฟล์คีย์ PKCS5 ใน DefaultConfig
ผสาน #291: แก้ไขการโหลด sshj.properties และข้อความยกเว้นที่ถูกล่ามโซ่
รวม #284: จับการขัดจังหวะในเธรด Keepalive อย่างถูกต้อง
แก้ไข #292: ส่ง RandomFactory ที่กำหนดค่าไปยัง Diffie Hellman KEX
แก้ไข # 256: ตอนนี้ SSHJ สร้างขึ้นหากไม่มีที่เก็บ git อยู่
LocalPortForwarder ตอนนี้ขัดจังหวะเธรดของตัวเองอย่างถูกต้องเมื่อปิด ()
แก้ไข #276: เพิ่มการสนับสนุนสำหรับ ed-25519 และรูปแบบคีย์ OpenSSH ใหม่
แก้ไข #280: อ่านเวอร์ชันจากไฟล์ sshj.properties ที่สร้างขึ้นเพื่อส่งออกเวอร์ชันอย่างถูกต้องในระหว่างการเจรจา
แก้ไขความเข้ากันได้ของ Android
อัปเกรดเป็น Gradle 3.0
รวม #271: โหลดknown_hostsโดยไม่ต้องใช้ BouncyCastle
รวม #269: นำการรองรับ Java6 กลับมาตามความต้องการที่ได้รับความนิยม
ผสาน #267: เพิ่มการสนับสนุนสำหรับการบันทึกต่อการเชื่อมต่อ (แก้ไข #264)
รวม #262, #265 และ #266: เพิ่มการรองรับไฟล์คีย์ PKCS5
แก้ไข toString ของ sftp FileAttributes (แก้ไข #258)
แก้ไข #255: ไม่ต้องขึ้นอยู่กับคลาส 'ทำเครื่องหมายส่วนตัว' ในแพ็คเกจ net.i2p.crypto.eddsa.math
อีกต่อไป แก้ไขการพึ่งพา OSGI
การรักษาบรรทัดระบุเซิร์ฟเวอร์ SSH ที่ลงท้ายด้วย 'n' แทนที่จะเป็น 'rn' อย่างผ่อนปรน
ปรับปรุงการแยกวิเคราะห์การระบุเซิร์ฟเวอร์ SSH บรรทัดส่วนหัวที่ยาวเกินไปจะไม่ทำให้โปรโตคอลเสียหายอีกต่อไป
แนะนำการเปลี่ยนแปลงที่ไม่สมบูรณ์ในลักษณะการคัดลอก SFTP : ก่อนหน้านี้การดำเนินการคัดลอก SFTP จะทำงานแตกต่างออกไปหากทั้งต้นทางและเป้าหมายเป็นโฟลเดอร์ที่มีชื่อต่างกัน ในกรณีนี้ แทนที่จะคัดลอกเนื้อหาของต้นทางไปยังไดเร็กทอรีเป้าหมาย ตัวไดเร็กทอรีนั้นจะถูกคัดลอกเป็นไดเร็กทอรีย่อยของไดเร็กทอรีเป้าหมาย พฤติกรรมนี้ได้ถูกลบออกแล้วเพื่อสนับสนุนพฤติกรรมเริ่มต้นซึ่งก็คือการคัดลอกเนื้อหาของแหล่งที่มาไปยังเป้าหมาย นำพฤติกรรมให้สอดคล้องกับวิธีการทำงานของ SCP
แก้ไข #252 (ผ่าน: #253): เขตย่อยที่มีชื่อเดียวกันจะไม่ถูกรวมเข้าด้วยกันโดยไม่ได้ตั้งใจอีกต่อไป
แก้ไข #239: การส่งต่อพอร์ตระยะไกลไม่ทำงานหากคุณใช้สตริงว่างเป็นที่อยู่ หรือที่อยู่ที่รับทั้งหมด
แก้ไข # 242: เพิ่มส่วนหัว OSGI ลงในรายการ jar ของแหล่งที่มา
แก้ไข #236: การส่งต่อพอร์ตระยะไกลด้วยการจัดสรรพอร์ตแบบไดนามิกล้มเหลวด้วย BufferUnderflowException
อัปเกรดการกระจายการไล่ระดับเป็น 2.12
ปิด #234: การสนับสนุน Java6 ที่ลดลง (0.15.0 ไม่สามารถใช้งาน Java6 ได้เนื่องจากการพึ่งพา Java7)
แก้ไข #118: เพิ่มสวิตช์การกำหนดค่าสำหรับการรอรหัสเซิร์ฟเวอร์ก่อนที่จะส่งรหัสลูกค้า
แก้ไข #114: เพิ่ม javadoc ที่คุณต้องเรียก close() บนคำสั่งเสมอก่อนที่จะตรวจสอบรหัสทางออก
แก้ไข #237: แก้ไขสภาวะการแข่งขันหากได้รับคำขอทั่วโลก [email protected]
โดยตรงหลังจากการตรวจสอบสิทธิ์สำเร็จ
แก้ไข #220: เพิ่มการรองรับคีย์โฮสต์ ssh-ed25519
แก้ไข #225: แก้ไขข้อผิดพลาดในการคำนวณลายนิ้วมือ ECDSA ซึ่งบางครั้งสร้างลายนิ้วมือไม่ถูกต้อง
เพิ่ม arcfour
Stream Ciphers จาก RFC4253 และ RFC4345
เพิ่ม Block Ciphers ทั้งหมดจาก RFC4344 และ RFC4253
แก้ไข # 171: เพิ่มการรองรับอัลกอริธึมการแลกเปลี่ยนคีย์ [email protected]
เพิ่มการรองรับอัลกอริธึมการแลกเปลี่ยนคีย์ ecdh-sha2-nistp256
, ecdh-sha2-nistp384
และ ecdh-sha2-nistp521
แก้ไข # 167: เพิ่มการสนับสนุนสำหรับวิธีการแลกเปลี่ยนคีย์ diffie-hellman-group-exchange-sha1
และ diffie-hellman-group-exchange-sha256
แก้ไข #212: กำหนดค่าการหลบหนีเส้นทางเพื่อให้การขยายเชลล์ทำงานได้อย่างถูกต้อง
ผสาน #210: RemoteFileInputStream.skip ส่งกลับค่าที่ไม่ถูกต้อง (แก้ไข #209)
รวม #208: เพิ่มการรองรับการจำกัดแบนด์วิดท์ของ SCP
ผสาน #211: ทำให้การตรวจจับรูปแบบไฟล์คีย์มีประสิทธิภาพมากขึ้น
ผสาน #199: แก้ไขสำหรับ IndexOutOfBoundsException ใน ReadAheadRemoteFileInputStream แก้ไข #183
รวม #195: รองรับการตรวจสอบสิทธิ์ใหม่: gssapi-with-mic
ผสาน #201: ตัวเลือกใหม่ในการตรวจสอบอัลกอริธึมการแลกเปลี่ยนคีย์ที่เจรจาไว้
ผสาน #196: แก้ไขการค้นหาชื่อโฮสต์ที่สมบูรณ์ในไฟล์โฮสต์ที่รู้จัก
เพิ่มการรองรับพร็อกซี HTTP เมื่อรัน JDK6 หรือ JDK7 แก้ไข: #170
รวม #186: แก้ไขการตรวจจับการสิ้นสุดสตรีม
กำลังคอมไพล์เป็น JDK6 แก้ไข #179 และ #185
ปิดซ็อกเก็ตและช่องอย่างถูกต้องเมื่อ LocalPortForwarder ไม่สามารถเปิดและเริ่มช่อง (แก้ไข #175 และ #176)
รวม #181: ความยาวแพ็กเก็ตการเขียนไม่ถูกต้องเมื่ออ่านด้วยออฟเซ็ต (แก้ไข #180)
พิกัด maven ใหม่ com.hierynomus:sshj:0.11.0
เนื่องจาก @hierynomus เข้ามาเป็นผู้ดูแล SSHJ
ย้ายระบบบิลด์ไปยัง Gradle 2.2.1
ผสาน #150: แก้ไขการจัดการไฟล์ที่ไม่ถูกต้องบนเซิร์ฟเวอร์ SSH บางตัว การแก้ไข: #54, #119, #168, #169
ทำให้ jzlib
เป็นทางเลือกในการรวม OSGi การแก้ไข: # 162
ปรับปรุงระดับบันทึกบางส่วน แก้ไข: #161
รวม #156, #164, #165: ขนาดบล็อกคงที่สำหรับ hmac-sha2-256
และ hmac-sha2-512
รวม #141: เพิ่มการสนับสนุนพรอกซี
รวม #157, #163: แก้ไขเอกสารและบิลด์แล้ว
อัปเกรด BouncyCastle เป็น 1.51 แก้ไข: #142
ใช้ Keep-alive ด้วยการตรวจจับการเชื่อมต่อหลุด แก้ไข #166