SSH.NET
SSH.NET เป็นไลบรารี Secure Shell (SSH-2) สำหรับ .NET ซึ่งได้รับการปรับให้เหมาะกับการทำงานแบบขนาน
คุณสมบัติที่สำคัญ
- การดำเนินการคำสั่ง SSH โดยใช้วิธีซิงโครนัสและอะซิงโครนัส
- ฟังก์ชัน SFTP สำหรับการดำเนินการทั้งแบบซิงโครนัสและแบบอะซิงโครนัส
- ฟังก์ชันการทำงานของ SCP
- การส่งต่อพอร์ตระยะไกล ไดนามิก และท้องถิ่น
- การใช้งานเชลล์/เทอร์มินัลแบบโต้ตอบ
- การตรวจสอบสิทธิ์ผ่านกุญแจสาธารณะ รหัสผ่าน และวิธีโต้ตอบด้วยแป้นพิมพ์ รวมถึงหลายปัจจัย
- การเชื่อมต่อผ่านพร็อกซี SOCKS4, SOCKS5 หรือ HTTP
วิธีใช้
รันคำสั่ง
using ( var client = new SshClient ( " sftp.foo.com " , " guest " , new PrivateKeyFile ( " path/to/my/key " ) ) )
{
client . Connect ( ) ;
using SshCommand cmd = client . RunCommand ( " echo 'Hello World!' " ) ;
Console . WriteLine ( cmd . Result ) ; // "Hello World!n"
}
อัปโหลดและแสดงรายการไฟล์โดยใช้ SFTP
using ( var client = new SftpClient ( " sftp.foo.com " , " guest " , " pwd " ) )
{
client . Connect ( ) ;
using ( FileStream fs = File . OpenRead ( @"C:tmptest-file.txt" ) )
{
client . UploadFile ( fs , " /home/guest/test-file.txt " ) ;
}
foreach ( ISftpFile file in client . ListDirectory ( " /home/guest/ " ) )
{
Console . WriteLine ( $" { file . FullName } { file . LastWriteTime } " ) ;
}
}
ประเภทหลัก
ประเภทหลักที่ห้องสมุดนี้มีให้คือ:
- Renci.SshNet.SshClient
- Renci.SshNet.SftpClient
- Renci.SshNet.ScpClient
- Renci.SshNet.PrivateKeyFile
- Renci.SshNet.SshCommand
- Renci.SshNet.ShellStream
เอกสารเพิ่มเติม
- ตัวอย่างเพิ่มเติม
- เบราว์เซอร์ API
วิธีการเข้ารหัส
SSH.NET รองรับวิธีการเข้ารหัสต่อไปนี้:
- aes128-ctr
- aes192-ctr
- aes256-ctr
- aes128-gcm @openssh.com
- aes256-gcm @openssh.com
- ช่า20-โพลี1305 @openssh.com
- aes128-cbc
- aes192-cbc
- aes256-cbc
- 3des-cbc
วิธีการแลกเปลี่ยนคีย์
SSH.NET รองรับวิธีการแลกเปลี่ยนคีย์ต่อไปนี้:
- เส้นโค้ง25519-sha256
- เส้นโค้ง25519-sha256 @libssh.org
- ecdh-sha2-nistp256
- ecdh-sha2-nistp384
- ecdh-sha2-nistp521
- diffie-hellman-กลุ่ม-exchange-sha256
- diffie-hellman-กลุ่มแลกเปลี่ยน-sha1
- ดิฟฟี-เฮลล์แมน-group16-sha512
- ดิฟฟี่เฮลล์แมนกรุ๊ป14-sha256
- ดิฟฟี่เฮลล์แมนกรุ๊ป14-sha1
- ดิฟฟี-เฮลล์แมน-group1-sha1
การรับรองความถูกต้องของคีย์สาธารณะ
SSH.NET รองรับรูปแบบคีย์ส่วนตัวต่อไปนี้:
- อาร์เอสเอ อิน
- รูปแบบ PEM แบบดั้งเดิมของ OpenSSL ("BEGIN RSA PRIVATE KEY")
- รูปแบบ OpenSSL PKCS#8 PEM ("เริ่มต้นคีย์ส่วนตัว", "เริ่มต้นคีย์ส่วนตัวที่เข้ารหัส")
- รูปแบบ ssh.com ("เริ่มต้นคีย์ส่วนตัวที่เข้ารหัส SSH2")
- รูปแบบคีย์ OpenSSH ("เริ่มต้นคีย์ส่วนตัว OPENSSH")
- ดีเอสเอ อิน
- รูปแบบ PEM แบบดั้งเดิมของ OpenSSL ("BEGIN DSA PRIVATE KEY")
- รูปแบบ OpenSSL PKCS#8 PEM ("เริ่มต้นคีย์ส่วนตัว", "เริ่มต้นคีย์ส่วนตัวที่เข้ารหัส")
- รูปแบบ ssh.com ("เริ่มต้นคีย์ส่วนตัวที่เข้ารหัส SSH2")
- ECDSA 256/384/521 นิ้ว
- รูปแบบ PEM ดั้งเดิมของ OpenSSL ("BEGIN EC PRIVATE KEY")
- รูปแบบ OpenSSL PKCS#8 PEM ("เริ่มต้นคีย์ส่วนตัว", "เริ่มต้นคีย์ส่วนตัวที่เข้ารหัส")
- รูปแบบคีย์ OpenSSH ("เริ่มต้นคีย์ส่วนตัว OPENSSH")
- ED25519 นิ้ว
- รูปแบบ OpenSSL PKCS#8 PEM ("เริ่มต้นคีย์ส่วนตัว", "เริ่มต้นคีย์ส่วนตัวที่เข้ารหัส")
- รูปแบบคีย์ OpenSSH ("เริ่มต้นคีย์ส่วนตัว OPENSSH")
คีย์ส่วนตัวในรูปแบบ PEM ดั้งเดิมของ OpenSSL สามารถเข้ารหัสได้โดยใช้วิธีการเข้ารหัสวิธีใดวิธีหนึ่งต่อไปนี้:
- DES-EDE3-CBC
- DES-EDE3-CFB
- DES-CBC
- AES-128-CBC
- AES-192-CBC
- AES-256-CBC
คีย์ส่วนตัวในรูปแบบ OpenSSL PKCS#8 PEM สามารถเข้ารหัสได้โดยใช้วิธีการเข้ารหัสใดๆ ที่ BouncyCastle รองรับ
คีย์ส่วนตัวในรูปแบบ ssh.com สามารถเข้ารหัสได้โดยใช้วิธีการเข้ารหัสวิธีใดวิธีหนึ่งต่อไปนี้:
คีย์ส่วนตัวในรูปแบบคีย์ OpenSSH สามารถเข้ารหัสได้โดยใช้วิธีการเข้ารหัสวิธีใดวิธีหนึ่งต่อไปนี้:
- 3des-cbc
- aes128-cbc
- aes192-cbc
- aes256-cbc
- aes128-ctr
- aes192-ctr
- aes256-ctr
- aes128-gcm @openssh.com
- aes256-gcm @openssh.com
- ช่า20-โพลี1305 @openssh.com
อัลกอริธึมคีย์โฮสต์
SSH.NET รองรับอัลกอริธึมคีย์โฮสต์ต่อไปนี้:
- ssh-ed25519
- ecdsa-sha2-nistp256
- ecdsa-sha2-nistp384
- ecdsa-sha2-nistp521
- rsa-sha2-512
- rsa-sha2-256
- ssh-rsa
- ssh-dss
รหัสยืนยันข้อความ
SSH.NET รองรับอัลกอริธึม MAC ต่อไปนี้:
- hmac-sha2-256
- hmac-sha2-512
- hmac-sha1
- hmac-sha2-256-etm @openssh.com
- hmac-sha2-512-etm @openssh.com
- hmac-sha1-etm @openssh.com
การบีบอัด
SSH.NET รองรับอัลกอริธึมการบีบอัดต่อไปนี้:
- ไม่มี (ค่าเริ่มต้น)
- ซลิบ @openssh.com
การสนับสนุนกรอบงาน
SSH.NET รองรับเฟรมเวิร์กเป้าหมายต่อไปนี้:
- .NETFramework 4.6.2 (และสูงกว่า)
- .NET มาตรฐาน 2.0 และ 2.1
- .NET 6 (และสูงกว่า)
สร้างห้องสมุด
ไลบรารีไม่มีข้อกำหนดพิเศษในการสร้าง นอกเหนือจาก .NET SDK ที่เป็นปัจจุบัน ดูเพิ่มเติมที่ CONTRIBUTING.md
รองรับ SSH.NET
คุณหรือบริษัทของคุณพึ่งพา SSH.NET ในโครงการของคุณหรือไม่? หากคุณต้องการสนับสนุนให้เราดำเนินต่อไปและแสดงให้เราเห็นว่าคุณชื่นชมงานของเรา โปรดพิจารณาเป็นผู้สนับสนุนผ่านผู้สนับสนุน GitHub