105 команд для работы с сервером linux по ssh
Содержание:
- Действия по включению OpenSSH в Windows 10
- How Does SSH Work
- Файл конфигурации SSH
- Установка, обновление и удаление пакетов
- Настройка server SSH в Ubuntu
- Создайте SSH-туннель в Linux и macOS
- Server-Side Configuration
- Аутентификация по ключу
- Включение SSH в Ubuntu
- Сгенерировать пару ключей
- Подключение к Windows по SSH как в Linux
- Как зайти на виртуальный сервер (VPS/VDS) или Slidebar с Linux по SSH
- Запустить SSH в фоновом режиме
Действия по включению OpenSSH в Windows 10
С функциями Windows:
Перейдите в «Настройки»> «Приложения»> «Приложения и функции» или перейдите по этому адресу:
мс-настройки: appsfeatures
Теперь нажмите Управление дополнительными функциями.
Выберите Добавить функцию. Это приведет вас к новой странице.
Прокрутите вниз до Клиент OpenSSH (бета) и Сервер OpenSSH (бета) .
Установите их оба и перезагрузите компьютер
Это загрузит и установит все компоненты по этому пути:
C: \ Windows \ System32 \ OpenSSH
Теперь вы можете использовать Powershell или командную строку (CMD), чтобы перейти к указанному пути, а затем начать работать с SSH, как в Linux.
С подсистемой Windows для Linux (WSL)
Прежде всего, откройте меню «Пуск» и введите Функции Windows , а затем выберите Включить и выключить функции Windows.
Установите флажок Подсистема Windows для Linux и нажмите ОК.
Перейдите в магазин Microsoft Store и найдите Ubuntu .
Установите это приложение.
Теперь выполните поиск Ubuntu в меню «Пуск» или в Cortana, чтобы запустить командную строку Linux Bash и использовать возможности SSH.
В настоящее время эта функция перенесена в Windows 10 с помощью Win32 Port самой Microsoft. В настоящее время доступно обновление для Windows 10 Fall Creators: , но если вы зайдете в их репозиторий GitHub, вы обнаружите, что последняя версия – , которая новее встроенного и, следовательно, будет гораздо более стабильным. Вы можете прочитать больше об установке через Powershell в их документации по GitHub, указанной выше.
Наконец, похоже, что Microsoft усиливает использование технологий с открытым исходным кодом, интегрируя их непосредственно в Windows 10 и улучшая их для разработчиков. Это делает утверждение Терри Майерсона (исполнительного вице-президента группы разработчиков Windows в Microsoft) верным, что
«Windows 10 – лучшая чертова девбокс на планете».
How Does SSH Work
If you’re using Linux or Mac, then using SSH is very simple. If you use Windows, you will need to utilize an SSH client to open SSH connections. The most popular SSH client is PuTTY, which you can learn more about here.
For Mac and Linux users, head over to your terminal program and then follow the procedure below:
The SSH command consists of 3 distinct parts:
ssh {user}@{host}
The SSH key command instructs your system that you want to open an encrypted Secure Shell Connection. {user} represents the account you want to access. For example, you may want to access the root user, which is basically synonymous for system administrator with complete rights to modify anything on the system. {host} refers to the computer you want to access. This can be an IP Address (e.g. 244.235.23.19) or a domain name (e.g. www.xyzdomain.com).
When you hit enter, you will be prompted to enter the password for the requested account. When you type it in, nothing will appear on the screen, but your password is, in fact being transmitted. Once you’re done typing, hit enter once again. If your password is correct, you will be greeted with a remote terminal window.
If you want to learn about some more SSH commands, find them out here.
Файл конфигурации SSH
Если вы подключаетесь к нескольким удаленным системам через SSH на ежедневной основе, вы обнаружите, что запоминание всех удаленных IP-адресов, различных имен пользователей, нестандартных портов и различных параметров командной строки является трудным, если не невозможным.
Клиент OpenSSH считывает параметры, заданные в файле конфигурации для каждого пользователя ( ). В этом файле вы можете хранить различные параметры SSH для каждой удаленной машины, к которой вы подключаетесь.
Пример конфигурации SSH показан ниже:
Когда вы вызываете ssh-клиент, набирая , команда считывает файл и использует данные соединения, указанные для хоста dev. В этом примере эквивалентен следующему:
Дополнительные сведения см. В статье о файле конфигурации SSH .
Установка, обновление и удаление пакетов
В Linux почти все программное обеспечение имеет открытый исходный код, поэтому в большинстве своем распространяется через открытые репозитории. Для его загрузки и установки используются менеджеры пакетов. В каждом семействе дистрибутивов он свой.
apt (в Debian, Ubuntu и им подобных)
sudo apt-get install название пакета — устанавливает пакет из подключенных репозиториев. Ищется по названию и версии.
sudo apt remove название пакета — удаляет из системы установленный пакет.
sudo apt purge название пакета — удаляет установленный пакет и вместе с ним уничтожает все зависимые данные. От приложения не остается никаких следов. Такой вариант подходит, когда нужна полная переустановка пакета «с нуля».
sudo apt autoremove — автоматически выполняет уборку среди установленных пакетов, убирая ненужные остатки кода.
sudo apt-add-repository адрес репозитория — подключает к системе дополнительный репозиторий с пакетами, не вошедшими в базу репозиториев по умолчанию. Требуется для установки некоторых редких open-source-приложений.
sudo apt-get update — обновляет информацию о пакетах, имеющихся в системе и тех, что хранятся в подключенных репозиториях.
sudo apt-upgrade — обновляет версии установленных пакетов до самых свежих, доступных в подключенных репозиториях.
dnf (в Red Hat Linux, CentOS, Fedora)
sudo dnf install название пакета — устанавливает программу на выбор.
sudo dnf config-manager –add-repo адрес репозитория — подключает к системе дополнительный репозиторий.
sudo dnf upgrade — обновляет версии установленных пакетов до самых свежих, доступных в подключенных репозиториях.
sudo dnf remove название пакета — стирает с жесткого диска имеющийся в системе пакет.
sudo dnf autoremove — разыскивает мусор среди имеющихся пакетов и в автоматическом режиме вычищает его.
pacman (в Arch Linux и Manjaro)
sudo pacman -S название пакета — устанавливает пакет на выбор.
sudo yaourt -S название пакета — устанавливает пакет на выбор из репозитория AUR.
sudo pacman -Sy — обновляет информацию о пакетах, имеющихся в системе и тех, что хранятся в подключенных репозиториях.
sudo pacman -Syu — обновляет версии установленных пакетов до самых свежих, доступных в подключенных репозиториях.
sudo pacman -R название пакета — стирает с жесткого диска имеющийся в системе пакет.
sudo pacman -Rs название пакета — стирает не только установленное приложение, но и все зависимые от него элементы.
Настройка server SSH в Ubuntu
Теперь самое главное – вам нужно правильно настроить server OpenSSH перед тем, как включить его и пускать клиент по защищенному протоколу на хост. Неправильная настройка может привести к понижению уровня безопасности и ваш сервер могут взломать.
То, как будет работать сервер, прописано в файле конфигураций config. В частности, в нем прописаны требования, каким должен соответствовать клиент для прохода через защиту SSH. Для начала стоит определиться с пользователем, через которого вы будете управлять системой. По умолчанию установлен пользователь root. Но оставлять эту настройку таковой небезопасно – у root пользователя слишком много прав и вы случайно можете навредить системе, потому лучше запретить его подключение к серверу.
Вам нужно переустановить на сервер другой аккаунт пользователя, чтобы вы могли безопасно пользоваться другим компьютером через SSH. Для этого вам нужно будет вместо root добавить другого юзера при помощи командной строки: adduser имя_пользователя. Но и этого недостаточно – все-таки иногда вам нужен будет пользователь root. Тогда сделайте добавленного юзера наполовину суперадминистратором, чтобы он мог временно получать root права. Для этого зайдите в root и пропишите следующую строку: gpasswd -a имя_пользователя sudo. Таким образом вы добавите нового юзера в группу пользователей sudo, у которых наибольший уровень доступа.
Если вы планируете при помощи SSH создать публичный сервер и на компьютер будет заходить ни один клиент, тогда лучше вообще убрать root пользователя. Если же вы уверены в своих способностях и не планируете публиковать хост, тогда можете сделать клиент суперадминистратором и защитить его паролем. Но иногда после этого появляется сообщение об ошибке: access denied. Надпись access denied после попытки зайти в аккаунт суперпользователя при помощи ввода пароля может означать какое-то противоречие в файле конфигураций config.
Чтобы устранить access denied, вам стоит хорошенько просмотреть все ли в порядке в настройках. Самая частая причина, почему появляется access denied – это активация опции авторизации по паролю и для обычных пользователей, и для root. Чтобы убрать access denied, поменяйте PermitRootLogin вместо yes на without-password. А затем пропишите PermitRootLogin yes. Далее перезапустите сервер (service ssh restart) и сообщение access denied окончательно пропадет.
Следующий важный шаг – это активация усиленной аутентификации пользователей. Авторизация путем ввода пароля – это уже устарелый и неэффективный способ защиты аккаунтов. Сейчас есть множество программ, при помощи которых можно путем подбора взломать пароли. Потому вам лучше использовать аутентификацию при помощи публичного ключа. То есть вам лучше использовать Public Key Authentication и поставить yes возле этого пункта в файле config.
Чтобы войти на сервер путем подтверждения публичного ключа, вам нужно его сначала сгенерировать. В Ubuntu очень удобно генерировать ключи, так как для этого не нужно скачивать какие-то дополнительные программы – достаточно забить в терминале ssh-keygen. После этого появится сообщение с информацией о расположении созданного ключа. Он будет находится в папке .ssh. После этого система запросит у вас пароль, но настоятельно рекомендуется оставить его пустым – иначе потом будете вводить его каждый раз при осуществлении какой-либо операции.
Следующим шагом вам нужно добавить сгенерированный публичный ключ в список доверенных на сервере. Для начала вам нужно будет скопировать публичный ключ. Он находится в файле формата .pub в папке .ssh. Скопируйте его и зайдите на сервер. На сервере так же должна быть папка .ssh. Если ее нет, то придется создать самостоятельно. А после этого, используя стандартный текстовый редактор, создайте файл authorized_keys. Именно в него вам нужно будет поместить публичный ключ. После этого вы сможете заходить на сервер без какого-либо подтверждения. Аутентификация будет проходить в автоматическом, фоновом режиме, что весьма удобно и при этом безопасно.
В целом, на этом настройка протокола SSH заканчивается! Разве что еще можете изменить порт 22 на другой.
Создайте SSH-туннель в Linux и macOS
Клиент предустановлен в большинстве систем на базе Linux и Unix.
Если вы используете Linux или macOS в качестве операционной системы, вы можете создать туннель SSH, используя следующую команду:
Используются следующие параметры:
- — Указывает SSH не выполнять удаленную команду.
- — Создает переадресацию локального порта. Локальный порт ( ), то IP — назначения ( ) и удаленный порт ( ) разделены двоеточием ( ).
- — удаленный пользователь SSH и IP-адрес сервера.
- Чтобы запустить команду в фоновом режиме, используйте параметр .
- Если SSH-сервер прослушивает порт, отличный от 22 (по умолчанию), укажите порт с помощью параметра .
После запуска команды вам будет предложено ввести пароль пользователя SSH. После его ввода вы войдете на сервер, и туннель SSH будет установлен. Рекомендуется настроить аутентификацию на основе ключей SSH и подключаться к серверу без ввода пароля.
Теперь вы можете указать клиенту MySQL на локальном компьютере адрес ввести учетные данные для входа в удаленную базу данных и получить доступ к серверу MySQL.
Например, чтобы подключиться к серверу MySQL с помощью клиента из командной строки, вы должны ввести:
Где — это удаленный пользователь MySQL, имеющий права доступа к базе данных.
При появлении запроса введите пароль пользователя MySQL.
Чтобы завершить туннель SSH, введите в консоли, на которой работает клиент ssh.
Server-Side Configuration
The option in the OpenSSH server configuration file must be enabled on the server to allow port forwarding. By default, forwarding is allowed. Possible values for this option are or to allow all TCP forwarding, to prevent all TCP forwarding, to allow local forwardings, and to allow remote forwardings.
Another option of interest is , which can be used to forward Unix domain sockets. It allows the same values as . The default is .
For example:
The configuration option as described above also affects remote port forwardings. Possible values were (only local connections from server host allowed; default), (anyone on the Internet can connect to remote forwarded ports), and (client can specify an IP address that can connect, anyone can if not specified).
Аутентификация по ключу
Наиболее предпочтительным способом авторизации является аутентификация на основе SSH2 RSA-ключей. При таком способе пользователь генерирует на своей стороне пару ключей, из которой один ключ является секретным, а другой публичным. Публичный ключ копируется на сервер и служит для проверки идентичности пользователя.
Создание ключей
Для генерации ключей на клиенте предназначена команда:
$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/Evgeniy/.ssh/id_rsa): ~/.ssh/rsa-vm-wp Enter passphrase (empty for no passphrase): Enter Enter same passphrase again: Enter Your identification has been saved in C:/Users/Evgeniy/.ssh/rsa-vm-wp. Your public key has been saved in C:/Users/Evgeniy/.ssh/rsa-vm-wp.pub. The key fingerprint is: SHA256:qreJu/Sto0HZ3e9cJBcyKJl0Fb/cOBL9l6ozwtbdPAI Evgeniy@TKMCOMP The key's randomart image is: +-------+ | . ..o. | | . + . o | | + . + + | | o . o = *.| | o . S . o B.+| | . . E =...| | o . . . +.+ | | . =oo + *.+ + | | *==+o ..= . .| +---------+
Необходимо ввести имя файла ключа (в моем случае ), пароль для доступа к ключу (можно оставить пустым, нажав Enter).
Ключи готовы, копируем публичный ключ на сервер:
$ ssh-copy-id -p 2222 -i ~/.ssh/rsa-vm-wp.pub evgeniy@192.168.110.12 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "rsa-vm-wp.pub" /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys evgeniy@192.168.110.12's password: пароль
Включаем на сервере аутентификацию по публичному ключу:
$ sudo nano /etc/ssh/sshd_config
PubkeyAuthentication yes
И отключаем возможность аутентификации по паролю:
PasswordAuthentication no
Перезагружаем ssh-службу после изменения настроек и пробуем подключиться к серверу по ключу:
$ sudo systemctl restart ssh
$ ssh -p 2222 -i ~/.ssh/rsa-vm-wp evgeniy@192.168.110.12 Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 5.0.0-37-generic x86_64)
И последний момент — добавляем новую запись в файл :
Host vm-wp User evgeniy HostName 192.168.110.12 Port 2222 IdentityFile ~/.ssh/rsa-vm-wp
Теперь к серверу можно подключаться так:
$ ssh vm-wp Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 5.0.0-37-generic x86_64)
Поиск:
CLI • Linux • SSH • Ubuntu • Настройка • Установка • Служба • Сервер • Ключ
Включение SSH в Ubuntu
Сервер SSH не устанавливается по умолчанию в настольных системах Ubuntu, но его можно легко установить из стандартных репозиториев Ubuntu.
Чтобы установить и включить SSH в вашей системе Ubuntu, выполните следующие действия:
-
Откройте свой терминал либо с помощью либо щелкнув значок терминала и установите пакет , набрав:
При появлении запроса введите пароль и введите чтобы продолжить установку.
-
После завершения установки служба SSH запустится автоматически. Чтобы убедиться, что установка прошла успешно и запущена служба SSH, введите следующую команду, которая распечатает состояние сервера SSH:
Вы должны увидеть что-то вроде :
Нажмите чтобы вернуться в командную строку.
-
Ubuntu поставляется с инструментом настройки брандмауэра под названием UFW. Если в вашей системе включен брандмауэр, обязательно откройте порт SSH:
Сгенерировать пару ключей
Первый шаг — это генерация пары ключей. Обычно это делается на клиентской машине.
Например, на вашем ноутбуке.
Основная команда ssh-keygen создаст 2048-битную пару RSA ключей. Для
большей надёжности можно добавить флаг -b 4096
Выполните
ssh-keygen -b 4096
Чтобы сгенерировать ключ в /home/$(whoami)/.ssh
или
sudo ssh-keygen -b 4096
Чтобы сгенерировать ключ в /home/root/.ssh
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Нужно придумать имя ключа.
Я назову ключ
andrei-key101
а сохранять буду в текущую директорию.
Enter file in which to save the key (/root/.ssh/id_rsa): andrei-key101
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Нужно два раза ввести пароль. Если он вам нужен. Обычно нет.
Your identification has been saved in andrei-key101
Your public key has been saved in andrei-key101.pub
The key fingerprint is:
SHA256:abcd/abcdefghijklmnopqrstuvwxyz1234567890ab root@urn-su
The key’s randomart image is:
+——-+
|=o oo++ |
|= oo o. = o |
|+ |
|Oo=o . . |
|B+.o S . |
|+o.o |
|+.0. . |
|o+= . E |
|+=oo. . . |
+———+
Ключи готовы. Я сохранил их в текущую директорию поэтому увижу их сделав ls
ls
andrei-key101 andrei-key101.pub
Важно помнить, что если вы генерируете ключ для другого пользователя нужно
позаботиться о правильных правах доступа к этому ключу.
Подключение к Windows по SSH как в Linux
Меня всегда удручало подключение к Windows машинам. Нет, я не противник и не сторонник Microsoft и их продуктов. Каждый продукт существует для своей цели, но речь не об этом. Для меня всегда было мучительно больно подключаться к серверам с Windows, потому что эти подключения либо настраиваются через одно место (привет WinRM с HTTPS) либо работают не очень стабильно (здравствуй RDP к виртуалкам за океаном).
Поэтому, случайно натолкнувшись на проект Win32-OpenSSH, я решил поделиться опытом настройки. Возможно кому-нибудь эта тулза сэкономить кучу нервов.
Варианты установки:
- Вручную
- Через пакет Chocolatey
- Через Ansible, например роль _openssh
Далее я буду рассказывать про первый пункт, так как с остальными и так все более менее понятно.
Отмечу, что данный проект пока что находится на стадии beta, поэтому его не рекомендуют использовать в production.
Итак, скачиваем последний релиз, на текущий момент это Есть версии как для 32 так и для 64 битных систем.
Распаковываем в C:\Program Files\OpenSSH Обязательный момент для корректной работы: права на запись в этой директории должны быть только у SYSTEM и у админской группы.
Устанавливаем сервисы скриптом находящимся в этой директории
Разрешаем входящие подключения на 22 порт:
Уточнение: апплет New-NetFirewallRule используется на Windows Server 2012 и новее. В наиболее старых системах (либо десктопных) можно воспользоваться командой:
При запуске будут автоматически сгенерированы хост-ключи (если отсутствуют) в %programdata%\ssh
Автозапуск сервиса при запуске системы мы можем включить командой:
Так же, можно сменить командную оболочку по умолчанию (после установки, по умолчанию — cmd):
Уточнение: Необходимо указывать абсолютный путь.
А дальше настраиваем sshd_config, который расположем в C:\ProgramData\ssh. Например:
И создаем в пользовательской папке директорию .ssh, а в ней файл authorized_keys. Туда записываем публичные ключи.
Важное уточнение: права на запись в этот файл, должен иметь только пользователь, в чьей директории лежит файл. Но если у вас проблемы с этим, всегда можно выключить проверку прав в конфиге:
Но если у вас проблемы с этим, всегда можно выключить проверку прав в конфиге:
К слову, в C:\Program Files\OpenSSH лежат 2 скрипта (, ), которые должны но не обязаны фиксить права, в том числе и с authorized_keys, но почему-то не фиксят.
Не забывайте перезапускать сервис sshd после для применения изменений.
- Стандартный подход к подключению к серверам. Когда есть немного Windows машин, очень неудобно когда: Так, сюда мы ходим по ssh, а тут рдп, и вообще best-practice с бастионами, сначала ssh-туннель, а через него RDP.
- Простота настройки Считаю что это очевидно.
- Скорость подключения и работы с удаленной машиной Нет графической оболочки, экономятся как ресурсы сервера, так и количество передаваемых данных.
Минусы:
Не заменяет RDP полностью. Не все можно сделать из консоли, увы. Я имею ввиду ситуации, когда требуется GUI.
Материалы использованные в статье: Ссылка на сам проектВарианты установки бессовестно скопированы с Ansible docs.
Как зайти на виртуальный сервер (VPS/VDS) или Slidebar с Linux по SSH
УслугиСвязанные услуги:ОглавлениеWindows
Для подключения к виртуальному серверу (VPS/VDS) на Linux по SSH через OC Windows нужно:
Установить клиент, который будет заходить по SSH на сервер. Рекомендуем программу PuTTY. После скачивания, установите и запустите программу.
2) Далее узнаете IP-адрес виртуального сервера. Зайдите в личный кабинет на страницу с информацией о виртуальном сервере.
3) Вписываете IP-адрес виртуального сервера в программу PuTTY, как это показано на скриншоте и нажмите кнопку открыть.
4) Появится предупреждение, нажмите “ОК”
5) Введите логин и пароль от виртуального сервера. Данные записаны в личном кабинете.
6) Впишите логин, нажмите кнопку “Enter”, далее пароль и опять нажмите “Enter”. Если все правильно, вы зайдете на виртуальный сервер по SSH
Linux
Для подключения к виртуальному серверу (VPS/VDS) на Linux по SSH через операционные системы на базе Linux нужно:
Зайти в приложение Terminal
2) Узнаете IP-адрес виртуального сервера, логин и пароль для доступа к серверу. Зайдите в личный кабинет на страницу с информацией о виртуальном сервере.
4) Вводите пароль, который указан в личном кабинете (при вводе пароля в терминал пароль не показывается в целях безопасности) и нажимаете Enter на клавиатуре . Вы подключены к серверу по SSH.
macOS
Для подключения к виртуальному серверу (VPS/VDS) на Linux по SSH через macOS нужно:
Зайти в приложение , которое установлено на операционных системах macOS
2) Узнаете IP-адрес виртуального сервера, логин и пароль для доступа к серверу. Зайдите в личный кабинет на страницу с информацией о виртуальном сервере.
4) Соглашаетесь с условиями, пишите “yes” и жмете Enter на клавиатуре.
5) Вводите пароль, который указан в личном кабинете (при вводе пароля в терминал пароль не показывается в целях безопасности) и нажимаете Enter на клавиатуре . Вы подключены к серверу по SSH.
Для подключения к виртуальному серверу (VPS/VDS) на Linux по SSH через iOS нужно:
Скачиваете одну из платных или бесплатных приложений, которые подключаются по SSH к виртуальному серверу. В этой инструкции использована бесплатная программа iTerminal
Заходите в программу и выбрать пункт “SSH”
3) Узнаете IP-адрес виртуального сервера, логин и пароль для доступа к серверу. Зайдите в личный кабинет на страницу с информацией о виртуальном сервере.
4) Вводите IP-адрес в строку “Host name or IP address”, логин — “User name”, пароль — “Password” и жмете кнопку “Connect”.
Источник
Запустить SSH в фоновом режиме
Существует несколько способов запустить ssh соединение в фоновом режиме — то есть освободим текущий терминал.
-L, screen, tmux, nohup
Мне запустить ssh фоном из скрипта помог nohup, поэтому начнём с него
nohup ssh user@host «cd scripts;python3 my_script.py $ARG1 $ARG2; exit» &
Для чего это было нужно: Python скрипт сначала
открывал одно ssh соединение из
subprocess
там выполнялась команда для запуска
мониторинга потребления памяти
и больше от этого соединения ничего было не нужно, зато необходимо было
выполнять новые соединения с нагрузкой из другого скрипта.
Чтобы уйдя из первого подключения не оборвать мониторинг потребления памяти
перед ssh нужно было добавить nohup, а в самом конце поставить &