Как скопировать файлы с виртуальной машины на локальную?


3

У меня есть виртуальная машина в Virtualbox с Ubuntu 15.04 (только интерфейс командной строки), и я хочу скопировать файлы с виртуальной машины на хост. Поскольку у меня есть только CLI, я не могу использовать общие папки.

Я попытался получить доступ к своему USB-накопителю из Virtualbox, но это не помогло (пришлось подключать жесткий диск после подключения к Windows).

Есть ли способ скопировать файлы из Ubuntu 15.04 (виртуальная машина) на Windows 7 или USB-накопитель?


Мой ответ: я отметил один ответ как хороший, но мне удалось решить мою проблему до этого. Я создал две программы на Python. один файл отправки, второй файл приема.

Если кому-то нужна эта программа, вот код: (в обоих смените xxx.xxx.xxx.xxx на IP fileServer)

fileServer.py (на компьютере, на который вы хотите получать файлы):

import socket
print('File server V 1.0 by vakus')
serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serv.bind(('xxx.xxx.xxx.xxx', 9999))
serv.listen(1)
conn, addr = serv.accept()
print('Incoming Connection. Please write password:')
pas = bytes(input(), 'UTF-8')
conpass = conn.recv(1024)
if conpass != pas:
    print('Passwords are not the same. closing connection')
    conn.sendall(bytes('Passwords are not the same.', 'UTF-8'))
    conn.close()
    exit()
else:
    print('Passwords are the same.')
    conn.sendall(bytes('Passwords are the same.', 'UTF-8'))
filename = conn.recv(1024)
file = ""
while True:
    data = conn.recv(1024)
    if not data: break
    file += data.decode('UTF-8')
    print(data.decode('UTF-8'), end='')
print('Close connection')
conn.close()
print('Creating file...')
try:
    import os
    os.mkdir('recv')
    del os
except:
    pass
f = open('recv/' + filename.decode("UTF-8"), 'w')
f.write(file)
f.close()

fileTransmiter.py (на компьютере, который отправляет файл):

import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('xxx.xxx.xxx.xxx', 9999))
sock.sendall(bytes(input('Password: '), 'UTF-8'))
answer = sock.recv(1024)
print(answer)
if answer == bytes("Passwords are not the same.", 'UTF-8'):
    exit()
filename = input('File to send: ')
f = open(filename)
sock.sendall(bytes(filename, 'UTF-8'))
for x in f.readlines():
    print(x)
    sock.sendall(bytes(x, 'UTF-8'))
sock.sendall(bytes('', 'UTF-8'))
sock.close()
print('Connection closed.')

Вы пытались настроить SSH-сервер на виртуальной машине и затем использовать SFTP (с клиентом, подобным FileZilla) для подключения к виртуальной машине с хост-машины?
— BloodPhilia

@ up Я этого не делал, но я не хотел бы устанавливать новые пакеты (пытаясь сделать ubuntu как можно меньшего размера)
— vakus

Разве SSH не установлен по умолчанию? Если это так, нет необходимости устанавливать дополнительные пакеты.
— BloodPhilia

Он установлен, но я не знаю, как настроить ssh-сервер, и я не могу найти ничего, что могло бы помочь мне с этим
— vakus

Добавлен ответ о том, как настроить ваш SSH сервер.
— BloodPhilia

Ответы:


1

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

Я предполагаю, что opensshсервер уже установлен.

  • Откройте ваш конфигурационный файл openssh в вашем любимом текстовом редакторе. Если вы используете, vimнапример:

    sudo vim /etc/ssh/sshd_config
    
  • Добавьте в конец или убедитесь, что строки ниже не закомментированы. Если вы используете не rootдругого пользователя, пропустите первые две строки:

    PermitRootLogin without-password
    PermitRootLogin yes
    PasswordAuthentication yes
    
  • Сохраните новый файл конфигурации.

  • Перезапустите сервер SSH:

    sudo restart ssh
    

Затем просто подключитесь к гостевой машине с помощью SFTP-клиента, такого как FileZilla. Просто введите IP-адрес, данные вашего root (или другого) пользователя в GUI и подключитесь.


Спасибо за информацию о настройке ssh сервера, но у меня все еще есть еще один вопрос. Когда я пытаюсь соединиться с FilleZilla, он говорит fzSftp started, protocol_version=2и connection closed after 20 seconds of inactivity(или что-то подобное, я использую польскую версию) и пытаюсь соединиться снова. Также я не уверен, что IP является правильным. Я использовал один изarp -an
— vakus

Получить IP-адрес, выполнив ifconfig из командной строки на вашем виртуальном компьютере с Ubuntu.
— BloodPhilia

2

Вот как, если у вас есть FileZilla:

  1. в Quickconnectполе введите sftp://yourserverваше имя пользователя и пароль. SFTP 1
  2. Hit connect SFTP 2 Вы получите предупреждение SSH о том, что у вас нет кэшированного ключа хоста. При желании нажмитеAlways trust this host, add this key to the cache SFTP 3
  3. Загрузите эти файлы! введите описание изображения здесь
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.