Как скопировать файлы в недоверяемый компьютер?

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

То, что я имею в виду, было бы программой со следующим рабочим процессом:

  1. Хост с файлами дает гипотетическую команду для предоставления доступа к файлам доступными, защищенными с паролем:

    file-offer -p PASSWORD file1 file2 file3 directory

  2. Другой issuse гипотетическая команда с паролем для получения файла (GUI для выбора файлов приветствовался бы также):

    file-receive -p PASSWORD file2

Самой близкой вещью, которую я имею прямо сейчас, является этот взлом, который работает, но не очень удобен и дал бы пользователям Windows некоторую проблему:

  1. tar cf - [files]... | gpg -c --passphrase PASSWORD | nc -l -p 6666

  2. nc host1 6666 | gpg --passphrase PASSWORD | tar xf - [files]...

Еще некоторые примечания:

  • ни у одного из пользователей нет корневого доступа (так никакие порты доступа серверов <1024)
  • копирования файлов до предоставления доступа к ним нужно избежать (т.е. нет cp files /var/www/)
  • ssh/scp не работает, поскольку это потребовало бы предоставления пароля одного хоста другого
  • использование rsync с rsyncd.conf главным образом работает, но является громоздким для установки и не позволяет совместно использовать единственный файл, только каталоги
  • ftp/http сервер, который мог быть запущен и настроен с единственной командной строкой, мог работать, https поддержка шифрования будет приветствоваться, а также способ совместно использовать единственные файлы вместо просто каталогов, не знайте сервер, который соответствует этим критериям
  • USB не является опцией, поскольку другой хост мог бы только быть доступным по сети
  • сервис загрузки файла не является опцией ни один (пределы размера файла, загрузка на недоверяемое третье лицо, пользователь мог бы быть на LAN, не Интернете. и т.д.)
1
задан 27.09.2014, 23:26

7 ответов

Шифрование GnuPG!

$ gpg -e mysecretfile
You did not specify a user ID. (you may use "-r")

Current recipients:

Enter the user ID.  End with an empty line: ben

Current recipients:
2048g/52FFA1E 2009-01-02 "Bob McBlah <bob.mcblah@example.com>"

Enter the user ID.  End with an empty line: 

$ ls *.gpg
mysecretfile.gpg

Файл mysecretfile.gpg теперь шифруется, в некотором роде таким образом, что только человек (Bob McBlah) может дешифровать файл (асимметричный или crypto с открытым ключом).

Файл может безопасно быть отправлен с помощью любого носителя, способного к отправке файла (netcat, электронная почта, FTP, Dropbox, mediafire.com и т.д. и т.д.), с практически никаким риском перехвата.

Если Вы используете -a Флаг "ASCII armour", зашифрованный файл (который назвали бы mysecretfile.asc) простой текст ASCII, который может быть отправлен в каком-либо носителе, который может отправить текст ASCII, так ответы кому-либо другому, "как я могу прислать x вопрос" файла МБ, был бы применимый..

Для решения Вашей определенной проблемы возможно, простой сценарий Python мог быть записан с помощью модуля BaseHTTPServer:

import sys
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer

thefile = None

class MyHandler(BaseHTTPRequestHandler):

    def do_GET(self):
        global thefile
        try:
            if self.path == "/":
                f = open(thefile)

                self.send_response(200)
                self.send_header('Content-type', 'application/x-gpg')
                self.send_header('Content-disposition', 'filename="%s"' % thefile.replace("\"", ""))
                self.end_headers()

                self.wfile.write(f.read())
                f.close()
            else:
                self.send_error(404, 'File not found: %s' % self.path)

        except IOError:
            self.send_error(404,'File Not Found: %s' % self.path)

def main():
    global thefile
    if len(sys.argv) == 2:
        thefile =  sys.argv[1]
    else:
        print "Usage: %s [path to served file]" % sys.argv[0]
        sys.exit(1)
    try:
        server = HTTPServer(('', 8080), MyHandler())
        print 'Started server on port 8080'
        server.serve_forever()
    except KeyboardInterrupt:
        print 'Keyboard abort, shutting down server'
        server.socket.close()

if __name__ == '__main__':
    main()

Сохраните его как servefile.py и выполненный как python servefile.py /path/to/my/file.gpg

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

2
ответ дан 12.12.2019, 07:39

Действительно ли передачей является выполнимая Карта памяти? Это могло бы быть слишком громоздким, но это решит проблему соединения с недоверяемым компьютером. Кроме того, для пользователей никакой ОС не было бы слишком трудно вытянуть необходимые файлы с минимальной инструкцией.

6
ответ дан 12.12.2019, 07:39

Если бы оба компьютера сцепляются до Интернета, возможно, что-то как Dropbox было бы приемлемо.

3
ответ дан 12.12.2019, 07:39
  • Создайте временного пользователя с паролем, но никаким доступом оболочки (например, с scponly).
  • Дайте тому пользователю права на файлы.
  • Файлы копии с SCP.
  • После того как все сделано, удалите того пользователя.
2
ответ дан 12.12.2019, 07:39

При поиске легкого веб-сервера, эта страница в Википедии могла бы помочь.

1
ответ дан 12.12.2019, 07:39

SSH может использовать общественность / аутентификация с закрытым ключом. Это позволяет Вам давать "недоверяемому" компьютеру свой открытый ключ. И затем Вы держите свой закрытый ключ в секрете и защищенный паролем, и затем можно войти в другую машину.

Вы можете затем scp файлы пока пользователь Вы, ssh в имеет соответствующие полномочия. И потому что Вы используете SSH, все файлы шифруются в пути.

1
ответ дан 12.12.2019, 07:39
  • 1
    @grumbel Вы лучше ограничили бы файлы, позволенные на основе полномочий файла, я буду думать. Однако Вы могли настроить SSH в chroot (howtoforge.com/chrooted_ssh_howto_debian) для ограничения SSH / SCP к конкретному каталогу. – Olly 17.09.2009, 17:13

Вы могли также настроить бесплатную учетную запись на Inbox.com. Один из их сервисов (помимо электронной почты) является хранилищем файлов до 5 ГБ (также свободный). Просто создайте учетную запись, которую можно совместно использовать, загрузить файлы и позволить другому человеку загрузить их. Впоследствии, забудьте об учетной записи, измените пароль и сохраните его или сделайте то, что Вы хотите с ним.

1
ответ дан 12.12.2019, 07:39

Теги

Похожие вопросы