ΠΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π²ΡΠΏΡΡΠΊ ΡΠ΅ΡΠ²Π΅ΡΠ° SFTPGo 2.2, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π³ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ΄Π°Π»ΡΠ½Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ² SFTP, SCP/SSH, Rsync, HTTP ΠΈ WebDav. Π ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ SFTPGo ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» SSH. ΠΠ°Π½Π½ΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΎΡΠ΄Π°Π²Π°ΡΡΡΡ ΠΊΠ°ΠΊ Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, ΡΠ°ΠΊ ΠΈ ΠΈΠ· Π²Π½Π΅ΡΠ½ΠΈΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΡ Ρ Amazon S3, Google Cloud Storage ΠΈ Azure Blob Storage. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π² Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅. ΠΠ»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΉ Π±Π°Π·Ρ ΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π‘Π£ΠΠ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ SQL ΠΈΠ»ΠΈ ΡΠΎΡΠΌΠ°ΡΠ° ΠΊΠ»ΡΡ/Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ PostgreSQL, MySQL, SQLite, CockroachDB ΠΈΠ»ΠΈ bbolt, Π½ΠΎ ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, Π½Π΅ ΡΡΠ΅Π±ΡΡΡΠ°Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π²Π½Π΅ΡΠ½Π΅ΠΉ ΠΠ. ΠΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° ΡΠ·ΡΠΊΠ΅ Go ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ GPLv3.
Sa bagong bersyon:
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π΄Π²ΡΡ ΡΠ°ΠΊΡΠΎΡΠ½ΠΎΠΉ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΆΠΈΠ·Π½ΠΈ (TOTP, RFC 6238). Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠ°ΠΊ Authy ΠΈ Google Authenticator.
- Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ΅ΡΠ΅Π· ΠΏΠ»Π°Π³ΠΈΠ½Ρ. Π‘ΡΠ΅Π΄ΠΈ ΡΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²: ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΎΠ±ΠΌΠ΅Π½Π° ΠΊΠ»ΡΡΠ°ΠΌΠΈ, ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΡΡ Π΅ΠΌΡ Publish/Subscribe, Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠΈΡΠΊ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠΎΠ±ΡΡΠΈΡΡ Π² Π‘Π£ΠΠ.
- Π REST API Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΊΠ»ΡΡΠ°ΠΌ, ΠΏΠΎΠΌΠΈΠΌΠΎ ΡΠΎΠΊΠ΅Π½ΠΎΠ² JWT, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ (ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ Π΄Π°Π½Π½ΡΡ ) Π² ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ΅ ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°ΠΌ ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Swagger UI Π΄Π»Ρ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΈ ΠΏΠΎ ΡΠ΅ΡΡΡΡΠ°ΠΌ API Π±Π΅Π· ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²Π½Π΅ΡΠ½ΠΈΡ ΡΡΠΈΠ»ΠΈΡ.
- Π web-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π·Π°ΠΏΠΈΡΠΈ (Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ², ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ², ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅), ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ±ΡΠΎΡΠ° ΠΏΠ°ΡΠΎΠ»Ρ Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ email, ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Ρ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΡΠΈΠΊ PDF-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ². ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ HTTP-ΡΡΡΠ»ΠΎΠΊ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΡΠ°ΠΉΠ»Π°ΠΌ ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°ΠΌ, Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ Π·Π°Π΄Π°Π½ΠΈΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠΎΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ°, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΏΠΎ IP-Π°Π΄ΡΠ΅ΡΠ°ΠΌ, Π·Π°Π΄Π°Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ ΡΡΡΠ»ΠΊΠΈ ΠΈ Π»ΠΈΠΌΠΈΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΡΠ»Π° Π·Π°Π³ΡΡΠ·ΠΎΠΊ.
Mga pangunahing tampok ng SFTPGo:
- Ang bawat account ay chrooted, na naghihigpit sa pag-access sa home directory ng user. Posibleng gumawa ng mga virtual na direktoryo na tumutukoy sa data sa labas ng home directory ng user.
- Ang mga account ay naka-imbak sa isang virtual na database ng user na hindi sumasalubong sa database ng user ng system. Ang SQLite, MySQL, PostgreSQL, bbolt at in-memory na storage ay maaaring gamitin upang mag-imbak ng mga database ng user. Ang mga paraan ay ibinibigay para sa pagmamapa ng mga virtual at system account - ang direkta o arbitrary na pagmamapa ay posible (ang isang user ng system ay maaaring imapa sa isa pang virtual na user).
- Ang pampublikong key, SSH key, at pagpapatunay ng password ay suportado (kabilang ang interactive na pagpapatotoo gamit ang pagpasok ng password sa keyboard). Posibleng mag-bind ng ilang key para sa bawat user, gayundin ang pag-set up ng multi-factor at multi-stage na authentication (halimbawa, sa kaso ng matagumpay na key authentication, maaaring humiling ng isang password).
- Posibleng i-configure ang iba't ibang paraan ng pagpapatotoo para sa bawat user, pati na rin tukuyin ang sarili nilang mga pamamaraan na ipinatupad sa pamamagitan ng pagtawag sa mga programa ng external na authenticator (halimbawa, para sa pagpapatotoo sa pamamagitan ng LDAP) o pagpapadala ng mga kahilingan sa pamamagitan ng HTTP API.
- Posibleng ikonekta ang mga external na handler o HTTP API na tawag upang dynamic na baguhin ang mga setting ng user na tinatawag bago mag-log in ang user. Sinusuportahan ang dynamic na paglikha ng user sa koneksyon.
- Suporta para sa mga indibidwal na quota para sa laki ng data at bilang ng mga file.
- Suporta para sa paglilimita ng bandwidth na may hiwalay na mga setting para sa mga limitasyon para sa papasok at papalabas na trapiko, pati na rin ang mga limitasyon para sa bilang ng mga sabay-sabay na koneksyon.
- Mga tool sa pagkontrol sa pag-access na kumikilos kaugnay ng isang user o direktoryo (maaari mong paghigpitan ang pagtingin sa listahan ng mga file, pagbawalan ang pag-upload, pag-download, pag-overwrit, pagtanggal, pagpapalit ng pangalan o pagpapalit ng mga karapatan sa pag-access, pagbabawal sa paggawa ng mga direktoryo o simbolikong link, atbp.).
- Para sa bawat user, maaari mong tukuyin ang mga indibidwal na paghihigpit sa network, halimbawa, maaari mo lamang payagan ang pag-access mula sa ilang mga IP o subnet.
- Sinusuportahan nito ang koneksyon ng mga filter para sa nada-download na nilalaman na may kaugnayan sa mga indibidwal na gumagamit at mga direktoryo (halimbawa, maaari mong harangan ang pag-download ng mga file na may isang tiyak na extension).
- Maaari mong itali ang mga humahawak na inilunsad sa panahon ng iba't ibang mga operasyon gamit ang file (paglo-load, pagtanggal, pagpapalit ng pangalan, atbp.). Bilang karagdagan sa mga humahawak sa pagtawag, sinusuportahan ang pagpapadala ng mga notification sa anyo ng mga kahilingan sa HTTP.
- Awtomatikong pagwawakas ng mga hindi aktibong koneksyon.
- Pag-update ng pagsasaayos ng atom nang hindi nasira ang mga koneksyon.
- Nagbibigay ng mga sukatan para sa pagsubaybay sa Prometheus.
- Ang HAProxy PROXY protocol ay sinusuportahan upang ayusin ang load balancing o proxy na mga koneksyon sa mga serbisyo ng SFTP/SCP nang hindi nawawala ang kaalaman sa pinagmulang IP address ng user.
- REST API para sa pamamahala ng mga user at direktoryo, paggawa ng mga backup at pag-uulat sa mga aktibong koneksyon.
- Web interface (http://127.0.0.1:8080/web) para sa pagsasaayos at pagsubaybay (sinusuportahan din ang configuration sa pamamagitan ng regular na configuration file).
- Kakayahang tukuyin ang mga setting sa JSON, TOML, YAML, HCL at envfile na mga format.
- Suporta para sa pagkonekta sa pamamagitan ng SSH na may limitadong access sa mga command ng system. Halimbawa, ang mga command na kinakailangan para sa Git (git-receive-pack, git-upload-pack, git-upload-archive) at rsync ay pinapayagang tumakbo, pati na rin ang ilang built-in na command (scp, md5sum, sha*sum, cd, pwd, sftpgo-copy at sftpgo-remove).
- Portable mode para sa pagbabahagi ng isang nakabahaging direktoryo na may awtomatikong pagbuo ng mga kredensyal ng koneksyon na ina-advertise sa pamamagitan ng multicast DNS.
- Built-in na sistema ng pag-profile para sa pagtatasa ng pagganap.
- Pinasimpleng proseso ng paglilipat ng Linux system account.
- Pag-iimbak ng mga log sa JSON na format.
- Suporta para sa mga virtual na direktoryo (halimbawa, ang mga nilalaman ng isang partikular na direktoryo ay maaaring ibigay hindi mula sa lokal na file system, ngunit mula sa panlabas na cloud storage).
- Suporta para sa cryptfs upang malinaw na i-encrypt ang data sa mabilisang pag-save sa file system at pag-decrypt kapag nag-a-upload.
- Suporta para sa pagpapasa ng mga koneksyon sa iba pang mga SFTP server.
- Kakayahang gumamit ng SFTPGo bilang isang SFTP subsystem para sa OpenSSH.
- Ang kakayahang mag-imbak ng mga kredensyal at kumpidensyal na data sa naka-encrypt na form gamit ang mga KMS server (Key Management Services), gaya ng Vault, GCP KMS, AWS KMS.
Pinagmulan: opennet.ru