Microsoft объявила о выпуске январской линейки Xbox Game Pass, включающей три известные японские игры с длительным сроком службы, превышающим 100 часов.
Xbox Game Pass медленно начинает год после впечатляющего заключительного месяца, предлагая только:
Persona 3 Portable (облако, консоль и ПК) — 19 января.
Persona 4 Golden (облако, консоль и ПК) — 19 января.
Monster Hunter Rise (облако, консоли и ПК) — 20 января.
Но не позволяйте их небольшому количеству обмануть вас; это ролевые игры, то есть часы и часы игры — если вам нравятся такие игры. Для 100-процентного завершения считайте около 160 часов для Monster Hunter Rise и 80+ часов для каждого из названий Persona.
Как обычно, некоторые игры покидают платформу 15 января, а именно:
Danganronpa: Trigger Happy Havoc (облако, консоль и ПК)
Никто не спасет мир (облако, консоль и ПК)
Pupperazzi (облако, консоль и ПК)
The Anacrusis (предварительная версия игры) (облако, консоль и ПК)
We Happy Few (облако, консоль и ПК)
Windjammers 2 (облако, консоль и ПК)
Странно видеть, как We Happy Few покидает Game Pass, поскольку его разработчик, Compulsion Games, принадлежит Xbox Game Studios — вероятно, это связано с тем, что права принадлежат Gearbox Software. К сожалению для тех, кто любит собирать достижения и как-то пропустил это, времени на их получение не осталось, так как для их прохождения требуется около 60+ часов.
Сегодня в статье рассмотрим примеры использования SSH сессий в операционных системах семейства Linux.
SSH (Secure Shell) – это протокол для удаленного доступа к серверу через интернет. Это один из самых распространенных инструментов системного администрирования Linux. В этой статье мы рассмотрим несколько примеров использования SSH, которые помогут вам выйти на новый уровень удаленного системного администрирования.
Удаленный доступ к серверу:
SSH позволяет подключаться к удаленному серверу и работать с ним через командную строку. Это может быть полезно, если вы хотите получить доступ к серверу, находящемуся в другом городе или даже стране. Например, если у вас есть сервер с веб-приложением, которое нужно обновлять, вы можете использовать SSH для обновления сервера удаленно.
Управление конфигурациями:
SSH также может быть использован для управления конфигурациями сервера. Например, вы можете создать скрипт, который будет автоматически обновлять конфигурации сервера при каждом запуске. Это поможет вам избежать ошибок и упростить процесс обновления.
Резервное копирование и восстановление:
SSH может использоваться для создания резервных копий сервера и восстановления его после сбоя. Например, вы можете настроить автоматическое копирование файлов на удаленный сервер и восстановление их при необходимости.
Мониторинг и управление процессами:
SSH можно использовать для мониторинга процессов на сервере и управления ими. Вы можете использовать команды типа “top” или “ps” для просмотра состояния процессов и управления ими через SSH.
Управление пользователями и группами:
SSH также можно использовать для управления пользователями и группами на сервере. Вы можете создавать новых пользователей, изменять их права доступа и удалять их через SSH.
Установка SSH на Linux
Для подключения к удаленному серверу по SSH вам необходимо для начала установить сам клиент.
Если вы используете Ubuntu или Debian, то вы можете установить его с помощью менеджера пакетов Apt:
sudo apt-get install ssh
Если вы используете CentOS или Red Hat, то вы можете установить SSH-клиент с помощью менеджера пакетов Yum:
Правда запутанно и ничего не понятно. Давайте разберем классические примеры с использованием команды SSH.
Подключение к удалённому серверу по SSH в Linux
В следующем примере используются обычные параметры, часто встречающиеся при подключении к удалённому серверу по SSH.
Откройте терминал и введите команду:
ssh username@server_ip
username – это имя пользователя на удаленном сервере
server_ip – это IP-адрес сервера.
Использование файла конфигурации SSH
Хотя многие знакомы с файлом sshd_config, есть ещё файл конфигурации клиента для команды ssh. расположение по умолчанию ~/.ssh/config, откроем его на редактирование:
nano ~/.ssh/config
Введем следующие данные:
# Alias для подключения
Host myserver
# FQDN-имя или IP-адрес сервера
HostName myserver.com
# Имя юзера на сервера
User user
# Порт для подключения
Port 2222
# Идентификационный файл
IdentityFile /home/user/.ssh/myserver_rsa
В приведённом выше файле конфигурации ssh мы задали для хоста myserver параметры для подключения. Теперь чтобы подключиться к серверу достаточно набрать следующее:
ssh myserver
Данный файл конфигурации может сэкономить много времени на ввод параметров для подключения, позволяя автоматически применять продвинутую конфигурацию к конкретным хостам.
Копирование файлов по SSH
SSH-клиент поставляется с двумя очень удобными инструментами для копирования файлов по зашифрованному ssh-соединению. Обратите внимание, что многие параметры для ssh применяются и в этих командах. Первая команда для копирования файлов по SSH это команда scp.
Вторая команда для копирования файлов по SSH это команда sftp. Для тех, кто знаком с консольным ftp, многие из команд похожи и в sftp. Вы можете сделать push, put и ls.
sftp user@myserver
Указываем порт и идентификационный файл:
sftp -P 222 -i ~/.ssh/myserver_rsa user@myserver
SSH socks-прокси сервер и динамическая переадресация портов.
SSH socks-proxy server и dynamic port forwarding – это способы обхода блокировок и ограничений на доступ к ресурсам в интернете. Они позволяют обойти ограничения доступа к сайтам, которые могут быть заблокированы провайдером интернета или правительством.
Socks-proxy server – это сервер, который находится за пределами зоны блокировок и перенаправляет запросы на нужные ресурсы через него. Для использования socks-proxy сервера нужно настроить его на локальном компьютере или на VPS-хостинге. Затем нужно настроить SSH-туннель на своем устройстве и указать socks-сервер в качестве прокси.
Dynamic port forwarding – это технология, которая позволяет динамически перенаправлять порты на локальном устройстве. Она работает на основе технологии SSH и позволяет обойти блокировки на уровне портов. Для использования dynamic port forwarding нужно настроить SSH на своем устройстве, а затем использовать специальные команды для перенаправления портов на нужный ресурс.
Оба метода имеют свои преимущества и недостатки, поэтому выбор зависит от конкретной ситуации и целей использования.
Активация socks-прокси через терминал
Клиент ssh может туннелировать трафик через прокси-сервер SOCKS одной простой командой.
ssh -D 8888 user@myserver
Проверим запустился ли наш Socks порт:
netstat -pan | grep 8888
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 127.0.0.1:8888 0.0.0.0:* LISTEN 2564/ssh
tcp6 0 0 ::1:8888 :::* LISTEN 2564/ssh
Из вывода мы видим что socks-прокси запустился на TCP-порту 8888, 127.0.0.1 указывает, что служба работает только на localhost. Мы можем применить немного другую команду для прослушивания всех интерфейсов, включая ethernet и wifi, это позволит другим приложениям (браузерам и т д.) в нашей сети подключаться к прокси-сервису через ssh socks-прокси.
ssh -D 0.0.0.0:8888 user@myserver
Активация socks-прокси в Firefox
Теперь можем настроить браузер для подключения к socks-прокси. В Firefox выберите Настройки | Основные | Параметры соединения. Укажите IP-адрес и порт для подключения.
Обратите внимание на опцию в нижней части формы, чтобы DNS-запросы браузера тоже шли через прокси SOCKS. Если используете прокси-сервер для шифрования веб-трафика в локальной сети, то наверняка захотите выбрать эту опцию.
Активация socks-прокси в Chrome
Запуск Chrome с определёнными параметрами командной строки активирует socks-прокси, а также туннелирование DNS-запросов из браузера. Доверяй, но проверяй. Используйте tcpdump для проверки, что DNS-запросы больше не видны. Для запуска в терминале набираем:
SSH-туннель просто открывает порт в вашей локальной системе, который подключается к другому порту на другом конце туннеля.
ssh -L 4444:127.0.0.1:80 user@myserver
В примере выше мы с удаленного хоста и его локального адреса 127.0.0.1 и порта 80, пробрасываем туннель на наш localhost на порт 4444.
Далее в примере порты прослушивания связываются с другими узлами локальной сети.
ssh -L 0.0.0.0:8080:127.0.0.1:80 user@myserver
Здесь мы подключаемся к порту 80 на удаленном веб-сервере и пробрасываем его на все наши адреса на порт 8080.
SSH-туннель на сторонний хост
Мы можем использовать те же параметры для подключения туннеля с удалённого сервера к другой службе, запущенной на третьей системе.
ssh -L 0.0.0.0:8080:10.10.10.10:80 user@myserver
Здесь мы пробрасываем туннель к веб-серверу, работающему на 10.10.10.10:80 через myserver (10.10.10.10 находится за myserver) на нашу локальную машину на все адреса по порту 8080. Веб-сервер на 10.10.10.10 будет считать myserver источником веб-запросов.
Здесь настроим прослушивающий порт на удалённом сервере, который будет подключаться обратно к локальному порту на нашем localhost (или другой системе).
В этой SSH-сессии устанавливается соединение с порта 1999 на myserver к порту 902 на нашем локальном клиенте.
Проброс локального порта на удаленную машину
ssh -R 8081:10.10.10.10:80 user@myserver
После ввода данной команды на удаленном хосте myserver будет доступ до веб-сервера 10.10.10.10:80 по адресу http://localhost:8081.
Обратный прокси SSH
В этом случае мы устанавливаем socks-прокси на нашем ssh-соединении, однако прокси слушает на удалённом конце сервера. Подключения к этому удалённому прокси теперь появляются из туннеля как трафик с нашего localhost.
Для создания туннеля, который будет активен постоянно используется так называемая утилита аutossh. Единственно требование это необходимость настройки между двумя системами аутентификацию по публичным ключам, чтобы не получать запросы на ввод пароля при каждом обрыве и восстановлении соединения.
Установка autossh
По умолчанию, autossh не установлен в системе. Чтобы установить эту утилиту введем команду ниже.
Host – имя хоста, к которому мы хотим подключиться (myserver.ru в нашем случае)
IdentityFile – путь к нашему SSH-ключу
LocalForward – номер порта, на который мы будем перенаправлять трафик. В данном случае мы перенаправляем трафик с порта 8080 удаленного хоста myserver.ru на локальный адрес 127.0.0.1 и порт 80 соответственно.
autossh -M 0 -f -N ~/autossh_config
-M 0 – указывает, что мы не хотим использовать буфер памяти для хранения открытого соединения.
-f – запускает autossh в фоновом режиме.
-N – указывает, что соединение должно быть установлено в режиме “не-сессий”. Это означает, что соединение устанавливается только для выполнения команд, а не для интерактивного взаимодействия с удаленной системой.
~/autossh_config – указывает, где находится конфигурационный файл для autossh
Пример туннеля autossh
Для запуска туннеля давайте наберем такую команду:
Здесь мы пробрасываем туннель к веб-серверу, работающему на 10.10.10.10:80 через myserver (10.10.10.10 находится за myserver) на нашу локальную машину на все адреса по порту 8080. Веб-сервер на 10.10.10.10 будет считать myserver источником веб-запросов.
Копирование ключа SSH (ssh-copy-id)
Тут есть несколько способов, но эта команда экономит время, чтобы не копировать файлы вручную. Она просто копирует ~/.ssh/id_rsa.pub (или ключ по умолчанию) с вашей системы в ~/.ssh/authorized_keys на удалённом сервере.
ssh-copy-id user@myserver
Удалённое выполнение команд (неинтерактивно)
Команду ssh можно связать с другими командам для обычного удобного интерфейса. Просто добавьте команду, которую хотите запустить на удалённом хосте, в качестве последнего параметра в кавычках.
В данном примере grep выполняется на локальной системе после того, как лог скачался по ssh-каналу. Если файл большой, удобнее запустить grep на удалённой стороне, просто заключив обе команды в двойные кавычки.
Удалённый перехват пакетов и просмотр в Wireshark
Используем команду ниже для удалённого перехвата пакетов с выдачей результата непосредственно в GUI локального Wireshark.
ssh root@myserver 'tcpdump -c 1000 -nn -w - not port 22' | wireshark -k -i -
Копирование локальной папки на удалённый сервер по SSH
Красивый трюк, который сжимает папку с помощью bzip2 (это параметр -j в команде tar), а затем извлекает поток bzip2 на другой стороне, создавая на удалённом сервере дубликат папки.
Если на клиенте и удалённом сервере установлены «иксы», то можно удалённо выполнить команду GUI, с окном на вашем локальном рабочем столе. Эта функция существует давным давно, но по-прежнему очень полезна. Запустите удалённый веб-браузер или даже консоль VMWawre Workstation, как я делаю в этом примере.
ssh -X user@myserver vmware
Требуется строка X11Forwarding yes в файле sshd_config.
Удалённое копирование файлов с помощью rsync и SSH
rsync во многом удобнее scp, если требуется периодическое резервное копирование каталога, большого количества файлов или очень больших файлов. Здесь есть функция восстановления после сбоя передачи и копирования только изменённых файлов, что сохраняет трафик и время.
В этом примере используется сжатие gzip (-z) и режим архивирования (-a), который включает рекурсивное копирование.
rsync -az /home/testuser/data myserver:backup/
SSH через сеть Tor
Анонимная сеть Tor может туннелировать SSH-трафик с помощью команды torsocks. Следующая команда прокинет ssh-прокси через Tor.
torsocks ssh user@myserver
Torsocks будет использовать для прокси порт 9050 на localhost. Как всегда при использовании Tor необходимо серьёзно проверять, какой трафик туннелируется и другие проблемы операционной безопасности (opsec) куда идут ваши DNS-запросы.
Редактирование текстовых файлов с помощью vim через ssh/scp
Для всех любителей vimэтот совет сэкономит немного времени. С помощью vim файлы редактируются по scp одной командой. Этот метод просто создаёт файл локально в /tmp, а затем копирует его обратно, как только мы его сохранили из vim.
vim scp://user@myserver//etc/hosts
Примечание: формат немного отличается от обычного scp. После хоста у нас двойной //. Это ссылка на абсолютный путь. Один слэш будет означать путь относительно домашней папки users.
Монтирование удалённой директории через SSH с SSHFS
SSHFS (SSH Filesystem) – это клиент файловой системы на основе fuse для монтирования удаленных каталогов по SSH-соединению. SSHFS использует протокол SFTP, который является подсистемой SSH и включен по умолчанию на большинстве серверов SSH.
При помощи sshfs мы можем подключить локальный каталог к удалённому серверу со всеми взаимодействиями файлов в зашифрованном сеансе ssh.
Установка sshfs
На Ubuntu и Debian установим пакет sshfs
sudo apt install sshfs
Монтирования при помощи sshfs
Примонтируем удалённый каталог к нашей системе.
sshfs user@myserver:/media/data ~/data/
/media/data – директория на удаленном сервере myserver.
~/data/ – директория в домашнем каталоге пользователя.
Чтобы смонтировать удаленный каталог через /etc/fstab, используйте fuse.sshfs в качестве типа файловой системы.
По умолчанию при наличии существующего подключения к удалённому серверу с помощью ssh второе подключение с помощью ssh или scp устанавливает новый сеанс с дополнительной аутентификацией. Опция ControlPath позволяет использовать существующий сеанс для всех последующих соединений. Это значительно ускорит процесс: эффект заметен даже в локальной сети, а тем более при подключении к удалённым ресурсам.
Host remoteserver
HostName remoteserver.example.org
ControlMaster auto
ControlPath ~/.ssh/control/%r@%h:%p
ControlPersist 10m
ControlPath указывает сокет для проверки новыми соединениями на предмет наличия активной сессии ssh. Последняя опция означает, что даже после выхода из консоли существующий сеанс останется открытым 10 минут, так что в течение этого времени вы сможете повторно подключиться по существующему сокету. Для дополнительной информации смотрите справку ssh_config man.
Потоковое видео по SSH с помощью VLC и SFTP
Даже давние пользователи ssh и vlc (Video Lan Client) не всегда знают об этой удобной опции, когда очень нужно посмотреть видео по сети. В настройках File | Open Network Stream программы vlc можно ввести местоположение как sftp://myserver. Если требуется пароль, появится запрос.
sftp://myserver//media/uploads/myvideo.mkv
Прыжки по хостам с ssh и -J
Если из-за сегментации сети приходится переходить через несколько хостов ssh, чтобы добраться до конечной сети назначения, вам сэкономит время ярлык -J.
ssh -J host1,host2,host3 myuser@myserver
Здесь главное понимать, что это не аналогично команде ssh host1, затем ssh host2 и т. д. Параметр -J хитро использует переадресацию, чтобы localhost устанавливал сеанс со следующим хостом в цепочке. Таким образом, в приведённом выше примере наш localhost аутентифицируется на host4. То есть используются наши ключи localhost, а сеанс от localhost до host4 полностью зашифрован.
Для такой возможности в ssh_config укажите опцию конфигурации ProxyJump. Если регулярно приходится переходить через несколько хостов, то автоматизация через конфиг сэкономит массу времени.
Блокировка попыток брутфорса SSH с помощью iptables
Любой, кто управлял сервисом SSH и просматривал логи, знает о количестве попыток брутфорса, которые происходят каждый час каждый день. Быстрый способ уменьшить шум в логах — перенести SSH на нестандартный порт. Внесите изменения в файл sshd_config с помощью параметра конфигурации Port.
С помощью iptables тоже можно легко блокировать попытки подключения к порту по достижении определённого порога. Простой способ сделать это — использовать OSSEC, поскольку он не только блокирует SSH, но выполняет кучу других мер по обнаружению вторжений на базе имени хоста (HIDS).
Завершение
Эти примеры, советы и команды ssh должны дать отправную точку; дополнительная информация о каждой из команд и возможностей доступна на справочных страницах (man ssh, man ssh_config, man sshd_config).