Linux ssh ввести пароль

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

Для удаленного подключения к серверу есть много способов, но самый популярный и простой среди них это защищенный сетевой протокол SSH (Secure Shell) с помощью утилиты OpenSSH. По-умолчанию утилита дает доступ только к командной строке удаленного севера, но при желании можно запустить программы с графический интерфейсом прямо с сервера. Если вы хотите ознакомиться с полным списком команд утилиты, то это можно сделать здесь. В этой статье мы разберем как подключиться по SSH и самые основные команды, которые требуются чаще всего.

Проверка наличия утилиты и установка OpenSSH

Как правило, во многих дистрибутивах Linux утилита OpenSSH уже установлена по-умолчанию, но конечно же есть исключения. Для проверки наличия утилиты нужно ввести в терминал коротую команду:

И если вывод будет содержать возможные опции использования в примерно таком виде, значит OpenSSH установлен:

Если же вывод содержит сообщение, что команда не найдена, то нужно установить openssh-client .

Если у вас Debian или Ubuntu, то для установки введите:

Если у вас CentOS или Fedora, то введите

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

Обычное подключение по SSH без дополнительных опций выглядит очень просто. Достаточно ввести логин, IP сервера и пароль. Допустим хостинг-провайдер нам выдал следующие данные после покупки сервера:

  • IP-адрес сервера: 80.90.255.255
  • Логин: root
  • Пароль: xvFkWsIys

Исходя из этого мы формулируем команду в следующем виде ssh логин@IP-адрес:

Если подключение осуществляется впервые, то утилита задаст вопрос, стоит ли добавлять в список доверенных хостов. Соглашаемся, набрав yes и нажав Enter.

Далее утилита запросит пароль пользователя

Его можно ввести вручную или вставить из буфера обмена. При вводе пароля не будут появляться звездочки или какие-либо условные символы, это нормально. После ввода пароля вы попадаете в командную строку сервера, к которому подключались. Это значит, что теперь все введенные команды будут выполнятся именно на сервере.

Как отключиться от севера и прервать SSH сессию

Отключиться от сервера можно двумя простыми способами. Первый это ввести команду exit :

Также можно нажать комбинацию клавиш Ctrl + D, что также прервет SSH сессию и вернет нас туда, откуда мы подключались.

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

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

Генерация (создание) SSH-ключа

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

Чтобы создать ключ, нужно ввести команду ssh-keygen -f /папка/где/создать/ключ . В примере мы будем использовать самую распространенную папку для ключей, которая находится в домашней папке пользователя: /home/имя_пользователя/.ssh/название_ключа или ее укороченной версией

После ввода утилита попросит задать пароль для ключа. Здесь довольно важный момент. Можно вовсе не задавать пароль и просто нажать Enter. В таком случае подключение к серверу будет осуществляться только по ключу и без всякого ввода пароля.

Но в примере мы будем «параноиками» и зададим пароль на использование ключа. Придумаем именно отдельный пароль, не тот, что от пользователя сервера. Можно выбрать вариант проще, который возможно будет без труда запомнить и ввести вручную, например brandy-coin-13! . Его мы будем в будущем вводить каждый раз, как потребуется использовать ключ. И так, задаем…

Читайте также:  Windows 10 сменить пароль пользователя при входе

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

В выводе строка с текстом Your identification has been saved in говорит в какой именно папке сохранился ключ.

Добавление ключа в список доверенных на сервере

В предыдущем этапе мы только создали ключ. Пока он не подходит ни к одному серверу. Чтобы использовать его для входа на наш сервер, необходимо добавить его в список доверенных ключей на этом сервере. Звучит сложно, но на самом деле все обходится лишь одной командой, которая содержит путь до ключа, логин и IP-адрес сервера в своих опциях и имеет такой вид: ssh-copy-id -i /путь/до/ключа логин@IP-адрес .

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

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

Теперь можно подключаться к серверу, используя ключ. Для этого вводим команду, которая содержит логин, IP-адрес сервера и путь до ключа с опцией -i: ssh логин@IP-адрес -i /путь/до/ключа

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

Как ограничить подключение по паролю

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

Для выставления ограничений необходимо иметь права администратора, вы должны быть авторизованным под root или использовать sudo перед каждой командой. В примерах будет использоваться вариант без sudo , чтобы не было расхождений с предыдущими примерами.

Для начала зайдем на сервер по ключу:

Используя консольный текстовый редактор nano, откроем под root файл настроек OpenSSH:

После чего мы увидим содержимое файла настроек. Нам нужно найти строчку:

Убрать # в начале и заменить yes на no . То есть ее надо преобразить вот в такой вид:

Далее нажимаем сначала Ctrl + O , затем Enter, чтобы сохранить. И Ctrl + X, чтобы выйти.

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

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

И попробуем обратно подключиться к северу по паролю.

И видим, что сервер нас больше таким способом пускать не намерен. А теперь попробуем с помощью ключа.

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

Чтобы сервер был в безопасности, советую настроить на нем фаервол и добавить порт SSH в список доверенных.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

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 имеет следующий формат (записи идут через пробел)

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

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

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

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

Читайте также:  Мобильное приложение яндекс для windows

Основная команда 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 имеет следующий формат (записи идут через пробел) ( подробнее )

Примеры алгоритмов: 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 для удаленного хостов.

Читайте также:  Антивирус под mac os

То есть вы хотите, чтобы всё, что идёт на 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—— в конец файла, но не всегда всё так просто.

Источник

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