SSH — передача файлов и выполнение команд

SSH — протокол и средство работы с консолью Unix и ОС на базе Linux, поддерживаемое любой современной Linux или Unix системой. Знать основные команды, которые вы можете использовать при работе через SSH полезно, даже если вы не собираетесь заниматься администрированием, но по какой-то причине работаете с удаленным компьютером на базе Linux. Например, это может пригодится при управлении хостингом своего сайта через SSH — многие хостинг компании предоставляют такую возможность.

Про основные команды Linux (Ubuntu) или Unix (FreeBSD), которые вы можете использовать в SSH — su, sudo, w, df, du, ifconfig, ping, ps, top, kill, man, passwd, ls, pwd, less, chmod, chown, tar — вы можете прочитать в статье http://itman.in/komandy-linux-i-unix-konsoli/.

Если вы ищете, как через ssh скачать файл (wget), удалить файл (rm), как выполнить поиск файла (find или locate) или редактирование файла (vi) — вам определенно нужно прочесть про основные команды Linux :)

SSH файлы

Для копирования файлов по SSH используется команда SCP. Обратите внимание: если во время копирования файл назначения уже существует, SCP перезапишет его. Если файл назначения еще не существует, тогда создается пустой файл, ему задается имя файла назначения и уже в него записывается содержимое копируемого файла.

Скопировать файл на локальную машину

Копируем файл «file.txt» из удаленного сервера на локальный компьютер:

$ scp user@remote.host:file.txt /some/local/directory

Передача файлов по ssh

Копируем файл «file.txt» с локального компьютера на удаленный сервер.

$ scp file.txt user@remote.host:/some/remote/directory

 

Копируем файл «file.txt» с одного удаленного сервера «remote.host1» на другой удаленный сервер «remote.host2».

$ scp user@remote.host1:/directory/file.txt user@remote.host2:/some/directory/

Копируем файлы «file1.txt» и «file2.txt» с локального компьютера в Ваш домашний каталог на удаленном сервере.

$ scp file1.txt file2.txt user@remote.host:~

Копируем файл «file.txt» с локального хоста на удаленный хост с нестандартным портом SSH (используя порт 2222).

$ scp -P 2222 file.txt user@remote.host:/some/remote/directory

Копируем файл «file.txt» с локального компьютера в Ваш домашний каталог на удаленном сервере. Сохраняем время изменения и время доступа и права копируемого фала.

$ scp -p file.txt user@remote.host:~

Копируем файл «file.txt» с локального компьютера в Ваш домашний каталог на удаленном сервере. Увеличиваем скорость работы SCP изменяя алгоритм шифрования с AES-128 (по умолчанию) на Blowfish.

$ scp -c blowfish file.txt user@remote.host:~

Копируем файл «file.txt» с локального компьютера в Ваш домашний каталог на удаленном сервере. Ограничиваем ширину канала используемого командой SCP до 100 Kbit/s.

$ scp -l 100 file.txt user@remote.host:~

Копирование каталога по SSH

Копируем папку «dir1» с локального хоста в директорию «dir2» на удаленном хосте.

$ scp -r dir1 user@remote.host:/some/remote/directory/dir2

Копируем несколько файлов с удаленного хост в текущую директорию на Вашем локальном хосте.

$ scp user@remote.host:~/\{file1,file2,file3\} .

Выполнение команд на удаленном Linux сервере

$ ssh [user]@[server] '[command]'

Узнать uptime удаленного сервера

$ ssh root@192.168.1.1 'uptime'

Перезагрузить удаленный сервер

$ ssh root@192.168.1.1 'reboot'

Запуск нескольких команд через SSH

СПОСОБ 1

$ ssh [user]@[server] '[command 1]; [command 2]; [command 3]'

Узнать Uptime и Disk Usage

$ ssh root@192.168.1.1 'uptime; df -h'

СПОСОБ 2

$ ssh [user]@[server] '[command 1] | [command 2] | [command 3]'

Узнать Memory Usage и Load Average

$ ssh root@192.168.1.1 'free -m | cat /proc/loadavg'

СПОСОБ 3

$ ssh [user]@[server] << EOF
 command 1
 command 2
 command 3
 EOF

Показать версию ядра, информацию о CPU и кол-во RAM

$ ssh root@192.168.1.1 << EOF
 uname -a
 grep "model name" /proc/cpuinfo
 grep MemTotal /proc/meminfo
 EOF

Выполнение скрипта на удаленном Linux сервере

$ ssh [user]@[server] 'bash -s' < [local_script]

Запустить локальный скрипт ‘local_script.sh’ на удаленной машине

$ ssh root@192.168.1.1 'bash -s' < local_script.sh

SSH — передача файлов и выполнение команд: 4 комментария

  1. Уважаемый блогер, вот зачем вы такую ерунду в интернетах печатаете? Начинающие программисты будут путаться в понятиях.. :)

    Вообще то все перечисленное — это не команды ssh, а всякие команды доступные в терминале unix (среди множества других команд).

    ssh лишь реализует безопасное соединение с терминалом удаленной машины и команды там совсем другие.

    ПС: я вот как-раз искал как shell-команды по ssh передать, и наткнулся на вашу статью. ..и про ssh тут ни слова.

    1. Паха, благодарю за обратную связь!

      Переписал статью целиком, чтобы не вводить в заблуждение начинающих программистов. Добавил информацию про работу с самим SSH, выполнение удаленно команд консоли и передачу файлов.

      И сделал отдельно статью про основные команды Linux/Unix систем:
      http://itman.in/komandy-linux-i-unix-konsoli/

      Кстати, если вам попалась в процессе поиска интересная информация по работе и командам SSH- опубликуйте ее здесь или дайте ссылку. Поможем начинающим программистам )

  2. Добрый день. Как определить путь к этому файлу file.txt на локальной машине. С этим есть проблемы. Спасибо.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *