Linux список подключений по ssh

Как получить список всех пользователей, которые могут получить доступ к серверу через ssh?

Система -> Администрирование -> Источники программного обеспечения -> Обновления (вкладка) -> Проверить наличие обновлений: [Ежедневно | Каждые два дня | Еженедельно | Каждые две недели]

2 ответа

Мой ответ тянет от ответов до этого stackoverflow вопроса.

Список всех «пользователей»

Я ожидал, что будет способ, которым я мог просто сказать, показать мне всех пользователей, которые могут ssh на мой сервер.
То, что я не понял, — то, что нет различия между людьми-пользователями и системой — «пользователи», поэтому в то время как можно перечислить всех пользователей с этой командой, это, вероятно, намного длиннее, чем Вы были expecting/hoping-for:

Показ всех пользователей с допустимой оболочкой

Если пользователи окружают, установлен на /etc/false затем они не могут войти в систему, таким образом, это обрезает вниз список возможных пользователей SSH:

Но это — все еще довольно большой список.

У пользователей, которые имеют на самом деле, есть доступ

Если у пользователя нет действительного пароля, который мог бы быть признаком, что они не могут войти в систему.
/etc/shadow файл содержит зашифрованные пароли, a»!» или «*» в 2-м столбце этого файла означает, что никакой пароль не установлен. Мы можем фильтровать тех, которые для нового (вероятно, короче) списком пользователей, которые имеют действительный пароль:

(Примечание: та команда могла быть добита большего успеха — не стесняются обновлять мой ответ),

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

Ограничение доступа

Хорошо — поэтому теперь у меня есть несколько ограниченный список — и я хочу удалить доступ для нескольких учетных записей.
Ответ @Yaron описывает это более подробно (как делает это), но кратко; /etc/ssh/sshd_config файл говорит, какие учетные записи могут ssh, и если Вы устанавливаете AllowUsers там затем другие пользователи будут ограничены — таким образом, можно будет отредактировать тот файл, чтобы быть явными о том, кто Вы хотите позволить входить в систему:

И добавьте высказывание строки

Наконец перезапустите ssh сервис

(в зависимости от Вашей системы — посмотрите это для сервисного перезапуска в других системах),

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

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

Ubuntu ssh man page Укажите, что вы можете разрешить / запретить определенных пользователей / групп в sshd_config — OpenSSH SSH daemon configuration file — /etc/ssh/sshd_config

  • AllowUsers ] За этим ключевым словом может следовать список шаблонов имен пользователей, разделенных пробелами.
  • Если указано, вход в систему разрешен только для имен пользователей, которые соответствуют одному из шаблонов.
  • Допустимы только имена пользователей; числовой идентификатор пользователя не распознается.
  • По умолчанию вход в систему разрешен для всех пользователей.
  • Если шаблон принимает форму USER @ HOST, тогда USER и HOST проверяются отдельно, ограничивая входы в систему для определенных пользователей с определенных хостов.
  • Директивы allow / deny обрабатываются в следующем порядке: DenyUsers, AllowUsers, DenyGroups, и, наконец, AllowGroups

]

Чтобы найти список всех пользователей на сервере, выполните следующую команду на сервере:

Согласно обновленному вопросу, /etc/passwd не делает т несколько имен пользователей. Это может быть результатом того, что сервер является частью Network Information Service , LDAP или SAMBA.

Для просмотра всем пользователям & amp; группы, известные вашему серверу, из каких бы источников они ни приходили, вы бы предпочли использовать команду getent :

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

Источник

Как подключиться по SSH

SSH — это основной протокол для удаленного управления серверами на базе операционной системы Linux. Все действия при подключении к SSH выполняются в командной строке, но при достаточном уровне знаний и привилегий в системе там можно сделать практически все что угодно, в отличие от того же FTP где можно только передавать и редактировать файлы.

Читайте также:  Broadcom bluetooth для windows 10 64 bit

Если вы покупаете VPS сервер или продвинутый хостинг, обычно в письме вместе с другими данными авторизации есть данные доступа по SSH. В этой статье мы рассмотрим как подключиться по SSH к серверу из Linux или Windows.

Что такое SSH?

Поскольку эта статья рассчитана именно на новичков, то перед тем, как перейти дальше давайте подробнее разберемся что из себя представляет SSH. Исторически так сложилось что на большинстве серверов используется операционная система Linux, во многом этому посодействовала ее бесплатность. Графический интерфейс на серверах Linux не используется для экономии ресурсов, поэтому единственным способом администрирования сервера остается командная строка.

Но это не является недостатком, потому что в командной строке Linux можно сделать больше чем графическом интерфейсе. Протокол SSH позволяет вам выполнять команды в удаленной системе так, как будто вы это делаете в своей системе. Вам доступен буфер обмена, вы вводите команды и можете использовать их вывод. Недоступны разве что файлы из вашей файловой системы. Например, когда вы подключитесь к серверу по SSH из Ubuntu, то все будет выглядеть так, как будто вы открыли терминал в своей системе.

Как подключиться по SSH

Для подключения по SSH нам необходимо знать такие данные:

  • ip адрес сервера, к которому мы собираемся подключится;
  • порт, на котором ожидает подключения SSH сервер, по умолчанию используется 22, но в целях безопасности порт подключения ssh часто изменяют;
  • имя и пароль пользователя на удаленном сервере.

Больше ничего не нужно, обычно эти данные присылают в письме вместе с описанием VPS. Теперь перейдем к практике.

1. Подключение через SSH в Linux

В Linux подключение по SSH выполняется с помощью утилиты ssh. Мы более подробно рассматривали работу с ней в статье как пользоваться ssh. Для подключения к удаленному компьютеру ее синтаксис будет выглядеть следующим образом:

$ ssh имя_пользователя @ айпи_адрес

Это самый простой вариант, если вам также нужно задать порт, используйте опцию -p:

$ ssh имя_пользователя @ айпи_адрес -p порт

Чтобы выполнить подключение по SSH Linux нажмите Ctrl+Alt+T для открытия терминала и наберите команду, заменив нужные значения:

Или, с нестандартным портом:

ssh sergiy@192.168.1.2 -p 2223

Если ip_адрес и порт правильные, то на следующем шаге программа попросит у вас ввести пароль:

Если пытаетесь подключится через SSH к этому серверу первый раз, то утилита также попросит подтвердить добавление нового устройства в свой список известных устройств, здесь нужно набрать yes и нажать Enter:

Теперь вы подключены, и все вводимые далее команды будут выполнены на удаленном сервере:

Если же произошла ошибка и IP адрес или порт введены неверно, то вы получите ошибку Connection Refused:

Просто убедитесь что порт введен верно. Если это ваш сервер, то, возможно на нем еще нужно разрешить подключение SSH в брандмауэре. В Ubuntu/Debian для этого на удаленном сервере выполните:

sudo ufw allow 22/tcp

А в CentOS/Fedora:

firewall-cmd —permanent —zone=public —add-port=22/tcp

Если вы используете другой порт для SSH, то замените 22 на свой порт. Для удобства подключения по SSH в дальнейшем можно настроить авторизацию по ключу ssh, чтобы не вводить каждый раз пароль.

Теперь вы знаете как подключиться по ssh linux и решить проблемы с подключением. А теперь перейдем к Windows.

2. Подключение через SSH в Windows

Раньше подключение по SSH из Windows выполнялось только с помощью сторонних утилит, например PuTTY. Но в Windows 10 был добавлен встроенный OpenSSH клиент и работает он точно так же, как и в Linux. По умолчанию этот компонент не активирован. Для его установки откройте Параметры -> Приложения:

Затем выберите Управление дополнительными компонентами:

Здесь нажмите добавить новый компонент и в открывлемся меню выберите OpenSSH Client и нажмите Устанвоить:

Дальше вернитесь назад и дождитесь завершения установки. После того, как SSH клиент будет установлен нужно обязательно перезагрузить компьютер.

После перезагрузки нажмите Win+R чтобы открыть окно запуска команд и наберите в нем cmd:

Далее нажмите Enter. Перед вами откроется командная строка Windows. Здесь можно использовать утилиту ssh. Синтаксис у нее абсолютно такой же, как и для Linux:

ssh имя_пользователя @ айпи_адрес -p порт

Например, такой командой можно подключится по SSH к Raspberry Pi, который находится в вашей локальной сети по адресу 192.168.1.5:

Читайте также:  Что устанавливает mac os x

Утилита предложит добавить устройство в список известных:

Затем предложит ввести пароль:

Все следующие команды будут выполняться уже на Raspberry Pi или другой удаленной машине, к которой вы подключились.

Теперь подключиться к серверу по ssh из этой операционной системы также просто как и из Linux.

Выводы

В этой статье мы рассмотрели как выполняется подключение к серверу по SSH из Linux или Windows. Как видите, это очень просто. А дальше, для работы с удаленным сервером вам понадобятся команды терминала Linux.

Источник

SSH в Linux

Подключение по SSH

Подключение происходит с помощью команды ssh + имя_пользователя + хост

Если вы подключаетесь к хосту впервые, появится предупреждение

The authenticity of host ‘192.168.56.101 (192.168.56.101)’ can’t be established. ECDSA key fingerprint is SHA256:db8az/qbrWOJWvNRv2d9UHaDBnnUHanJ9Svca9vFx7c. Are you sure you want to continue connecting (yes/no/[fingerprint])?

Если выбрать yes то в файл

/.ssh/known_hosts добавится похожая строка:

|1| abcdef+abcdefghijklmnopqrst=|abcdefghijklmnopqrstuvwxyz1= ssh-rsa abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrst/abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz12345/abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzB1234567

Обычно файл known_hosts имеет следующий формат (записи идут через пробел)

Это хэш от имени сервера.

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

Сгенерировать пару ключей

Первый шаг — это генерация пары ключей. Обычно это делается на клиентской машине. Например, на вашем ноутбуке.

Основная команда 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: +—[RSA 4096]—-+ |=o oo++ | |= oo o. = o | |+ | |Oo=o . . | |B+.o S . | |+o.o | |+.0. . | |o+= . E | |+=oo. . . | +—-[SHA256]——+

Ключи готовы. Я сохранил их в текущую директорию поэтому увижу их сделав ls

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

Какой ключ куда?

.pub ключ отправляйте на удалённую машину

приватный ключ храните на своём клиенте

Передать ключ на удалённый хост

После того, как ключи созданы нужно передать .pub ключ на удалённый хост.

Сделать это можно несколькими способами начнём с утилиты ssh-copy-id

ssh-copy-id

Я предпочитаю использовать с флагом -i и задавать путь до нужного ключа

sudo ssh-copy-id -i

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: «/home/andrei/.ssh/andrei-key.pub» The authenticity of host ‘192.168.0.2 (192.168.0.2)’ can’t be established. ECDSA key fingerprint is SHA256:abcdefgh1234567890abcdefgh1234567890abc+def. Are you sure you want to continue connecting (yes/no/[fingerprint])?

Are you sure you want to continue connecting (yes/no/[fingerprint])? yes /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 andrei@192.168.0.2’s password:

Number of key(s) added: 1 Now try logging into the machine, with: «ssh ‘andrei@192.168.0.2′» and check to make sure that only the key(s) you wanted were added.

Теперь на хосте 192.168.0.2 в файле /home/andrei/.ssh/authorized_keys появилась новая запись вида

ssh-rsa AAAAB3NzaC1y … lseP/jXcq … Uydr/2CwQ &hellip ++TpY19pHqD/AnhL … Az62T/Ipyx … 8U2T andrei@host.andrei.com

Знак … заменяет длинные последовательности случайных символов для экономии места.

Проверить ключ можно командой

Если вы не задавали пароль для ключа, то попадёте на удалённый хост без лишних движений

Last login: Sun Jan 10 16:48:27 2021 from 192.168.0.1

Узнать версию OpenSSH в Linux

Чтобы узнать версию OpenSSH в вашем дистрибутиве Linux выполните

OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017

Выполнить команду из скрипта на удалённом компьютере

Если подключение по ssh происходим из bash-скрипта , и при этом нужно ещё выполнить ряд команд после подключения — достаточно перечислить эти команды через точку с запятой

#!/bin/bash ssh andrei@192.168.0.2 «ls;cd /home/andrei/bash_scripts;ls;ip a;cal»

Если нужно выполнить команду, требующую sudo попробуйте флаг -t

#!/bin/bash ssh -t andrei@192.168.0.2 «sudo apt upgrade»

known_hosts

Список известных хостов находится в файле known_hosts

Обычно файл known_hosts имеет следующий формат (записи идут через пробел) ( подробнее )

Читайте также:  Xwindows dock для windows

Примеры алгоритмов: ssh-rsa, ssh-dss, ssh-ed25519, ecdsa-sha2-nistp256

|1| abcdef+abcdefghijklmnopqrst=|abcdefghijklmnopqrstuvwxyz1= ssh-rsa abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrst/abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz12345/abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzB1234567

Это хэш от имени сервера.

Это алгоритм шифрования

Это публичный ключ хоста

Создать SSH туннель

Туннели обычно создают для перенаправления траффика. SSH tunnel это то же самое что и SSH port forwarding.

Допустим вы хотите направить траффик со своего localhost (127.0.0.1) на удалённый хост 192.168.0.2 .

На удалённом хосте у вас есть пользователь с именем andrei и вы знаете его пароль.

Сперва нужно определиться с портами на локальном хосте и на удалённом.

Предположим, вы выбрали 9119 для локального и 9200 для удаленного хостов.

То есть вы хотите, чтобы всё, что идёт на localhost:9119 было перенаправлено на 192.168.0.2 : 9200

ssh -L 9119: 192.168.0.2 : 9200 andrei@192.168.0.2

The authenticity of host ‘192.168.0.2 (192.168.0.2)’ can’t be established.
ECDA …

andrei@192.168.0.2’s password:
Last login: Sun Jan 31 13:23:00 2021

Проверьте ip выполнив

Если вам нужен туннель с поддержкой графического интерфейса X Window System используйте флаг -X

ssh -X -L 9119: 192.168.0.2 : 9200 andrei@192.168.0.2

Демонстрация

Туннель создан, не закрывайте терминал. Откройте два новых терминала или две новые вкладки в старом.

У вас два пустых терминала, оба на локальном хосте. Назовём их 1 и 2.

Из терминала 2 подключимся к удалённому хосту 192.168.0.2 по ssh и будем слушать на порту 9200 с помощью nmap

ssh andrei@192.168.0.2
nmap -l 9200

На терминале 1 с помощью nmap отправим сообщение на порт 9119 локального хоста. Это тот порт, который мы настроили на проброс.

nmap localhost 9119

Введём любой текст

Откройте терминал 2 там дожен появиться тот же текст

Список всех открытых SSH туннелей

Чтобы получить список туннелей открытых именно ssh выполните

sudo lsof -i -n | egrep ‘\ ‘

ssh 14695 andrei 3u IPv4 230080 0t0 TCP 192.168.0.1:46356->192.168.0.2:ssh (ESTABLISHED) ssh 14695 andrei 4u IPv6 230103 0t0 TCP [::1]:9119 (LISTEN) ssh 14695 andrei 5u IPv4 230104 0t0 TCP 127.0.0.1:9119 (LISTEN)

Вывод этой команды при практически идентичных условиях почему-то разный.

Ниже пример второго варианта. Если вы знаете почему так получается — напишите в комментариях.

ssh 15151 andrei 3u IPv4 239364 0t0 TCP 192.168.0.1:46464->192.168.0.2:ssh (ESTABLISHED) ssh 15151 andrei 4u IPv6 239380 0t0 TCP [::1]:mxit (LISTEN) ssh 15151 andrei 5u IPv4 239381 0t0 TCP 127.0.0.1:mxit (LISTEN) ssh 15151 andrei 9u IPv6 239428 0t0 TCP [::1]:mxit->[::1]:54306 (ESTABLISHED)

Закрыть все SSH туннели

Чтобы закрыть всё, что связано с ssh можно выполнить

sudo killall ssh sshd

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

Запустить 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, а в самом конце поставить &

SSH_MSG_USERAUTH_BANNER

Клиенту, подключившемуся к ssh серверу можно показать баннер SSH_MSG_USERAUTH_BANNER

sudo vi /etc/issue.net

И отредактируйте файл добавив свой баннер

Откройте sshd_config и укажите путь до баннера

sudo vi /etc/ssh/sshd_config
/banner

# no default banner path #Banner none

Этот баннер будет показан ДО авторизации, то есть во время ввода пароля

Чтобы создать баннер, который будет показан после успешного входа выполните

sudo vi /etc/motd

После редактирования файлов перезапустите sshd

sudo systemctl restart sshd.service

Конвертация сертификатов

Рассмотрим простой пример: вы достали из базы данных сертификат MIIC4jCCAc … A7A6Rpt8V9Q== , но он не отформатирован и не проходит валидацию

Сертификат, конечно, длиннее, я поставил троеточие для экономии места и вашего времени.

echo ‘MIIC4jC … 7A6Rpt8V9Q==’ | base64 -d | openssl x509 -inform der

Либо, если вам нужно работать с файлами — сохраните исходный сертифика в фай raw_cert

echo MIIC4jC … 7A6Rpt8V9Q== > raw_cert
cat raw_cert | base64 -d | openssl x509 -inform der > cert
cat cert

——BEGIN CERTIFICATE——
MIIC4jC … 7A6Rpt8V9Q==
——END CERTIFICATE——

Такого же результата можно было добиться аккуратно добавив ——BEGIN CERTIFICATE—— в начало и ——END CERTIFICATE—— в конец файла, но не всегда всё так просто.

Источник

Оцените статью