📡 Передача любых файлов из командной строки – создание собственного безопасного и быстрого сайта временной передачи c Docker |

📡 Передача любых файлов из командной строки – создание собственного безопасного и быстрого сайта временной передачи c Docker

Мануал

Встречались ли вы с такой проблемой?

Вы работаете в производственной среде с подключением к Интернету, но не можете извлечь логи или перехваченные пакеты с защищенного сервера для устранения неполадок.

Вот сайт, который может помочь вам в этой ситуации.

Вам не нужно открывать брандмауэр, чтобы разрешить sftp-соединение для захвата файлов, или включать веб-службу, чтобы дать себе ссылку для их загрузки.

Пока ваши серверы могут выходить в Интернет, вы сможете спокойно передавать файлы.

Transfer.sh – это такой сайт, который может предоставить вам простой, легкий и быстрый сервис для обмена файлами из командной строки.

Он бесплатен и позволяет загружать до 10 ГБ данных, а файлы хранятся в течение 14 дней.

Ранее мы уже рассмотрели этот инструмент:

Transfer.sh – простой и безопасный обмен файлами из командной строки Linux

Шаги по использованию Transfer.sh

Существует достаточно много вариантов использования, которые перечислены на сайте transfer.sh.

Можно загружать несколько файлов и шифровать их, можно использовать wget для загрузки, а также можно использовать его из Windows PowerShell.

В этом разделе я перечислю шаги для простого случая использования, который заключается в загрузке одного файла с сервера linux с настройками по умолчанию.

1. Войдите в систему Linux

2. Загрузить файл

Загрузка одного файла с настройками по умолчанию:

curl -v --upload-file ./hello.txt https://transfer.sh/hello.txt
*   Trying 144.76.136.153:443...
* Connected to transfer.sh (144.76.136.153) port 443 (#0)
* ALPN: offers h2,http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: none
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=transfer.sh
*  start date: Aug 14 19:42:51 2023 GMT
*  expire date: Nov 12 19:42:50 2023 GMT
*  subjectAltName: host "transfer.sh" matched cert's "transfer.sh"
*  issuer: C=US; O=Let's Encrypt; CN=R3
*  SSL certificate verify ok.
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* using HTTP/2
* h2 [:method: PUT]
* h2 [:scheme: https]
* h2 [:authority: transfer.sh]
* h2 [:path: /hello.txt]
* h2 [user-agent: curl/8.1.2]
* h2 [accept: */*]
* h2 [content-length: 34559]
* Using Stream ID: 1 (easy handle 0x7fd872c60080)
> PUT /hello.txt HTTP/2
> Host: transfer.sh
> User-Agent: curl/8.1.2
> Accept: */*
> Content-Length: 34559
* We are completely uploaded and fine
< HTTP/2 200 
< content-type: text/plain
< server: Transfer.sh HTTP Server
< x-made-with: <3 by DutchCoders
< x-served-by: Proudly served by DutchCoders
< x-url-delete: https://transfer.sh/xVaLXBfwcD/hello.txt/wx9PGrancWLzyeSV55EU
< content-length: 40
< date: Sun, 08 Oct 2023 15:55:01 GMT
* Connection #0 to host transfer.sh left intact
https://transfer.sh/xVaLXBfwcD/hello.txt[node1] (local) root@192.168.0.28

3. Откройте URL-адрес из любого браузера для получения файла

ffsend – как легко и безопасно обмениваться файлами из командной строки Linux с помощью Firefox Send Client

Шаги по использованию на своем хостинге с Docker

Для удобства развертывания автор transfer.sh создал официальный Docker контейнер.

Ниже приведены шаги, которые мы можем выполнить, чтобы запустить docker за 1 минуту.

1. Развернуть docker

Существует два варианта, отличающихся только тем, какой пользователь запускает процесс.

По умолчанию он запускается от имени root:

docker run --publish 8080:8080 dutchcoders/transfer.sh:latest --provider local --basedir /tmp/

Тот, который помечен суффиксом -noroot, будет использовать 5000 в качестве UID и GID:

docker run --publish 8080:8080 dutchcoders/transfer.sh:latest-noroot --provider local -

2. Передача файлов

 curl -v --upload-file /docker.log https://transfer.sh/hello.txt
*   Trying 144.76.136.153:443…
* Connected to transfer.sh (144.76.136.153) port 443 (#0)
* ALPN: offers h2,http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: none
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=transfer.sh
*  start date: Aug 14 19:42:51 2023 GMT
*  expire date: Nov 12 19:42:50 2023 GMT
*  subjectAltName: host “transfer.sh” matched cert’s “transfer.sh”
*  issuer: C=US; O=Let’s Encrypt; CN=R3
*  SSL certificate verify ok.
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* using HTTP/2
* h2 [:method: PUT]
* h2 [:scheme: https]
* h2 [:authority: transfer.sh]
* h2 [:path: /hello.txt]
* h2 [user-agent: curl/8.1.2]
* h2 [accept: */*]
* h2 [content-length: 34559]
* Using Stream ID: 1 (easy handle 0x7fd872c60080)
> PUT /hello.txt HTTP/2
> Host: transfer.sh
> User-Agent: curl/8.1.2
> Accept: */*
> Content-Length: 34559
>
* We are completely uploaded and fine
< HTTP/2 200
< content-type: text/plain
< server: Transfer.sh HTTP Server
< x-made-with: <3 by DutchCoders
< x-served-by: Proudly served by DutchCoders
< x-url-delete: https://transfer.sh/xVaLXBfwcD/hello.txt/wx9PGrancWLzyeSV55EU
< content-length: 40
< date: Sun, 08 Oct 2023 15:55:01 GMT
<
* Connection #0 to host transfer.sh left intact
https://transfer.sh/xVaLXBfwcD/hello.txt[node1] (local) root@192.168.0.28 ~

3. Получим файл из любого браузера, обратившись к url, сгенерированному на шаге 2

Поиск и устранение неисправностей

Сообщение об ошибке: wrong version number

Причиной ошибки является наличие сертификата TLSv1.3.

Сервис Transfer.sh требует TLSv1.3, но Play-with-docker предоставляет только OpenSSL/3.1.1.

Чтобы решить эту проблему, можно убрать https из url.

curl -v --upload-file docker.log https://ip172-18-0-88-ckhdj44snmng00biqpe0-8080.direct.labs.play-with-docker.com/docker.log
*   Trying 40.76.55.146:443...
* Connected to ip172-18-0-88-ckhdj44snmng00biqpe0-8080.direct.labs.play-with-docker.com (40.76.55.146) port 443 (#0)
* ALPN: offers h2,http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: none
* OpenSSL/3.1.1: error:0A00010B:SSL routines::wrong version number
* Closing connection 0
curl: (35) OpenSSL/3.1.1: error:0A00010B:SSL routines::wrong version number

После удаления https мы имеем http-соединение из командной строки с нашим Docker.

Все пакеты будут передаваться в открытом текстовом формате.

curl -v --upload-file docker.log ip172-18-0-88-ckhdj44snmng00biqpe0-8080.direct.labs.play-with-docker.com/docker.log
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 40.76.55.146:80…
* Connected to ip172-18-0-88-ckhdj44snmng00biqpe0-8080.direct.labs.play-with-docker.com (40.76.55.146) port 80 (#0)
> PUT /docker.log HTTP/1.1
> Host: ip172-18-0-88-ckhdj44snmng00biqpe0-8080.direct.labs.play-with-docker.com
> User-Agent: curl/8.1.2
> Accept: */*
> Content-Length: 34560
>
} [34560 bytes data]
* We are completely uploaded and fine
< HTTP/1.1 200 OK
< Content-Type: text/plain
< Server: Transfer.sh HTTP Server
< X-Made-With: <3 by DutchCoders
< X-Served-By: Proudly served by DutchCoders
< X-Url-Delete: http://ip172-18-0-88-ckhdj44snmng00biqpe0-8080.direct.labs.play-with-docker.com/QwR2c1UDRs/docker.log/Q8DwSFS1yrr7GVoVQOOV
< Date: Sun, 08 Oct 2023 16:39:48 GMT
< Content-Length: 101
<
{ [101 bytes data]
100 34661  100   101  100 34560   2543   849k --:--:-- --:--:-- --:--:--  890k
* Connection #0 to host ip172-18-0-88-ckhdj44snmng00biqpe0-8080.direct.labs.play-with-docker.com left intact
http://ip172-18-0-88-ckhdj44snmng00biqpe0-8080.direct.labs.play-with-docker.com/QwR2c1UDRs/docker.log

см. также:

 

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий