Большая часть путаницы из сеанса SSH может возникнуть из-за того, что нам всегда нужно знать три местоположения, чтобы получить правильные команды.
В дальнейшем я буду ссылаться на @home как на место, где мы физически сидим, и @remote в качестве машины, к которой мы имеем SSH. Как только мы открываем сеанс SSH на удаленной машине, терминал выполнит все следующие команды на удаленном компьютере. Это визуализируется подсказкой:
admin@home:~$: мы сидим в нашей домашней машине в каталоге HOME user@remote:~S: мы вошли в систему как пользователь в своем ДОМЕ на удаленном компьютереЕсли мы хотим скопировать файлы три пульта в наш дом, мы должны знать, где мы сидим, то есть на каком компьютере команда будет выполняться:
admin@home:~$ scp user@remote:/remote_path/source.file /home_path/
выполнит команду scp на нашей домашней машине, чтобы скопировать source.file с remote_path на удаленном компьютере на home_path на нашей домашней машине. [!d14 ]
Если мы выполним следующее:
admin@home:~$ ssh user@remote
user@remote:~$ scp user@remote:/remote_path/source.file /home_path/
, это будет не совсем то, что мы намеревались в этом, тогда scp был выполнен на удаленной машине, чтобы скопировать source.file в /home_path на . Чтобы очистить источник и пункт назначения, мы выберем
user@remote:~$ scp user@remote:/remote_path/source.file admin@home:/home_path/
. Тогда source.file действительно будет скопировано в home_path, но только если удаленная машина (где выполняется scp) может открыть сеанс SSH
Мы могли бы расширить использование scp для копирования файлов с одной машины remote1 на другую машину remote2 с помощью:
admin@home:~$ scp user1@remote1:/remote1_path/source.file user2@remote2:/remote2_path/
Поскольку scp имеет некоторые ограничения, мы можем использовать rsync для копирования файлов. Вот пример того, как это будет вызываться:
admin@home:~$ rsync -avze ssh user@remote:/path/source_dir/ /path/destination_dir
Это будет точно клонировать все файлы с пульта source_dir на destination_dir на нашей домашней машине.