# Αποστολή αρχείου — ο κωδικός δημιουργείται αυτόματα, εμφανίζονται σύνδεσμος + κωδικός $ ttl send secret.pdf No password provided. Generate one? [Y/n]: Generated password: aB3kL9mX ·✧★◉ Thank goodness, secret.pdf is in orbit (1.2 MB) IMPORTANT! Save your password — required to download and decrypt the file. Password: aB3kL9mX https://ttl.space/aBcDeFgHiJ # Λήψη — ο κωδικός ζητείται διαδραστικά $ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ******** Password verified ◉★✧· Phew, secret.pdf landed safe and sound (1.2 MB)
Το CLI κρυπτογραφεί, ανεβάζει, κατεβάζει και αποκρυπτογραφεί αυτόματα. Ο διακομιστής δεν βλέπει ποτέ τον κωδικό σας ούτε τα δεδομένα σας σε μη κρυπτογραφημένη μορφή.
$ brew install tweenietomatoes/ttl/ttl
$ scoop bucket add ttl https://github.com/tweenietomatoes/scoop-ttl $ scoop install ttl
# Κατεβάστε για την πλατφόρμα σας από τις εκδόσεις $ curl -Lo ttl.tar.gz \ https://github.com/tweenietomatoes/ttl/releases/latest/download/ttl_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 v1.3.0
# Αυτόματη δημιουργία κωδικού, προεπιλεγμένο TTL 7 ημέρες $ ttl send report.xlsx
Αν δεν δοθεί κωδικός στο τερματικό, το CLI ρωτάει:
No password provided. Generate one? [Y/n]:
Πατήστε Enter ή πληκτρολογήστε y για αυτόματη δημιουργία.
$ ttl send -p mySecretPass -t 1h document.pdf
# Το αρχείο διαγράφεται οριστικά μετά την πρώτη λήψη $ ttl send -b photo.jpg
$ ttl send -t 5m temp-credentials.txt # λήγει σε 5 λεπτά $ ttl send -t 30m meeting-link.txt # λήγει σε 30 λεπτά $ ttl send -t 6h backup.tar.gz # λήγει σε 6 ώρες $ ttl send -t 1d daily-report.pdf # λήγει σε 1 ημέρα $ ttl send -t 3d project-archive.zip # λήγει σε 3 ημέρες $ ttl send -t 5d design-assets.zip # λήγει σε 5 ημέρες $ ttl send report.xlsx # λήγει σε 7 ημέρες (προεπιλογή)
$ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ******** Password verified ◉★✧· Phew, document.pdf landed safe and sound (4.2 MB)
Ο κωδικός δεν εμφανίζεται. Το αρχικό όνομα αρχείου ανακτάται.
# Μπορείτε να χρησιμοποιήσετε μόνο το 10ψήφιο token αντί για ολόκληρο το URL $ ttl get aBcDeFgHiJ Enter password: ******** Password verified ◉★✧· Phew, document.pdf landed safe and sound (4.2 MB)
$ ttl get -o ~/Downloads aBcDeFgHiJ
Από προεπιλογή, τα αρχεία αποθηκεύονται στον τρέχοντα κατάλογο. Χρησιμοποιήστε -o / --output για να ορίσετε διαφορετικό κατάλογο.
$ ttl get -p mySecretPass https://ttl.space/aBcDeFgHiJ
Μπορείτε επίσης να κατεβάσετε και να αποκρυπτογραφήσετε αρχεία στο πρόγραμμα περιήγησής σας επισκεπτόμενοι απευθείας τον σύνδεσμο. Η διεπαφή ιστού χρησιμοποιεί την ίδια βιβλιοθήκη κρυπτογράφησης και ζητά τον κωδικό σας. Δεν απαιτείται εγκατάσταση λογισμικού.
Ο κωδικός χρησιμοποιείται ως βάση για το κλειδί κρυπτογράφησης. Δεν φεύγει ποτέ από τη συσκευή σας και δεν αποστέλλεται ποτέ στον διακομιστή. Υπάρχουν πέντε τρόποι να τον ορίσετε:
$ ttl send notes.txt No password provided. Generate one? [Y/n]: y Generated password: aB3kL9mX
Δημιουργεί έναν κρυπτογραφικά τυχαίο κωδικό 8 χαρακτήρων από [0-9A-Za-z]. Διαθέσιμο μόνο κατά το send στο τερματικό.
$ ttl send notes.txt No password provided. Generate one? [Y/n]: n Enter password: ******** Confirm password: ******** $ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ********
Ο κωδικός δεν εμφανίζεται και δεν αποθηκεύεται στο ιστορικό του shell. Κατά το send επιλέγετε πρώτα αν θέλετε αυτόματη δημιουργία. Κατά το get ζητείται απευθείας η εισαγωγή.
-p / --password$ ttl send -p mySecretPass file.zip $ ttl get --password mySecretPass https://ttl.space/aBcDeFgHiJ
-p / --password είναι ορατό στην έξοδο του ps aux και μπορεί να αποθηκευτεί στο ιστορικό του κελύφους (~/.bash_history). Αποφύγετε τη χρήση σε κοινόχρηστα περιβάλλοντα και scripts. Χρησιμοποιήστε αντ' αυτού --password-stdin ή --password-file.--password-stdin# Μέσω echo $ echo "mySecretPass" | ttl send --password-stdin backup.tar.gz # Από τον διαχειριστή κωδικών $ pass show ttl/key | ttl send --password-stdin data.zip # Από μεταβλητή περιβάλλοντος $ printenv MY_SECRET | ttl get --password-stdin https://ttl.space/aBcDeFgHiJ # Heredoc $ ttl send --password-stdin report.pdf <<<"mySecretPass"
Διαβάζει την πρώτη γραμμή από το stdin. Χρήσιμο σε scripts, CI/CD pipelines και αυτοματισμό. Όταν το stdin δεν είναι τερματικό και δεν έχει οριστεί πηγή κωδικού, το CLI τερματίζεται με σφάλμα (εκτός αν χρησιμοποιείται --json, που δημιουργεί αυτόματα κωδικό).
--password-file$ ttl send --password-file /run/secrets/key report.xlsx $ ttl get --password-file ~/.ttl-key https://ttl.space/aBcDeFgHiJ
Διαβάζει την πρώτη γραμμή του αρχείου (η τελική αλλαγή γραμμής αφαιρείται). Συμβατό με Docker Secrets (/run/secrets/), αρχεία Vault Agent και παρόμοια μοτίβα.
ttl.passwordΑν δεν δοθεί ρητός κωδικός, το CLI αναζητά αρχείο ttl.password δίπλα στο πρόγραμμα, στη συνέχεια ~/.ttl/password. Η πρώτη γραμμή χρησιμοποιείται ως κωδικός.
-p / --password, --password-stdin και --password-file δεν μπορούν να συνδυαστούν. Το αυτόματα ανιχνευμένο αρχείο ttl.password ελέγχεται μόνο όταν κανένα από αυτά δεν έχει δοθεί. Ελάχιστο μήκος: 8 χαρακτήρες.| Παράμετρος | Περιγραφή | Προεπιλογή |
|---|---|---|
-p, --password P | Κωδικός κρυπτογράφησης | διαδραστικά |
--password-stdin | Ανάγνωση κωδικού από stdin | |
--password-file F | Ανάγνωση κωδικού από αρχείο | |
-t, --ttl DUR | Διάρκεια ισχύος | 7d |
-b, --burn | Διαγραφή μετά την ανάγνωση (μία λήψη) | ανενεργό |
--timeout DUR | Χρονικό όριο μεταφοράς | αυτόματο |
--server URL | URL διακομιστή | https://ttl.space |
-h3, --http3 | Δοκιμή HTTP/3 (QUIC), εναλλακτικά TCP | ανενεργό |
--json | Έξοδος JSON στο stdout (για scripts και AI agents) | ανενεργό |
| Παράμετρος | Περιγραφή | Προεπιλογή |
|---|---|---|
-p, --password P | Κωδικός αποκρυπτογράφησης | διαδραστικά |
--password-stdin | Ανάγνωση κωδικού από stdin | |
--password-file F | Ανάγνωση κωδικού από αρχείο | |
-o, --output DIR | Κατάλογος εξόδου | τρέχων κατάλογος |
--timeout DUR | Χρονικό όριο μεταφοράς | αυτόματο |
-h3, --http3 | Δοκιμή HTTP/3 (QUIC), εναλλακτικά TCP | ανενεργό |
--json | Έξοδος JSON στο stdout (για scripts και AI agents) | ανενεργό |
Δωρεάν: 5m 10m 15m 30m 1h 2h 3h 6h 12h 24h 1d 2d 3d 4d 5d 6d 7d
Orbit προσθέτει: 14d 15d 28d 30d
Προεπιλογή: αυτόματο — υπολογίζεται με βάση το μέγεθος αρχείου με υποτιθέμενη ταχύτητα 1 Mbps + 2 λεπτά περιθώριο (ελάχιστο 5 λεπτά). Παράκαμψη με --timeout 10m ή --timeout 1h.
#!/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 # Ο σύνδεσμος λειτουργεί ακριβώς μία φορά, λήγει σε 5 λεπτά
# αποστολή — ο κωδικός δημιουργείται αυτόματα σε λειτουργία JSON $ ttl --json send report.pdf {"ok":true,"link":"https://ttl.space/xK9mQ2vLpA","filename":"report.pdf","size":2097152,"ttl":"7d","burn":false,"password":"aB3kL9mX"} # λήψη $ ttl --json get -p aB3kL9mX xK9mQ2vLpA {"ok":true,"filename":"report.pdf","size":2097152,"saved_to":"/home/user/report.pdf"} # τα σφάλματα επιστρέφουν ok:false {"ok":false,"error":"Link not found"}
Σε λειτουργία --json, όλη η έξοδος είναι δομημένο JSON στο stdout. Εάν δεν δοθεί κωδικός κατά την αποστολή, δημιουργείται αυτόματα και συμπεριλαμβάνεται στην απάντηση. Ο κωδικός εξόδου είναι 0 σε επιτυχία και 1 σε σφάλμα.
Orbit ξεκλειδώνει μεγαλύτερα αρχεία (10 GB), μεγαλύτερη διατήρηση (30 ημέρες) και διαχείριση αρχείων (λίστα και διαγραφή).
Το κλειδί API ανιχνεύεται αυτόματα: μεταβλητή περιβάλλοντος TTL_API_KEY, ttl.key δίπλα στο πρόγραμμα ή ~/.ttl/key. Χρησιμοποιήστε ttl activate για αποθήκευση του κλειδιού ή γράψτε το χειροκίνητα σε μία από αυτές τις τοποθεσίες.
# ενεργοποίηση κλειδιού $ ttl activate ttl_orbit_aBcDeFgHiJ... Orbit plan activated. Key saved to /usr/local/bin/ttl.key # έλεγχος πλάνου και χρήσης $ ttl plan Plan: orbit Max file size: 10.0 GB Max TTL: 30 days Uploads per day: Unlimited Usage: Uploads today: 3 Active storage: 1.2 GB / 250.0 GB # αποστολή με παρατεταμένο TTL $ ttl send -t 30d large-backup.tar.gz # λίστα πρόσφατων μεταφορτώσεων $ 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 # διαγραφή αρχείου $ ttl delete xK9mQ2vLpA Deleted: xK9mQ2vLpA # αφαίρεση αποθηκευμένου κλειδιού $ ttl deactivate Key file removed: /usr/local/bin/ttl.key
ttl send / ttl get ή τη λειτουργία --json. Τα παρακάτω endpoints είναι για τη διαχείριση αρχείων Orbit.$ 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}]}
Επιστρέφει όλα τα αρχεία που μεταφορτώθηκαν με αυτό το κλειδί. Απαιτείται πλάνο Orbit.
$ curl -X DELETE https://ttl.space/v1/files/xK9mQ2vLpA -H "X-API-Key: ttl_orbit_..."
Επιστρέφει 204 No Content σε επιτυχία. Απαιτείται πλάνο Orbit. Το αρχείο πρέπει να ανήκει σε αυτό το κλειδί.
| Κατάσταση | Σημασία |
|---|---|
401 | Μη έγκυρο ή ληγμένο κλειδί API |
403 | Η λειτουργία απαιτεί πλάνο Orbit |
404 | Το αρχείο δεν βρέθηκε ή δεν ανήκει σε αυτό το κλειδί |
429 | Υπέρβαση ορίου αιτημάτων |
| Περιορισμός | Δωρεάν | Orbit |
|---|---|---|
| Μέγ. μέγεθος αρχείου | 2 GB | 10 GB |
| Μέγ. TTL | 7 ημέρες | 30 ημέρες |
| Μεταφορτώσεις ανά ημέρα | 10 | 50 |
| Ποσόστωση αποθήκευσης | — | 250 GB |
| Λίστα & διαγραφή | — | ✓ |
| Ελάχ. μήκος κωδικού | 8 χαρακτήρες | |
| Αιτήματα ανά IP | 30 ανά 10 δευτερόλεπτα | |
| Συνδέσεις ανά IP | 10 ταυτόχρονες | |
Τα αρχεία κρυπτογραφούνται στη συσκευή σας πριν ανεβούν. Ο διακομιστής αποθηκεύει μόνο κρυπτογραφημένο κείμενο και δεν μπορεί να αποκρυπτογραφήσει τα αρχεία σας.
| Στοιχείο | Αλγόριθμος / Τιμή |
|---|---|
| Παραγωγή κλειδιού | Argon2id (time=3, memory=64 MB, parallelism=1) |
| Κρυπτογράφηση | XChaCha20-Poly1305 AEAD |
Οποιαδήποτε τροποποίηση του κρυπτογραφημένου κειμένου προκαλεί αποτυχία αποκρυπτογράφησης. Ο διακομιστής επαληθεύει ότι ο χρήστης που κατεβάζει γνωρίζει τον σωστό κωδικό πριν αποδεσμεύσει το κρυπτογραφημένο κείμενο, χρησιμοποιώντας ένα μονόδρομο token που προέρχεται από το κλειδί κρυπτογράφησης.