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, а всякие команды доступные в терминале unix (среди множества других команд).
ssh лишь реализует безопасное соединение с терминалом удаленной машины и команды там совсем другие.
ПС: я вот как-раз искал как shell-команды по ssh передать, и наткнулся на вашу статью. ..и про ssh тут ни слова.
Паха, благодарю за обратную связь!
Переписал статью целиком, чтобы не вводить в заблуждение начинающих программистов. Добавил информацию про работу с самим SSH, выполнение удаленно команд консоли и передачу файлов.
И сделал отдельно статью про основные команды Linux/Unix систем:
http://itman.in/komandy-linux-i-unix-konsoli/
Кстати, если вам попалась в процессе поиска интересная информация по работе и командам SSH- опубликуйте ее здесь или дайте ссылку. Поможем начинающим программистам )
Спасибо! Хорошая статья, мне очень пригодилась
Добрый день. Как определить путь к этому файлу file.txt на локальной машине. С этим есть проблемы. Спасибо.
Открыть терминал и перетащить файл в его окно, таким образом можно получить путь к любому файлу