- Автоматическое подключение по ssh из скрипта
- Первая задача
- Вторая задача
- Третья задача
- SSH: Execute Remote Command or Script – Linux
- SSH: Execute Remote Command
- Examples
- SSH: Run Multiple Remote Commands
- Examples
- SSH: Run Bash Script on Remote Server
- Example
- 20 Replies to “SSH: Execute Remote Command or Script – Linux”
- Запуск команд или скрипта через SSH
- Запуск команд через SSH
- Запуск нескольких команд через SSH
- Практические примеры использования SSH
- SSH: Запуск Bash Скрипта
- Автовход с паролем и управление по ssh «в гостях» при помощи expect
- Немного истории и оффтопика
- Задача
- Варианты решения
- Решение через expect
- Заключение
- SSH в Linux
- Подключение по SSH
- Сгенерировать пару ключей
- Какой ключ куда?
- Передать ключ на удалённый хост
- ssh-copy-id
- Узнать версию OpenSSH в Linux
- Выполнить команду из скрипта на удалённом компьютере
- known_hosts
- Создать SSH туннель
- Демонстрация
- Список всех открытых SSH туннелей
- Закрыть все SSH туннели
- Запустить SSH в фоновом режиме
- SSH_MSG_USERAUTH_BANNER
- Конвертация сертификатов
Автоматическое подключение по ssh из скрипта
При первом подключении к серверу, нужно ответить «yes», что означает — мы доверяем этому серверу. Кроме того, при изменении ключа сервера, надо удалить старый ключ из файла known_hosts . Если аутентификация по ключу в силу каких-то причин невозможна, нужно как-то передать пароль ssh-клиенту. При подключении к серверу из shell-скрипта, нам нужно решить эти три задачи.
Первая задача
Для предотвращения атак «человек посередине» при подключении к серверу, ключ которого ещё не известен ssh-клиенту, будет показан «слепок ключа» (key fingerprint). Нам нужно сравнить этот слепок со слепком ключа сервера, который мы получили по надежному каналу связи. И только после этого ответить «yes» — мы доверяем этому серверу. Выглядит это примерно так:
При утвердительном ответе yes , ssh-клиент продолжит подключение, сохранив ключ сервера в файле
/.ssh/known_hosts . В противном случае подключение к серверу будет прервано. Чтобы это обойти, нужно добавить опцию StrictHostKeyChecking , которая отключает проверку и сразу добавляет ключ сервера в файл
Вторая задача
При попытке подключения после изменения ключа на удаленном сервере (это происходит при переустановке операционной системы или пакета openssh-server ), появляется сообщение с ошибкой:
В сообщении можно увидеть, что вторая строка файла
/.ssh/known_hosts содержит неправильный ключ. И подсказку, как удалить этот ключ (неправильную строку):
Неправильная строка теперь удалена, а исходный файл на всякий случай сохранён под именем known_hosts.old . Еще раз пробуем подключиться:
Но удаление записи в файле known_hosts требует ручного вмешательства, а нам нужно, чтобы подключение к серверу происходило из скрипта, без нашего участия. И здесь на помощь приходит еще одна опция — UserKnownHostsFile . Можно вообще не записывать ключ сервера в файл known_hosts , указав значение этой опции как /dev/null . Тогда и удалять неправильный ключ будет не нужно:
Третья задача
Теперь почти все хорошо, осталось еще решить вопрос с паролем. В этом нам поможет утилита sshpass :
Вот так можно передать пароль ssh-клиенту, чтобы он мог подключиться к серверу:
Также, пароль можно записать в файл, только не забыть выставить для него права:
Опции StrictHostKeyChecking и UserKnownHostsFile могут быть заданы постоянно в
/.ssh/config (для текущего пользователя) или в /etc/ssh/ssh_config (для всех пользователей).
Теперь подключаться к серверу 123.123.123.123 можно так:
Но тут надо учитывать, от имени какого пользователя будет запускаться скрипт. Например, если скрипт запускается от root , то и файл конфигурации должен быть размещен в /root/.ssh/config . Иначе нужно явно указать, где расположен файл с настройками ssh-клиента:
Источник
SSH: Execute Remote Command or Script – Linux
This is quite a common task for Linux system administrators, when it is needed to execute some command or a local Bash script from a one Linux workstation or a server on another remote Linux machine over SSH.
In this article you will find the examples of how to execute a remote command, multiple commands or a Bash script over SSH between remote Linux hosts and get back the output (result).
This information will be especially useful for ones, who want to create a Bash script that will be hosted locally on a one Linux machine but would be executed remotely on the other hosts over SSH.
Cool Tip: Connect to a remote SSH server without typing a password! Configure a passwordless authentication! Only 3 easy steps! Read more →
SSH: Execute Remote Command
Execute a remote command on a host over SSH:
Examples
Get the uptime of the remote server:
Reboot the remote server:
SSH: Run Multiple Remote Commands
Much more often it is required to send multiple commands on a remote server, for example, to collect some data for inventory and get back the result.
There are a lot of different ways of how it can be done, but i will show the most popular of them.
Run multiple command on a remote host over SSH:
Cool Tip: SSH login is too slow? This can be fixed easily! Get rid of delay during authentication! Read more →
Examples
Get the uptime and the disk usage:
Get the memory usage and the load average:
Show the kernel version, number of CPUs and the total RAM:
SSH: Run Bash Script on Remote Server
The idea is to connect to a remote Linux server over SSH, let the script do the required operations and return back to local, without need not to upload this script to a remote server.
Certainly this can be done and moreover quite easily.
Cool Tip: Want to ROCK? Start a GUI (graphical) application on a remote Linux workstation over SSH! Read more →
Example
Execute the local script.sh on the remote server:
20 Replies to “SSH: Execute Remote Command or Script – Linux”
Nice Post there..I was wondering what if want to execute the script with an argument.
Hi,
How about executing a command remotely and making sure that it will be killed once i kill my ssh session. or getting of PID of either SSH or the actual command on remote-node via a script.
Something like this I want to achieve:
Example: collecting pcap on remote addr and storing it locally.
I was unable to get the proper Pids in this case. Any reply would be helpful.
How to check remote server services which require sudo privilege?
How to check remote server services which require sudo privilege from local script file?
is what I use to send a bash script over the wire with sudo priviliges
How do create a scrip to run commands on multiple remote machines?
When the first one gets executed, the response returned to STOUT, and the next one is not executed until I ^C the previous command.
I tried using ‘exit’ command and ‘&’ , neither is working.
useless writing! Where it’s remote script executing example about sudo use?
Hello everyone,
I am new to linux and trying to learn it. I have task to complete “Get last 3 login details of list of linux machine with date and time.”
Is there any way to achive it?
Thanks in advance
Command $backdoor
$bash -0 $(wich bash)
Whoami..
#root
You should change these examples to use double quotes – I got tripped up putting variables in these single quotes and took me a while to realise bash treats it as a string…
como puedo hacer que solo me pida una vez la contraseña de mi servidor? hice mi escript y como realizo varias tareas me pide varias veces la contraseña
usa ssh-copy-id para copiar la llave
This was very helpful !
Thanks 🙂
Can someone help me write a shell script to shutdown a Ubuntu computer?
I’m going to have it run on a Mac, so that it will ssh into the Ubuntu and shut it down. I need it to open Application “Terminal” then ssh name@123.45.67.89, then give it the password.
Then I need it to issue command “sudo poweroff”, and give it the password again.
I know how to do this manually by opening Mac’s Terminal. I just type in “ssh name@123.456.78.9, it asks for the password, I type it in, and it’s connected. Then I just type in “sudo poweroff” and it asks for the password again, I type it in, and bam, it shuts down the Ubunt computer.
The problem is, I need to automate this to do it at a specific time of day. On the Mac, there is what is called “Automator”, and you can set up ICalendar Events to run an “Automator Workflow” with a Shell Script. I just don’t know how to write the Shell Script to do what I can do manually? Any help is appreciated greatly!
I solved this. Here’s what works:
tell application “Terminal”
activate
do script (“ssh test@192.168.1.10“)
delay 6
do script “password” in front window
delay 7
do script “sudo poweroff” in front window
delay 5
do script “password” in front window
end tell
Источник
Запуск команд или скрипта через SSH
Сегодня рассмотрим примеры для запуска команд или скрипта через SSH соединения. Научимся запускать наши команды/скрипты из одной рабочей станции Linux на другой удаленной Linux машине. Рассмотрим практические примеры использования мощного инструмента SSH в администрировании Linux.
Запуск команд через SSH
Если вы хотите удаленно запустить какую-либо команду на сервере через SSH, то нет ничего проще. Давайте рассмотрим пару примеров.
Узнайте аптайм удаленного сервера:
Узнать проходит ли пинг на удаленном сервере до google DNS:
Перезагрузить удаленную машину:
Запуск нескольких команд через SSH
В большинстве случаем недостаточно удаленно запустить только одну команду по SSH. Намного чаще необходимо отправить сразу несколько команд на удаленный сервер, например, для сбора информации и получить результат обратно.
Запустить несколько команд на удаленном хосте по SSH:
Практические примеры использования SSH
Узнайте аптайм и сколько свободного места на диске:
Сколько используется памяти и среднюю нагрузку:
Узнать версию ядра, количество ядер CPU и сколько всего RAM:
SSH: Запуск Bash Скрипта
Также бывает ситуация, когда на Linux сервере лежит какой-либо скрипт и его необходимо запустить по SSH на другом Linux сервере.
Основная идея заключается в том, чтобы подключиться на удаленный Linux сервер, дать скрипту выполнить свою работу и получить результат, при этом не копируя сам скрипт на удаленный сервер.
Эта задаче безусловно может быть выполнена и при этом довольно просто.
Что если вы хотите выполнить сценарий с аргументом.
Если требуются привилегии sudo, то команда примет вид:
- password — пароль для пользователя root на удаленной машине.
- script.sh — файл с вашим скриптом расположенный на станции с которой производите подключение.
Если есть вопросы, то пишем в комментариях.
Также можете вступить в Телеграм канал, ВК или подписаться на Twitter. Ссылки в шапки страницы.
Заранее всем спасибо.
Источник
Автовход с паролем и управление по ssh «в гостях» при помощи expect
В очередной раз используя этот скрипт в одном из учебных классов, я поискал материалы и обнаружил, что здесь давно не вспоминали об expect. Это замечательный альтернативный интерпретатор для командной строки Linux, который может общаться с ней вместо живого человека, и я добавлю сюда лишь ещё один пример его применения.
Картинок на эту тему особо нет, а в статье и вообще не будет, поэтому привлечём ваше внимание обложкой замечательной книги
Немного истории и оффтопика
В начале 2013го я вернулся в дополнительное образование детей, получил 24 часа еженедельной нагрузки для четырёх групп «юных программистов» и «юных системных администраторов», и приступил к набору учеников на двух площадках: моём собственном кабинете и кабинете информатики находящейся неподалёку гимназии. Силами групп «юных системных администраторов» мы привели свой кабинет в порядок, развернув AltLinux 6 и парочку альтернативных дистрибутивов. А в гимназии очень опытный «инженер компьютерного класса» давно вёл эксперименты с source-based, закончившиеся приходом Calculate Linux на все машины учителей и учебных классов. Респект ему)
Задача
Через пару месяцев занятий я увидел проблему. Дети отказывались уходить с занятий, любым способом стараясь задержаться подольше. Т.к. педагогические технологии — это не моё, а кружок у нас всё-таки технический, я убивал сторонние процессы и выключал машины по ssh. Это повысило интерес учеников к изучению возможностей командной строки. Однако скоро они нашли баг: выключение «руками» занимает слишком много времени, и даже в небольшом кабинете они успеют перезапустить половину машин до того, как я завершу карательный процесс, и это затянет дело. Чтобы продемонстрировать кто здесь главный лучшие возможности программирования для командной строки, я задумался об автоматизации.
Варианты решения
Нулевой мыслью было использование italc, и мы даже уделили несколько недель его настройке и экспериментам. Но он оказался слишком глючен и примитивен, поэтому был благополучно забыт.
Первой же мыслью было настроить доступ через ssh по отпечатку. Это сократило бы задачу до одного цикла, но для применения «на коленке» этот способ оказался не совсем пригоден (хотя почему нет? ЕМНИП, отпечаток для пользователя также можно создать без рута). Но при доступной авторизации по паролю (кстати, большой ущерб безопасности для учебных классов, где логин-пароли одинаковы) меня заинтересовал вариант с автоматической авторизацией по паролю. Уделив час поиску, я нашёл несколько примеров для expect.
Решение через expect
Перед началом
Но, во первых, он должен быть установлен. В моём классе мы без труда сделали это, а вот в классе гимназии ВНЕЗАПНО оказалось, что и expect, и nmap, и некоторые другие интересные системные утилиты не только установлены, но и доступны ученику. Это очень помогло нам, когда в очередной раз «упал» прикрученный по NFS сетевой диск, и мы нашли способ распространения заданий через быстро найденный бухгалтерский компьютер с расшаренными дисками.
Во вторых, кроме самого expect, нам понадобится использовать 2 типа цикла: с предусловием и с параметром. Первый необходим для «зацикливания» процесса, чтобы можно было повесить выполнение скрипта фоном на всё занятие. Второй же необходим для перебора необходимых адресов, на которые мы будем заходить по ssh при помощи собственно expect.
Также необходимо помнить, что стандартно скрипт выпадает при возникновении первой же ошибки, например неответе компьютера клиента, и наверное стоит поискать способ обработки таких исключений.
Скрипт
Сообщаем, что для выполнения нам необходимо использовать нестандартный интерпретатор
Задаём паузу для ожидания ответа с клиента, имя пользователя и пароль (это скорее по инерции из имеющихся в сети примеров):
Это был простой скрипт автоубивания ненужных процессов для гимназии. В своём же кабинете я модифицировал скрипт и для автовыключения машин:
Заключение
Надеюсь, упоминание замечательного интерпретатора expect и пара живых примеров по работе с ним будут полезны сообществу и породят немало статей о более тонких его применениях.
Источник
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 имеет следующий формат (записи идут через пробел) ( подробнее )
Примеры алгоритмов: 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—— в конец файла, но не всегда всё так просто.
Источник