Linux команда ssh примеры команд

Как пользоваться SSH

SSH — (Secure Shell) — это протокол удаленного управления компьютером с операционной системой Linux. В основном ssh используется для удаленного управления серверами через терминал. Если вы администратор нескольких серверов или даже продвинутый веб-мастер, то наверное, вы часто сталкиваетесь с необходимостью работать с тем или иным компьютером по ssh. В Linux для этого используется сервер ssh на машине, к которой нужно подключится и клиент, на той из которой подключаются.

В этой инструкции мы рассмотрим как пользоваться ssh, а также ее возможности, о которых вы даже не знали. Скорее всего, вы уже знаете как подключиться к серверу по ssh, но у этой утилиты есть еще много возможностей, таких как передача файлов ssh, подключение без пароля или выполнение скрипта на удаленном сервере. Все это мы и рассмотрим далее в статье. Но начнем с самых основ.

Базовый синтаксис

Синтаксис команды выглядит следующим образом:

$ ssh [опции] имя пользователя @ сервер [команда]

Важно заметить что ssh может работать по двум версиям протокола. Версии 1 и 2. Понятное дело, что версия 2 лучше и поддерживает больше типов шифрования и аутентификации. Больше в этой статье об отличиях протоколов мы говорить не будем и я буду подразумевать что вы используете версию 2.

Опции команды SSH

Теперь давайте рассмотрим самые основные опции команды ssh:

  • f — перевести ssh в фоновый режим;
  • g — разрешить удаленным машинам обращаться к локальным портам;
  • l — имя пользователя в системе;
  • n — перенаправить стандартный вывод в /dev/null;
  • p — порт ssh на удаленной машине;
  • q — не показывать сообщения об ошибках;
  • v — режим отладки;
  • x — отключить перенаправление X11;
  • X — включить перенаправление Х11;
  • C — включить сжатие.

Это далеко не все опции утилиты, остальные выходят за рамки данной статьи. Многие настройки работы ssh можно изменять через конфигурационный файл

/.ssh/config но здесь мы это тоже подробно рассматривать не будем.

Настройка сервера SSH

Настройки сервера SSH находятся в файле /etc/ssh/sshd_config. Многие из них мы тоже трогать не будем. Рассмотрим только самые интересные. Сначала откройте файл /etc/ssh/sshd.conf

Порт ssh

По умолчанию ssh работает на порту 22. Но такое поведение небезопасно, поскольку злоумышленник знает этот порт и может попробовать выполнить Bruteforce атаку для перебора пароля. Порт задается строчкой:

Поменяйте значение порта на нужное.

Протокол SSH

По умолчанию сервер ssh может работать по двум версиям протокола, для совместимости. Чтобы использовать только протокол версии два раскомментируйте строчку:

И приведите ее к такому виду:

Рут доступ

По умолчанию Root доступ по ssh разрешен, но такое поведение очень небезопасно, поэтому раскомментируйте строчку:

Доступ только определенного пользователя к SSH

Мы можем разрешить доступ к ssh только для определенного пользователя или группы. Для этого добавьте строчки:

AllowUsers User1, User2, User3
AllowGroups Group1, Group2, Group3

Здесь User1 и Group1 — пользователь и группа к которым нужно разрешить доступ.

Выполнение X11 приложений

Не все знают но есть возможность использовать ssh для запуска полноценных X11 приложений. Об этом мы поговорим ниже, но чтобы все заработало необходимо разрешить эту возможность на стороне сервера, добавьте такую строчку:

Основные опции рассмотрели, перед тем как переходить дальше, не забудьте перезагрузить ssh сервер чтобы сохранить изменения:

service sshd restart

Использование SSH

Основная цель этой статьи — показать интересные и полезные способы использования ssh, о которых, возможно, вы не знали. Переходим к самому вкусному — возможности ssh.

Подключение к серверу

Чтобы просто подключиться к серверу по SSH используйте такую команду:

Выполнить команду

Мы привыкли подключаться к удаленному серверу, а уже потом выполнять нужные команды, но на самом деле утилита ssh позволяет сразу выполнить нужную команду без открытия терминала удаленной машины. Например:

ssh user@host ls

Выполнит команду ls на удаленном сервере и вернет ее вывод в текущий терминал.

Выполнить локальный скрипт

Выполним интерпретатор bash на удаленном сервере и передадим ему наш локальный скрипт с помощью перенаправления ввода Bash:

ssh user@host ‘bash -s’

Читайте также:  Radeon 540 драйвера windows 10

Бекап на удаленный сервер и восстановление

Мы можем сохранять бекэп диска сразу на удаленном сервере с помощью ssh. Перенаправим вывод dd с помощью оператора перенаправления |, затем сохраним его на той стороне в файл:

sudo dd if=/dev/sda | ssh user@host ‘dd of=sda.img’

Теперь чтобы восстановить состояние диска из сделанной копии выполните:

ssh user@host ‘dd if=sda.img’ | dd of=/dev/sda

Здесь и выше /dev/sda имя файла вашего жесткого диска.

Аутентификация без пароля

Использование ssh пароля для входа на сервер не только неудобно но и небезопасно, потому что этот пароль в любой момент может быть подобран. Самый надежный и часто используемый способ аутентификации — с помощью пары ключей RSA. Секретный ключ хранится на компьютере, а публичный используется на сервере для удостоверения пользователя.

Настроить такое поведение очень легко. Сначала создайте ключ командой:

ssh-keygen -t rsa

Во время создания ключа нужно будет ответить на несколько вопросов, расположение оставляйте по умолчанию, если хотите подключаться без пароля — поле Passphare тоже оставьте пустым.

Затем отправляем ключ на сервер:

Вот и все. Теперь при попытке подключится к этому серверу пароль запрашиваться не будет, а стазу произойдет подключение. Смотрите подробнее создание открытого ключа для ssh.

Взять пароль из локального файла

Напомню, что хранить пароли в обычных текстовых файлах небезопасно, но если хотите, то да — возможно. Для этого используется оператор перенаправления ввода Bash:

Изменить приветствие SSH

При входе по ssh может выводиться приветствие, изменить его очень легко. За это отвечает файл /etc/issue. Просто откройте этот файл и введите нужный текст:

Смотрим неудачные попытки входа SSH

Хотите посмотреть были ли попытки неудачного доступа по ssh к вашему серверу и с каких IP адресов? Запросто, все запросы логируются в файл /var/log/secure, отфильтруем только нужные данные командой:

cat /var/log/secure | grep «Failed password for»

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

Кроме выполнения команд, можно копировать файлы по ssh. Для этого используется утилита scp. Просто укажите файл, который нужно передать, удаленный сервер и папку на сервере, вот:

$ scp /адрес/локального/файла пользователь@ хост: адрес/папки

Кроме утилиты scp, передача файлов ssh может быть выполнена более хитрым способом. Прочитаем файл и с помощью cat, передадим, а там сохраним поток в файл:

cat localfile | ssh user@host «cat > remotefile»

ssh user@host «cat > remotefile»

Пойдем еще дальше, вы можете сжимать файлы перед передачей с помощью tar, а потом их сразу же на лету распаковывать:

tar czf — /home/user/file | ssh user@host tar -xvzf -C /home/remoteuser/

Такое копирование файлов ssh позволяет отправлять сразу целые папки.

Запуск графических приложений по ssh

Если вам нужно запустить то или иное графическое приложение на удаленной машине необязательно для этого использовать VNC, вы можете обойтись возможностями ssh. Программа будет выполняться на стороне сервера, а вам будет лишь транслироваться окно, чтобы вы могли сделать все что нужно. Причем все данные шифруются. Чтобы эта функция работала, нужно включить ее поддержку на стороне сервера.

Затем просто выполняем команду запуска графического приложения на удаленном сервере вот таким образом:

ssh -XC user@remotehost «eclipse»

Как вы уже видели опция X разрешает перенаправление X11 на стороне клиента, а С — сжатие данных.

Завершение сессии SSH

Если вы использовали SSH с нестабильным интернетом, когда соединение время от времени рвется, то вам уже, наверное, надоело закрывать терминал, потому что иначе, на первый взгляд, сеанс никак не прекратить. Когда соединение с удаленным сервером разорвано вы не можете ввести никакую команду и сочетания клавиш Ctrl+C, Ctrl+Z, Ctrl+D не работают. И не будут работать поскольку клиент пытается отправить эти команды на сервер. Но есть решение — Escape последовательности. Чтобы активировать их поддержку добавьте строку:

В файл /etc/ssh/ssh_config. Теперь, чтобы разорвать SSH соединение достаточно нажать Enter и набрать:

Другие управляющие символы можно узнать нажав:

Туннели SSH

С помощью SSH туннелей вы можете пробросить порт с удалённого сервера на локальную машину. Это очень полезно, в первую очередь, для разработчиков. Для того чтобы пробросить порт с удалённой машины локальной используйте опцию -L и такой синтаксис:

$ ssh -L локальный_порт :удаленный_адрес : удаленный_порт пользователь@сервер

Например, сделаем удалённую базу данных доступной локально на порту 5555. Для этого выполните подставив свои значения:

$ ssh -N -L 5555:127.0.0.1:3306 root@losst-1

Опция -N сообщает, что команду на удалённой машине выполнять не нужно. Локальный порт — 5555, поскольку сервер баз данных слушает на локальном интерфейсе удалённой машины, то и здесь надо указывать адрес 127.0.0.1. А порт MySQL по умолчанию 3306. Если же вы хотите чтобы локальный сервис был доступен на удалённой машине, то следует использовать опцию -R:

Читайте также:  Cmd как проверить версию windows

$ ssh -N -R 5555:127.0.0.1:3306 root@losst-1

Теперь локальная база данных на порту 3306 будет доступна на удалённом сервере при обращении к порту 5555.

Выводы

Теперь вы знаете как пользоваться SSH. Как видите, технология SSH позволяет сделать намного больше чем можно предположить с первого взгляда, и это еще далеко не все. Какие интересные возможности SSH используете вы при повседневной работе? Поделитесь в комментариях!

Источник

Базовые SSH Команды

Введение

В этом руководстве, мы расскажем о 14 базовых SSH командах. Эти SSH команды дадут вам базовые навыки управления и работы с файлами в терминале Linux.

SSH команда Объяснение
ls Показать содержимое каталога (список названий файлов)
cd Сменить каталог
mkdir Создать новую папку (каталог)
touch Создать новый файл
rm Удалить файл
cat Показать содержимое файла
pwd Показать текущий каталог (полный путь к этому каталогу)
cp Копировать файл/папку
mv Переместить файл/папку
grep Поиск конкретной фразы в файле
find Поиск файлов и папок
vi/nano Текстовые редакторы
history Показать 50 последних использованных команд
clear Очистить окно терминала

Прокачайте ваш проект, воспользовавшись скидками на VPS-хостинг в Hostinger! Большой выбор планов, как для учебных, так и для крупных коммерческих проектов. 30-дневная гарантия возврата денег!

Что вам понадобится

Перед тем, как вы начнете это руководство, вам понадобится следующее:

Шаг 1 — Доступ к удаленному серверу

Рекомендуется иметь виртуальный сервер, с недавно построенным шаблоном, на случай если вы удалите что-то, что не хотели удалять, в таком случае вам не придется восстанавливать сервер и начинать все с начала.

SSH — это сетевой протокол прикладного уровня (с англ. Secure Shell или Безопасная Оболочка). Это протокол, используемый для безопасного доступа к удаленному серверу или системе.

Вот одна из базовых SSH команд, которую вы должны использовать:

Эта команда соединяет вас с вашим сервером, который имеет свой IP адрес serverip и имя пользователя user. Другой, еще более легкий путь для соединения с сервером, это использование команды ssh serverip, в таком случае оболочка будет думать, что вы подключаетесь с тем же именем пользователя под которым вы вошли.

Как только вы введете эту команду, вам будет предложено ввести пароль (если вы подключаетесь впервые, то вы также получите предупреждение о том, что сервер к которому вы подключаетесь не опознан, просто впишите yes в командную строку).

Вот и все, вы подключены к серверу и можете продолжить чтение данного руководства о базовых SSH командах! Если вы хотите выйти из удаленного сервера и вернуться обратно к вашему локальному компьютеру, просто впишите exit в командной строке.

Более детальное руководство о том, как присоединиться к VPS используя Putty SSH (ssh-клиент) вы можете найти здесь.

Шаг 2 — Базовые SSH команды

В этом шаге мы пройдемся по самым основным/часто используемым SSH командам, о которых вам следует знать!

ВАЖНО! Это применимо для всех команд в оболочке. При написании аргумента возле команды, к примеру, cd ‘Folder One’ (где имя папки состоит из двух раздельных слов), вы должны ввести имя папки в кавычках. Команда cd Folder One (без кавычек) работать не будет, потому что система воспримет название как два аргумента (“Folder” и “One”).

  1. ls – Это команда используется для отображения всех файлов и каталогов. Мы рекомендуем использовать ее с опцией -l, она будет выглядеть так ls -l, в таком случае все файлы будут отображены в удобной для вас форме с подробными деталями и информацией о них. Еще одна полезная опция -a, она отобразит все файлы, включая скрытые файлы/папки (файлы с расширением перед ними, к примеру: каталог .ssh).
  2. cd – Это команда используется для перемещения между каталогами (cd расшифровывается как “change directory” — “сменить каталог” ). После отображения всех файлов и каталогов при помощи команды ls, вы сможете выбрать каталог, в который желаете перейти. К примеру, есть каталог home в который вы хотите войти. Введите команду cd home, и вы мгновенно измените ваше текущее расположение на каталог “home”. Можете попробовать снова ввести команду ls, чтобы увидеть, что информация выводимая на экран изменилась. Также можете вписать полный путь до нужного каталога, если он расположен на несколько уровней глубже. Для примера можно использовать: cd home/TestDirectory/AnotherDirectory. В таком случае вы будете перемещены в каталог под названием “AnotherDirectory”. Используйте команду cd .. (cd пробел и две точки) для перехода на уровень выше (в нашем примере мы вернемся в “TestDirectory” из каталога “AnotherDirectory”).
  3. mkdir – Эта команда используется для создания новых каталогов (расшифровывается как “make directory” — “создать каталог”). Она просто создает каталог с выбранным именем, к примеру, mkdir NewFolder создаст папку с именем “NewFolder” в текущем каталоге.
  4. touch – Эта команда используется для создания файлов с выбранным расширением. К примеру, touch NewFile.txt создаст новый “txt” файл “NewFile” в текущем каталоге (расширение может быть любым, и даже без наличия такового, к примеру, touch NewFile.
  5. rm – Эта команда используется для удаления выбранного файла или каталога. К примеру, rm NewFile удалит ранее созданный файл с названием “NewFile”. Если вы хотите удалить каталог и все что находится внутри него, используйте rm -r NewFolder, это удалит каталог “NewFolder” и все файлы внутри него.
  6. cat – Эта команда используется для отображения содержимого файла. К примеру, cat info.txt отобразит содержимое этого файла на экран. Другой пример, cat info.txt info2.txt > mergedinfo.txt объединит вместе два файла (“info.txt” и “info2.txt”) и запишет объединенное содержимое в файл “mergedinfo.txt”.
  7. pwd – Эта команда покажет ваше текущее положение в файловой системе. К примеру, написав pwd, на выходе вы получите что-то вроде: “home/user/public_html”.
  8. cp – Эта команда используется для копирования файлов и каталогов. Синтаксис таков:

Обычно вместо source вы пишите файл, который вы хотите скопировать. Вместо dest, пишите расположение файла/папки. Сейчас, если вы напишите название расположения, которого не существует, к примеру, у вас исходный файл oldfile.txt и вы пишите расположение файла newfile.txt, команда просто скопирует файл и вставит его с новым именем.

В дополнение, имеется несколько опций, которые вы можете использовать с командой cp:

  • cp -f source dest – Принудительно проводит процедуру копирования удаляя целевой файл при необходимости.
  • cp -i source dest – Даст предупредительное сообщение перед перезаписью файла.
  • cp -u source dest – Обновит опции. Скопирует файл только в том случае, если исходный файл новее, чем целевой.
  • cp -n source dest – Не будет копировать файл, если он уже существует (не перезапишет).
  • cp -a source dest – Эта опция будет архивировать файлы.
  1. mv – Эта команда работает так же как и cp, но вместо копирования файла, она его перемещает. Эту команду также можно использовать для переименования файла. Если мы возьмем тот же пример, что и в случае с командой cp, (в нашем текущем каталоге, у нас есть файл oldfile.txt) и мы пишем эту команду: mv oldfile.txt newfile.txt она попросту переименует файл oldfile.txt в newfile.txt.
  2. grep – Это команда проводит поиск в заданном файле/каталоге. К примеру: grep ‘word’ file будет проводить поиск файла со словом ‘word’ в файле под названием “file”. grep покажет всю строку из файла, если фраза найдена. К примеру, есть строка ‘All in all it’s just another word in a sentence’ в файле под названием “file”, используя команду grep ‘word’ file, эта строка будет выделена на экране, так как было найдено слово word.
  3. find – Сейчас эта команда используется для поиска файлов по папкам, которые подходят выбранным критериям (название, размер, тип файла). К примеру, команда: find . -name «*.html» будет выводить все файлы в текущем каталоге, которые имеют окончание/расширение “.html” (надо отметить, что мы использовали знак ” * “ в нашей команде, он говорит системе о том, что неважно какое название имеет файл перед “.html”, важно лишь то, что он заканчивается на “.html”.
  4. vi/nano – Эта команда используется для входа в текстовый редактор. К примеру: nano newfile создаст либо новый файл с именем “newfile” и войдет в редактор nano, либо начнет редактирование существующего файла “newfile” (если он имеется) с помощью того же редактора. Те же вещи применимы и для команды vi, которая открывает другой редактор под названием “vi”.

ВАЖНО! Nano, в отличии от vi не является стандартным редактором, скорее всего вам необходимо установить его перед тем, как вы начнете его использовать. Руководство о том, как установить редактор nano можно найти здесь.

  1. history – Эта команда используется для отображения последних использованных вами команд. К примеру: history 20 отобразит 20 последних введенных команд в Терминале Linux.
  2. clear – Эта команда очистит весь текст в окне Терминала.

Заключение

Надеемся, что данное руководство было достаточно понятно для освоения и получения знаний о применении базовых SSH команд. Мы рекомендуем посетить эту страницу, для получения более подробной информации о командах упомянутых в этом руководстве!

Советуем ознакомиться с руководством по смене SSH порта для укрепления безопасности вашего сервера.

Источник

Читайте также:  Кто изобрел ос linux
Оцените статью