SSH.NET
SSH.NET은 병렬 처리에 최적화된 .NET용 SSH-2(Secure Shell) 라이브러리입니다.
주요 특징
- 동기식 및 비동기식 방법을 모두 사용하여 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.Ssh클라이언트
- Renci.SshNet.Sftp클라이언트
- Renci.SshNet.Scp클라이언트
- Renci.SshNet.PrivateKey파일
- Renci.SshNet.SshCommand
- Renci.SshNet.ShellStream
추가 문서
암호화 방법
SSH.NET은 다음 암호화 방법을 지원합니다.
- aes128-ctr
- aes192-ctr
- aes256-ctr
- aes128-gcm @openssh.com
- aes256-gcm @openssh.com
- chacha20-폴리1305 @openssh.com
- aes128-cbc
- aes192-cbc
- aes256-cbc
- 3des-cbc
키 교환 방법
SSH.NET은 다음과 같은 키 교환 방법을 지원합니다.
- curve25519-sha256
- curve25519-sha256 @libssh.org
- ecdh-sha2-nistp256
- ecdh-sha2-nistp384
- ecdh-sha2-nistp521
- diffie-hellman-그룹-교환-sha256
- 디피-헬먼-그룹-교환-sha1
- 디피-헬먼-group16-sha512
- 디피-헬먼-group14-sha256
- 디피-헬먼-group14-sha1
- 디피-헬먼-group1-sha1
공개키 인증
SSH.NET은 다음 개인 키 형식을 지원합니다.
- RSA
- OpenSSL 기존 PEM 형식("BEGIN RSA PRIVATE KEY")
- OpenSSL PKCS#8 PEM 형식("BEGIN PRIVATE KEY", "BEGIN ENCRYPTED PRIVATE KEY")
- ssh.com 형식("SSH2 암호화된 개인 키 시작")
- OpenSSH 키 형식("BEGIN OPENSSH 개인 키")
- DSA
- OpenSSL 기존 PEM 형식("BEGIN DSA PRIVATE KEY")
- OpenSSL PKCS#8 PEM 형식("BEGIN PRIVATE KEY", "BEGIN ENCRYPTED PRIVATE KEY")
- ssh.com 형식("SSH2 암호화된 개인 키 시작")
- ECDSA 256/384/521인치
- OpenSSL 기존 PEM 형식("BEGIN EC PRIVATE KEY")
- OpenSSL PKCS#8 PEM 형식("BEGIN PRIVATE KEY", "BEGIN ENCRYPTED PRIVATE KEY")
- OpenSSH 키 형식("BEGIN OPENSSH 개인 키")
- ED25519
- OpenSSL PKCS#8 PEM 형식("BEGIN PRIVATE KEY", "BEGIN ENCRYPTED PRIVATE KEY")
- OpenSSH 키 형식("BEGIN OPENSSH 개인 키")
OpenSSL 기존 PEM 형식의 개인 키는 다음 암호화 방법 중 하나를 사용하여 암호화할 수 있습니다.
- 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
- chacha20-폴리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은 다음 압축 알고리즘을 지원합니다.
- 없음(기본값)
- zlib @openssh.com
프레임워크 지원
SSH.NET은 다음 대상 프레임워크를 지원합니다.
- .NETFramework 4.6.2(이상)
- .NET 표준 2.0 및 2.1
- .NET 6(이상)
도서관 구축
라이브러리에는 최신 .NET SDK 외에 빌드하기 위한 특별한 요구 사항이 없습니다. CONTRIBUTING.md도 참조하세요.
SSH.NET 지원
귀하 또는 귀하의 회사는 프로젝트에서 SSH.NET을 사용합니까? 우리가 계속해서 나아갈 수 있도록 격려하고 우리의 작업에 감사한다는 것을 보여주고 싶다면 GitHub 후원자를 통해 후원자가 되는 것을 고려해 보십시오.