Paglabas ng SFTP Server SFTPGo 2.2.0

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ выпуск сСрвСра 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

Magdagdag ng komento