Как правильно загрузить локальный файл на сервер с помощью mobaXterm? - PullRequest
0 голосов
/ 16 февраля 2020

Я пытаюсь загрузить файл с локального рабочего стола на сервер и использую эту команду:

scp myFile.txt cooluser@192.168.10.102:/opt/nicescada/web

в соответствии со структурой: scp filename user@ip: / remotePath.

Но я получаю «Отказано в доступе». Я пытался использовать sudo, но я получаю то же сообщение. Я могу загрузить с сервера на локальный компьютер, поэтому я предполагаю, что у меня есть все необходимые разрешения.

Что может быть не так в этой строке кода?

Ответы [ 2 ]

2 голосов
/ 16 февраля 2020

Попробуйте указать полный путь назначения:

scp myFile.txt cooluser@192.168.10.102:/opt/nicescada/web/myFile.txt

Конечно, двойная проверка cooluser имеет право писать (не только читать) в этой папке: 755 , а не 644 для родительской папки web.

1 голос
/ 01 апреля 2020

В случае, если у вашего /desired/path на целевом компьютере есть доступ на запись только для root, и если у вас есть учетная запись на целевом компьютере с привилегиями sudo (привилегии суперпользователя с префиксом sudo к вашей команде), Вы также можете сделать это следующим образом:

Вариант 1 на основе scp:

  1. скопировать файл в папку на целевом компьютере, где у вас есть доступ для записи, например /tmp:
    scp file user@destinationMachine:/tmp
    
  2. Войдите в систему назначения с помощью:
    ssh user@destinationMachine
    
  3. Переместите файл на ваш /desired/path с помощью:
    sudo mv /tmp/file /desired/path
    

В случае, если вы Если у вас есть настройка sudo без пароля, вы также можете объединить шаги 2. и 3. в

ssh user@destination sudo mv /tmp/file /desired/path

Вариант 2 на основе rsyn c

Еще один, возможно, еще более простой вариант - использовать rsync:

rsync -e "ssh -tt" --rsync-path="sudo rsync" file user@destinationMachine:/desired/path

с добавлением -e "ssh -tt" для запуска sudo без tty.

...