Я посмотрел вокруг на другие вопросы здесь и на различные учебники "использования scp" в Интернете, но я не могу разобраться, что не так.
Я использую Linux Mint и пытаюсь понять, как работает scp .
У меня есть файл file.ext (на моем компьютере) в каталоге / home / name / dir /
Я подключаюсь к удаленной машине, используя ssh , например:
ssh -p 2222 username@domain
он спрашивает меня пароль, и оболочка отображает:
username@domain ~ $
Теперь, если я выполню команду (до того, как я запустил ssh, я был в локальном каталоге / home / name / dir ):
scp -r -P 2222 file.ext username@domain
вывод:
cp: cannot stat ‘file.ext’: No such file or directory
Тот же результат, если вместо file.ext я пишу полный путь
scp -r -P 2222 /home/name/dir/file.ext username@domain
Кроме того, администратор сервера сказал мне, что я буду загружать файл в мой удаленный домашний каталог (вместо root), например:
scp -r -P 2222 file.ext username@domain:~/
но когда я делаю это и нажимаю «Enter», ничего не происходит, как если бы оболочка ожидала дальнейшего ввода.
Резюме моих проблем:
- cp: нет такого файла или каталога
- оболочка "застряла" на ~ /
Какие-либо предложения?
localuser@machineA: ssh -p 2222 username@domain
(чтобы указать, что вы выполняете команду ssh как localuser на машинеscp
, то удаленная сторона всегда должна содержать двоеточие (напримерremotehost:/tmp
), иначе это будет просто делать обычную копию (scp /tmp/foo.txt example.com
скопирует/tmp/foo.txt
в локальный файлexample.com
)-r
флаг, так как он не нужен для копирования отдельных файлов (он используется для рекурсивного копирования каталогов)Ответы:
Вам нужно запустить
scp
команду с локального компьютера, а не с удаленного. Вам не нужноssh
вообще:Вам также не нужно
-r
:Если вы уже вошли на удаленный компьютер и хотите скопировать его с локального компьютера, вам необходимо убедиться, что ваш локальный компьютер доступен через Интернет и
ssh
настроен. Я не думаю, что это то, что вам нужно, но если это так, просто запустите это с пульта:источник
Я предоставляю два способа загрузки файла вверх / вниз между удаленным и локальным компьютером (я использую Mac air):
В этом случае я хочу увеличить / уменьшить «11.jpeg» между локальным и удаленным:
1.
Чтобы достичь того же намерения при входе в SSH , вы должны сначала установить «Системные настройки> общий доступ> удаленный вход> всех пользователей (я не уверен, что вы должны установить для« всех пользователей », но это работает в этой ситуации ) »Mac скажет вам« Для удаленного входа на этот компьютер введите: ssh username @ xxxxxx, а затем введите следующую команду:
scp username @ domain: /home/xxx/xxx/11.jpeg username @ xxxxxx: / Users / имя пользователя / Desktop /
Эта команда выше для загрузки файла с удаленного на локальный при входе в ssh. Просто измените два пути, когда вы хотите загрузить файл.
источник
Если вы запускаете эту команду scp на удаленной машине, она ищет
file.ext
«локальный» файл, то есть на удаленной машине.Чтобы скопировать файл с удаленного компьютера на локальный, используйте
scp -P 2222 username@domain:dir/file.ext localdir
(при условии, что онfile.ext
находится~/dir
на удаленном компьютере, как в вашем примере). Если вы работаетеscp
на удаленном компьютере, поменяйте местами «локальный» и «удаленный».источник
Используйте
scp
командуЕсли вы хотите перенести папку, просто
zip
сначала, мы можемunzip
позже.С вашего компьютера запустите это:
Здесь
root
ваша учетная запись и10.145.198.100
IP-адрес удаленного сервера. Мы собираемся скопироватьthe_file
в~/
папку на пульте.Распаковать файл:
источник
root
даже иметь доступ SSH на удаленной машине? Это довольно небезопасно. Лучше использовать обычное использование, а затемsudo
делать то, что root должен делать на этой машине.Просто небольшой вклад, может быть, он может помочь новичкам, таким как я: путь к удаленному каталогу должен быть написан так:
username@domain:~/remote_directory
Здесь я хочу подчеркнуть, что мы всегда должны добавлять
:~/
источник
Решение для копирования файлов из
Linux client
вLinux Server
Проверьте,
sshd
работает ли на вашем сервере, используя:ps aux | grep sshd
Если не установить
OpenSSH
с помощьюsudo apt-get install openssh-server openssh-client
https://www.tecmint.com/install-openssh-server-in-linux/Перезагрузите сервер и убедитесь, что
sshd
он работает с помощьюps aux | grep sshd
Если вам нужно, вы можете настроить свой
/etc/ssh/sshd_config
файл, но это не обязательно для простых конфигурацийубедитесь, что порты открыты, используя
netcat
nc -v -z 127.0.0.1 22
Чтобы скопировать файлы с
Linux
клиента наLinux
клиент, используйте scp следующим образомscp ~/filename.md username@10.22.33.45:~/folder/filename.md
Чтобы убедиться, что файл был скопирован, используйте
ssh username@10.22.33.45
и укажите свой пароль.Решение для копирования файлов из
Linux client
WindowsЕсть несколько клиентов для запуска серверов SSH в Windows, таких как OpenSSH от MS
MobaSSH
Битвис SSH сервер
Установите один из указанных выше серверов и убедитесь, что порт 22 открыт с помощью
netsh advfirewall firewall добавить правило name = "SSH Port 22" dir = в действии = разрешить протокол = UDP localport = 22
netsh advfirewall firewall add rule name = "SSH Port 22" dir = out action = разрешить протокол = UDP localport = 22
netsh advfirewall firewall add rule name = "SSH Port 22" dir = в действии = разрешить протокол = TCP localport = 22
netsh advfirewall firewall add rule name = "SSH Port 22" dir = out action = разрешить протокол = TCP localport = 22
netsh advfirewall выключил все профили
Сравнения этих серверов:
Битвис SSH сервер
Обеспечивает почти близкую к родной
cmd
подсказку,powershell
подсказку, автозаполнениеПредоставляет дополнительные возможности для настройки, если вам нужно расширенное использование
Пользовательская настройка для простых нужд - 0. Я начал работу над ней в течение 2 минут, потратив много времени, пытаясь получить
MobaSSH
иOpenSSH
работать.Для копирования файлов с помощью scp используйте:
scp ~/filename.md username@10.33.44.45:/C/Users/username/filename.md
Бесплатно для личного пользования, $ 99 для профессионального использования. Из-за множества функций и отличной интеграции цена вполне стоит денег
MobaSSH:
предоставляет оболочку linux для windows, в которой работают простые команды linux, например
ls
,cp
иfind
т. д., аналогичныеMINGW64
вы можете получить доступ
cmd
иpowershell
напрямую, набравcmd
илиpowershell
Поддержка Unicode плохая. Кодировка не правильная. Например, если вы попытаетесь запустить
Python
интерпретатор, произойдет сбой. Вам нужно будет изменить кодировку вручную, используя ( https://stackoverflow.com/a/12834315/4752883 ):chcp 65001
set PYTHONIOENCONDING=utf-8
и затем запустить приглашение PythonОтличительной особенностью MobaSSH является то, что он имеет очень простой пользовательский интерфейс, а также
scp
иssh
хорошо интегрирован. Так будет работать для простых случаев использованияЧтобы скопировать файлы с
Linux
клиента наWindows
работающий серверMobaSSH
: используйтеscp ~/filename.md username@10.33.44.45:/cygdrive/c/Users/username/filename.md
Это потому, чтоMobaSSH
он основан на том, чтоcygwin
его диски сопоставлены так же, как иcygwin
диски.Используйте виртуальные машины от Microsoft с OpenSSHv6.7, установленным с https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ , OpenSSHv6.7 уже установлен.
Он очень глючный, и вам нужно будет сильно его настроить.
Завершение команды не работает
При перемещении курсора на терминал будут оставаться пустые места
Python не работает
Более поздние версии OpenSSH, возможно, улучшили его. Кроме того, MS, похоже, делает OpenSSH доступным через
Optional Features
https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/источник
Если вы оказались на OSX ...
Когда я попытался запустить его с именем пользователя @ local: / file_directory ...
Я получил следующую ошибку:
Решение
На моем Mac я должен был сделать следующее, чтобы настроить локальный
ssh
:Это тогда обеспечило имя пользователя @ IP-адрес.
источник
У меня была такая же проблема сегодня на MAC.
Введите следующую команду:
источник