# Tiedoston lähetys: salasana luodaan automaattisesti, linkki + salasana tulostetaan $ ttl send secret.pdf No password provided. Generate one? [Y/n]: Generated password: aB3kL9mXq7Rt ·✧★◉ Thank goodness, secret.pdf is in orbit (1.2 MB) IMPORTANT! Save your password — required to download and decrypt the file. Password: aB3kL9mXq7Rt https://ttl.space/aBcDeFgHiJ # Lataaminen: salasana kysytään interaktiivisesti $ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ******** Password verified ◉★✧· Phew, secret.pdf landed safe and sound (1.2 MB)
CLI salaa, lähettää, lataa ja purkaa salauksen automaattisesti. Palvelin ei näe salasanaasi eikä selväkielistä dataasi.
$ brew install tweenietomatoes/ttl/ttl
$ scoop bucket add ttl https://github.com/tweenietomatoes/scoop-ttl $ scoop install ttl
# Lataa omalle alustallesi julkaisuista $ curl -Lo ttl.tar.gz \ https://github.com/tweenietomatoes/ttl/releases/download/v1.6.0/ttl_1.6.0_linux_amd64.tar.gz $ tar xzf ttl.tar.gz && sudo mv ttl /usr/local/bin/
$ go install github.com/tweenietomatoes/ttl/cmd/ttl@latest
$ git clone https://github.com/tweenietomatoes/ttl $ cd ttl && go build -o ttl ./cmd/ttl/ $ sudo mv ttl /usr/local/bin/
$ ttl version ttl 1.6.0
# Salasana luodaan automaattisesti, oletus-TTL 7d $ ttl send report.xlsx
Jos salasanaa ei anneta terminaalissa, CLI kysyy:
No password provided. Generate one? [Y/n]:
Paina Enter tai kirjoita y luodaksesi automaattisesti.
$ ttl send -p mySecretPass -t 1h document.pdf
# Tiedosto on käytetty heti, kun ensimmäinen lataus alkaa; katkon jälkeen vain sama lataus voi jatkua $ ttl send -b photo.jpg
$ ttl send -t 5m temp-credentials.txt # vanhenee 5 minuutissa $ ttl send -t 30m meeting-link.txt # vanhenee 30 minuutissa $ ttl send -t 6h backup.tar.gz # vanhenee 6 tunnissa $ ttl send -t 1d daily-report.pdf # vanhenee 1 päivässä $ ttl send -t 3d project-archive.zip # vanhenee 3 päivässä $ ttl send -t 5d design-assets.zip # vanhenee 5 päivässä $ ttl send report.xlsx # vanhenee 7 päivässä (oletus)
$ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ******** Password verified ◉★✧· Phew, document.pdf landed safe and sound (4.2 MB)
Salasana luetaan turvallisesti, sitä ei näytetä terminaalissa. Alkuperäinen tiedostonimi palautetaan; jos samanniminen tiedosto on jo tulostehakemistossa, tiedosto tallennetaan nimellä name (1).ext, eikä olemassa olevaa tiedostoa korvata.
# Voit käyttää pelkkää 10-merkkistä tokenia koko URL-osoitteen sijaan $ ttl get aBcDeFgHiJ
$ ttl get -o ~/Downloads aBcDeFgHiJ
Oletuksena tiedostot tallennetaan nykyiseen hakemistoon. Käytä -o / --output -lippua määrittääksesi toisen hakemiston.
$ ttl get -p mySecretPass https://ttl.space/aBcDeFgHiJ
Voit myös ladata ja purkaa tiedostoja selaimessa avaamalla linkin suoraan. Verkkokäyttöliittymä käyttää samaa tiedostomuotoa ja samoja algoritmeja (Argon2id, XChaCha20-Poly1305) ja kysyy salasanasi. Ohjelmiston asennusta ei tarvita.
Salasana toimii salausavaimen lähtöarvona. Se ei koskaan poistu laitteeltasi eikä sitä koskaan lähetetä palvelimelle. Sen voi antaa kuudella tavalla:
$ ttl send notes.txt No password provided. Generate one? [Y/n]: y Generated password: aB3kL9mXq7Rt
Luo kryptografisesti satunnaisen 12-merkkisen salasanan joukosta [0-9A-Za-z]. Käytettävissä vain send-komennossa (interaktiivisesti tai automaattisesti --json-tilassa).
$ ttl send notes.txt No password provided. Generate one? [Y/n]: n Enter password: ******** Confirm password: ******** $ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ********
Salasanaa ei näytetä eikä tallenneta komentorivihistoriaan. send-komennossa valitset ensin, luodaanko salasana automaattisesti. get-komennossa sinulta kysytään salasana suoraan.
-p / --password$ ttl send -p mySecretPass file.zip $ ttl get --password mySecretPass https://ttl.space/aBcDeFgHiJ
-p / --password näkyy ps aux -tulosteessa ja voi tallentua komentotulkin historiaan (~/.bash_history). Vältä käyttöä jaetuissa ympäristöissä ja skripteissä. Käytä sen sijaan --password-stdin tai --password-file.--password-stdin# Putkittaminen echolla $ echo "mySecretPass" | ttl send --password-stdin backup.tar.gz # Putkittaminen salasananhallinnasta $ pass show ttl/key | ttl send --password-stdin data.zip # Putkittaminen ympäristömuuttujasta $ printenv MY_SECRET | ttl get --password-stdin https://ttl.space/aBcDeFgHiJ # Heredoc $ ttl send --password-stdin report.pdf <<<"mySecretPass"
Lukee ensimmäisen rivin stdinistä. Hyödyllinen skripteissä, CI/CD-putkissa ja automaatiossa. Jos stdin ei ole terminaali eikä salasanalähdettä ole määritetty, CLI päättyy virheeseen (paitsi käytettäessä --json-tilaa, joka luo salasanan automaattisesti).
--password-file$ ttl send --password-file /run/secrets/key report.xlsx $ ttl get --password-file ~/.ttl-key https://ttl.space/aBcDeFgHiJ
Lukee tiedoston ensimmäisen rivin (loppuva rivinvaihto poistetaan). Yhteensopiva Docker Secrets (/run/secrets/), Vault-agenttitiedostojen ja vastaavien mallien kanssa.
ttl.passwordJos salasanaa ei anneta erikseen, CLI etsii ttl.password-tiedostoa ohjelman vierestä ja sitten ~/.ttl/password. Ensimmäistä riviä käytetään salasanana.
-p / --password, --password-stdin ja --password-file eivät ole yhdistettävissä. Automaattisesti havaittu ttl.password-tiedosto tarkistetaan vain, jos mitään näistä ei ole annettu. Vähimmäispituus: 8 merkkiä.| Lippu | Kuvaus | Oletus |
|---|---|---|
-p, --password P | Salaussalasana | interaktiivinen |
--password-stdin | Lue salasana stdinistä | |
--password-file F | Lue salasana tiedostosta | |
-t, --ttl DUR | Voimassaoloaika | 7d |
-b, --burn | Poista lukemisen jälkeen (kertakäyttöinen lataus) | pois |
-u, --uploader-only | Vain oma API-avaimesi voi ladata tiedoston (Orbit; alias --private) | pois |
--timeout DUR | Siirron aikakatkaisu | ei rajaa |
--server URL | Palvelimen URL | https://ttl.space |
-h3, --http3 | Yritä HTTP/3 (QUIC), varayhteydellä TCP | pois |
--json | JSON-tuloste stdoutiin (skripteille ja tekoälyagenteille) | pois |
| Lippu | Kuvaus | Oletus |
|---|---|---|
-p, --password P | Purkusalasana | interaktiivinen |
--password-stdin | Lue salasana stdinistä | |
--password-file F | Lue salasana tiedostosta | |
-o, --output DIR | Tulostehakemisto | nykyinen hakemisto |
--timeout DUR | Siirron aikakatkaisu | ei rajaa |
-h3, --http3 | Yritä HTTP/3 (QUIC), varayhteydellä TCP | pois |
--json | JSON-tuloste stdoutiin (skripteille ja tekoälyagenteille) | pois |
Ilmainen: 5m 10m 15m 30m 1h 2h 3h 6h 12h 24h 1d 2d 3d 4d 5d 6d 7d
Orbit lisää: 14d 15d 28d 30d permanent
Oletus: ei rajaa. Pysähtynyt siirto jatkuu itsestään ja keskeytyy, jos se ei pääse eteenpäin. Aseta raja komennolla --timeout 30m tai --timeout 2h.
#!/bin/bash tar czf /tmp/backup.tar.gz /data echo "$BACKUP_KEY" | ttl send --password-stdin -t 6h /tmp/backup.tar.gz rm /tmp/backup.tar.gz
$ ttl send -p mypass123 file.pdf | pbcopy
$ ttl send -p mypass123 file.pdf | xclip -sel clip
$ echo "$DB_PASSWORD" | ttl send --password-stdin -b -t 5m credentials.env # Linkki toimii tarkalleen kerran, vanhenee 5 minuutin kuluttua
# lähetys: salasana luodaan automaattisesti JSON-tilassa $ ttl --json send report.pdf {"ok":true,"link":"https://ttl.space/xK9mQ2vLpA","filename":"report.pdf","size":2097152,"ttl":"7d","burn":false,"uploader_only":false,"is_permanent":false,"password":"aB3kL9mXq7Rt"} # lataus $ ttl --json get -p aB3kL9mXq7Rt xK9mQ2vLpA {"ok":true,"filename":"report.pdf","size":2097152,"saved_to":"/home/user/report.pdf"} # virheet palauttavat ok:false {"ok":false,"error":"Link not found"}
--json-tilassa kaikki tuloste on rakenteista JSONia stdoutissa. Jos salasanaa ei anneta lähetyksen yhteydessä, se luodaan automaattisesti ja sisällytetään vastaukseen. Paluukoodi on 0 onnistuessa ja 1 virheessä.
Orbit avaa suuremmat tiedostot (10 GB), pidemmän säilytyksen (30 päivää tai pysyvä), yksityiset tiedostot (vain API-avaimesi voi ladata ne) ja tiedostonhallinnan (listaus ja poisto). Täysi vertailu: Features.
API-avain havaitaan automaattisesti: ympäristömuuttuja TTL_API_KEY, ttl.key ohjelman vieressä tai ~/.ttl/key. Käytä ttl activate-komentoa avaimen tallentamiseen tai kirjoita se manuaalisesti johonkin näistä paikoista.
# aktivoi avaimesi: se kysytään näyttämättä syötettä, joten se ei jää komentotulkin historiaan $ ttl activate Enter Orbit API key: ******** Orbit plan activated. Key saved to /usr/local/bin/ttl.key # ei-interaktiivisesti: ttl activate --key-stdin | ttl activate --key-file F # tarkista paketti ja käyttö $ ttl plan Plan: orbit Max file size: 10.0 GB Max TTL: 30 days (or permanent) Uploads per day: 1000000 Usage: Uploads today: 3 Active storage: 1.2 GB / 500.0 GB # lähetä pidennetyllä TTL:llä $ ttl send -t 30d large-backup.tar.gz # pysyvä tiedosto (vain Orbit): ei vanhenemista, säilytetään, kunnes poistat sen tai tilauksesi päättyy $ ttl send -t permanent archive.tar.gz # lähetä yksityinen tiedosto: vain API-avaimesi voi ladata sen (vain Orbit) $ ttl send -u payroll.xlsx # listaa viimeisimmät lataukset $ ttl list xK9mQ2vLpA 4.2 MB 2026-03-16 10:30 → 2026-04-15 10:30 [active] https://ttl.space/xK9mQ2vLpA rT7bNw3KpF 912.0 KB 2026-03-15 14:20 → 2026-03-17 14:20 [active (burn)] https://ttl.space/rT7bNw3KpF # poista tiedosto $ ttl delete xK9mQ2vLpA Deleted: xK9mQ2vLpA # poista tallennettu avain $ ttl deactivate Key file removed: /usr/local/bin/ttl.key
ttl send / ttl get tai --json-tilaa. Alla olevat päätepisteet ovat Orbit-tiedostonhallintaa varten.$ curl https://ttl.space/v1/files -H "X-API-Key: ttl_orbit_..." {"files":[{"token":"xK9mQ2vLpA","link":"https://ttl.space/xK9mQ2vLpA","size_bytes":1048576,"created_at":1711800600,"expires_at":1714392600,"burn":false,"expired":false,"uploader_only":false,"is_permanent":false,"is_note":false,"perm_grace_until":0}],"has_more":false} # seuraava sivu: vain kun has_more on true; anna edellisen vastauksen next_cursor $ curl "https://ttl.space/v1/files?cursor=1711800600123456" -H "X-API-Key: ttl_orbit_..."
Palauttaa tällä avaimella ladatut tiedostot uusimmasta alkaen, 20 tiedostoa sivulla. Kun has_more on true, vastaus sisältää myös kentän next_cursor; anna se parametrina ?cursor= hakeaksesi seuraavan sivun. Vaatii Orbit-paketin.
$ curl -X DELETE https://ttl.space/v1/files/xK9mQ2vLpA -H "X-API-Key: ttl_orbit_..."
Palauttaa 204 No Content onnistuessa. Vaatii Orbit-paketin. Tiedoston on kuuluttava tähän avaimeen.
| Tila | Merkitys |
|---|---|
401 | Virheellinen tai vanhentunut API-avain |
403 | Toiminto vaatii Orbit-paketin |
404 | Tiedostoa ei löydy tai se ei kuulu tälle avaimelle |
429 | Pyyntöraja ylitetty |
500 | Palvelimen sisäinen virhe, yritä myöhemmin uudelleen |
502 | Tallennustila tilapäisesti poissa käytöstä, yritä myöhemmin uudelleen |
| Rajoitus | Ilmainen | Orbit |
|---|---|---|
| Maks. tiedostokoko | 2 GB | 10 GB |
| Maks. TTL | 7 päivää | 30 päivää tai pysyvä |
| Latauksia päivässä | 10 | Rajaton |
| Latausten datamäärä päivässä (per IP) | 10 GB | Rajaton |
| Samanaikaiset lataukset | 1 per IP | 1 per IP ja per API-avain |
| Tallennuskiintiö | ✗ | 500 GB |
| Tiedostoluettelo | ✗ | ✓ |
| Varhainen poisto | ✓ | ✓ |
| Yksityiset tiedostot (vain lähettäjä) | ✗ | ✓ |
| Min. salasanan pituus | 8 merkkiä | |
| Pyynnöt per IP | 30 per 10 sekuntia | |
| Yhteydet per IP | 10 samanaikaista | |
Tiedostot salataan laitteellasi ennen lähettämistä. Palvelin tallentaa vain salatekstiä eikä voi purkaa tiedostojasi.
| Komponentti | Algoritmi / Arvo |
|---|---|
| Avaimen johtaminen | Argon2id (time=3, memory=64 MiB, parallelism=1) |
| Salausalgoritmi | XChaCha20-Poly1305 AEAD |
Mikä tahansa salatekstin muutos aiheuttaa salauksen purkamisen epäonnistumisen. Palvelin varmistaa, että lataaja tietää oikean salasanan ennen salatekstin luovuttamista, käyttäen salausavaimesta johdettua yksisuuntaista tokenia.