Новости:

SMF - Just Installed!

Главное меню

Последние сообщения

#91
Сетевое оборудование / Проброс портов ASA
Последний ответ от George - Апр. 09, 2023, 12:11
Код: bash
object network Internal_RDP_Server-1
Код: bash
 host 192.168.1.1
Код: bash
 nat (inside,outside) static interface service tcp 3389 -входящий порт-
Код: bash
 object network Internal_RDP_Server-2
Код: bash
 host 192.168.1.2
Код: bash
 nat (inside,outside) static interface service tcp 3389 -входящий порт-
Код: bash
 access-list inbound permit tcp any object Internal_RDP_Server-1 eq 3389
Код: bash
 access-list inbound permit tcp any object Internal_RDP_Server-2 eq 3389

Код: bash
 access-group inbound in interface outside 
#92
Upgrading VMware to ESXi 6.5 on HP G7 Servers will crash and cause you to scream and will require you to waste your time building a custom ISO that HPE could have easily done.
Best practice is to use the vendor's custom ISO's that have the hardware drivers integrated, so I used HPE's latest Custom ISO.

HPE G7 Server support is being dropped by both HPE and VMware. In fact, vSphere 6.5 is supposedly the last version that will support the G7s. Knowing this info, I assumed upgrading from ESXi 6.0 to 6.5 on G7 would work, but I found out quickly that after the upgrade the hosts would "Purple Screen of Death" (PSOD) right after boot.

The Error: "PF Exception 14 in world 67667:sfcb-smx IP 0x0 addr 0x0″


The Issue: There are incompatible driver(s) in the customized ISO from HPE. Yes, there are more than one driver with issues.

The Workarounds: There are various workarounds that I have personally found to work, while others have been resolutions I have read about after I dealt with this, so I was not able to verify that they do indeed work, but I will list them nevertheless. Upgrading the firmware, BIOS, etc did not resolve the issue.
Note: All these workaround require a fresh install of ESXi. Running an Upgrade does not remove the incompatible drivers, and the host doesn't stay alive long enough before crashing to manually remove them via SSH.

Solution 1: Use VMware's Standard ISO Media
While this goes against many best practices, VMware doesnt offer too many vendor drivers in their ISO builds, so the offending drivers do not get installed and crash the system. While you can certainly use this method, you will want to follow-up and manually install the appropriate driver VIBs from HPE.

Solution 2: Build your own Custom ISO
This takes a bit more work, but is probably the most comprehensive path to resolution. You will basically need to remove drivers from the HPE Customized 6.5 ISO and inject those from the 6.0 ISO. The following are instructions on doing this.

Create Custom VMware ESXi Media
Prerequisites:
Download and install vSphere PowerCLI if you don't already have it.
Download HPE 6.5:  HPE Custom Image for VMware ESXi 6.5b Offline Bundle
VMware-ESXi-6.5.0-OS-Release-5146846-HPE-650.9.6.5.27-May2017-depot.zip
Download 6.0: HPE Custom Image for VMware ESXi 6.0 U3 Offline Bundle
VMware-ESXi-6.0.0-Update3-5050593-HPE-600.9.7.0.17-Feb2017-depot.zip
I renamed each .Zip file to "HPE-6_5.zip" and "HPE-6_0.zip" respectively to make things easier
Instructions:
Launch vSphere PowerCLI


Add the HP ESXi 6.5 image bundle
Код: bash
Add-EsxSoftwareDepot -DepotUrl C:\ESXi\HPE-6_5.zip


Check the Profile
Код: bash
Get-EsxImageProfile


Copy the Profile
Код: bash
New-EsxImageProfile -CloneProfile HPE-ESXi-6.5.0-OS-Release-6* -Name "G7-ESXi"

Use "HPE Custom" for Vendor

Check the Profile
Код: bash
Get-EsxImageProfile


Remove the driver from the image
Код: bash
Remove-EsxSoftwarePackage G7-ESXi hpe-smx-provider


Add the HP ESXi 6.0 image bundle
Код: bash
Add-EsxSoftwareDepot -DepotUrl C:\ESXi\HPE-6_0.zip

Check the Profile
Код: bash
Get-EsxImageProfile


View both drivers in the two bundles
Код: bash
Get-EsxSoftwarePackage | findstr smx
Add the necessary driver into the custom build
Код: bash
add-esxsoftwarepackage -imageprofile G7-ESXi -softwarepackage "hpe-smx-provider 600.03.11.00.9-2768847"


Convert your custom bundle to ISO
Код: bash
Export-EsxImageProfile -ImageProfile G7-ESXi -ExportToIso -filepath "C:\ESXi\G7-ESXi.iso"


Now take that ISO file that was created and use it to do a FRESH INSTALL. (Remember, upgrade will not work).

Оригинал:
https://www.virtualmvp.com/hpe-proliant-g7-servers-and-vsphere-6-5-purple-screen-of-death/
#93
mysql (Mariadb) / How to install MariaDB Databas...
Последний ответ от George - Март 30, 2023, 01:52
Update CentOS 8 Software Packages:
Connect to mariadb-01.centlinux.com as root user by using a ssh tool.

It is a best practice to always update the Linux software packages before installing anything new.

#
Код: bash
dnf update -y
Last metadata expiration check: 0:02:32 ago on Fri 29 May 2020 01:43:09 PM PKT.
Dependencies resolved.
Nothing to do.
Complete!
Our Linux machine is already up-to-date.

 

Install MariaDB Yum Repository in CentOS 8:
MariaDB Server 10.5.3 is the latest release therefore it is not available in CentOS 8 yum repositories.

MariaDB provides an official yum repository, that we can use to install MariaDB Server 10.5 on CentOS 8.

Create a yum repository file as follows.

#
Код: bash
vi /etc/yum.repos.d/MariaDB.repo
Add following directives in this file.

Код: bash
# MariaDB 10.5 CentOS repository list - created 2020-05-29 08:37 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos8-amd64
module_hotfixes=1
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
Build cache for MariaDB yum repository.

#
Код: bash
dnf makecache
CentOS-8 - AppStream                            7.8 kB/s | 4.3 kB     00:00
CentOS-8 - Base                                 292  B/s | 3.9 kB     00:13
CentOS-8 - Extras                               3.7 kB/s | 1.5 kB     00:00
MariaDB                                         164 kB/s | 512 kB     00:03
Metadata cache created.
 

Install MariaDB Server 10.5 on CentOS 8:
We have added the MariaDB yum repository, now we can easily install MariaDB Server using dnf command.

#
Код: bash
dnf install -y MariaDB-server
...
Two all-privilege accounts were created.
One is root@localhost, it has no password, but you need to
be system 'root' user to connect. Use, for example, sudo mysql
The second is mysql@localhost, it has no password either, but
you need to be the system 'mysql' user to connect.
After connecting you can set the password, if you would need to be
able to connect as any of these users with a password and without sudo

See the MariaDB Knowledgebase at https://mariadb.com/kb or the
MySQL manual for more instructions.

Please report any problems at https://mariadb.org/jira

The latest information about MariaDB is available at https://mariadb.org/.
You can find additional information about the MySQL part at:
https://dev.mysql.com
Consider joining MariaDB's strong and vibrant community:
https://mariadb.org/get-involved/
...
  MariaDB-shared-10.5.3-1.el8.x86_64
  galera-4-26.4.4-1.rhel8.0.el8.x86_64

Complete!
Enable and start MariaDB service.

#
Код: bash
systemctl enable --now mariadb.service
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service â /usr/lib/systemd/system/mariadb.service.
Verify the status for MariaDB service.

#
Код: bash
systemctl status mariadb.service
â mariadb.service - MariaDB 10.5.3 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor pre>
  Drop-In: /etc/systemd/system/mariadb.service.d
           ââmigrated-from-my.cnf-settings.conf
   Active: active (running) since Fri 2020-05-29 13:59:04 PKT; 12s ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
  Process: 12496 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_ST>
  Process: 12475 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && V>
  Process: 12473 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_STA>
 Main PID: 12485 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 11 (limit: 5916)
   Memory: 75.8M
   CGroup: /system.slice/mariadb.service
           ââ12485 /usr/sbin/mysqld

May 29 13:59:04 mariadb-01.centlinux.com mysqld[12485]: 2020-05-29 13:59:04 0 [>
May 29 13:59:04 mariadb-01.centlinux.com mysqld[12485]: 2020-05-29 13:59:04 0 [>
As mentioned in the installation output,

Linux root user can connect to MariaDB server as MariaDB root user without any password
Linux mysql user can connect to MariaDB server as MariaDB mysql user without any password
Also no other Linux user is allowed to login as MariaDB root or mysql users.

To allow the other Linux users to login as root or mysql user we need to set the password for these database users.

Connect with MariaDB server by using new mariadb command.

#
Код: bash
mariadb -u root
ЦитироватьWelcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 10.5.3-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>
Set strong passwords for root and mysql users.

MariaDB [(none)]> alter user 'root'@'localhost' identified by 'Ahmer@1234';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> alter user 'mysql'@'localhost' identified by 'Ahmer@1234';
Query OK, 0 rows affected (0.001 sec)
Reload the privileges tables.

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.001 sec)
List available databases in MariaDB server.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.001 sec)
Exit from MariaDB Shell.

MariaDB [(none)]> exit
Bye
Our MariaDB Server 10.5 has been installed successfully.

 

Configure Database Security for MariaDB Server:
We can optionally remove the test databases and restrict the remote logins by root user.

For this purpose, we can use new mariadb-secure-installation command.

# mariadb-secure-installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n
 ... skipping.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] n
 ... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
We have successfully installed and configured MariaDB Server 10.5 on CentOS 8.
#94
Водите
login: root
password: zabbix
Смотрим список доступных локалей в системе CENTOS 8.
# localectl list-locales
Потом активную locale:
# localectl
   System Locale: LANG=en_US.UTF-8
       VC Keymap: us
      X11 Layout: us
Добавляем русский язык командой:
# dnf install glibc-langpack-ru
Соглашаемся с установкой пакета.
После этого надо перезапустить сервер на CENTOS 8.
# reboot
После этого смотрите, что получилось:
# localectl
   System Locale: LANG=ru_RU.utf8
       VC Keymap: ru
      X11 Layout: ru
Мы установили и активировали русский язык в ZABBIX 5.2.2 на CENTOS 8.
После снова переходим в профиль настройки ZABBIX  и наблюдаем при раскрытии настройки Language успешно установленную в систему локаль русского (Russian (ru_RU))

Выбираем Russian (ru_RU) и нажимаем Update (для принятия изменений), изменения о смене языка интерфейса применяться сразу же, в результате интерфейс управления ZABBIX изменится на русский
#95
Настройки *nix (почта, web, система etc) / TAIL команда
Последний ответ от George - Фев. 21, 2023, 02:58
Все знают о команде cat, которая используется для просмотра содержимого файлов. Но в некоторых случаях вам не нужно смотреть весь файл, иногда достаточно посмотреть только то, что находится в конце файла. Например, когда вы хотите посмотреть содержимое лог файла, то вам не нужно то, с чего он начинается, вам будет достаточно последних сообщений об ошибках.


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

Содержание статьи:

Команда tail в Linux
Использование tail
Выводы
Команда tail в Linux
Перед тем как мы будем рассматривать примеры tail linux, давайте разберем ее синтаксис и опции. А синтаксис очень прост:

$ tail опции файл

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

-c - выводить указанное количество байт с конца файла;
-f - обновлять информацию по мере появления новых строк в файле;
-n - выводить указанное количество строк из конца файла;
--pid - используется с опцией -f, позволяет завершить работу утилиты, когда завершится указанный процесс;
-q - не выводить имена файлов;
--retry - повторять попытки открыть файл, если он недоступен;
-v - выводить подробную информацию о файле;
В качестве значения параметра -c можно использовать число с приставкой b, kB, K, MB, M, GB, G T, P, E, Z, Y. Еще есть одно замечание по поводу имен файлов. По умолчанию утилита не отслеживает изменение имен, но вы можете указать что нужно отслеживать файл по дескриптору, подробнее в примерах.

Использование tail
Теперь, когда вы знаете основные опции, рассмотрим приемы работы с утилитой. Самый простой пример - выводим последние десять строк файла:

 
Код: bash
tail /var/log/syslog



 

Если вам недостаточно 10 строк и нужно намного больше, то вы можете увеличить этот параметр с помощью опции -n:

 
Код: bash
tail -n 100 /var/log/syslog



Когда вы хотите отслеживать появление новых строк в файле, добавьте опцию -f:


 
Код: bash
tail -f /var/log/syslog



Вы можете открыть несколько файлов одновременно, просто перечислив их в параметрах:

Код: bash
 tail /var/log/syslog /var/log/Xorg.0.log



С помощью опции -s вы можете задать частоту обновления файла. По умолчанию данные обновляются раз в секунду, но вы можете настроить, например, обновление раз в пять секунд:

Код: bash
 tail -f -s 5 /var/log/syslog



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

Код: bash
 tail -q var/log/syslog /var/log/Xorg.0.log



Если вас интересует не число строк, а именно число байт, то вы можете их указать с помощью опции -c:

Код: bash
 tail -c 500 /var/log/syslog



Для удобства, вы можете выбирать не все строки, а отфильтровать интересующие вас:

Код: bash
 tail -f /var/log/syslog | grep err


Особенно, это полезно при анализе логов веб сервера или поиске ошибок в реальном времени. Если файл не открывается, вы можете использовать опцию retry чтобы повторять попытки:

Код: bash
 tail -f --retry /var/log/syslog | grep err

Как я говорил в начале статьи, по умолчанию опция -f или --follow отслеживает файл по его имени, но вы можете включить режим отслеживания по дескриптору файла, тогда даже если имя измениться, вы будете получать всю информацию:

Код: bash
 tail --follow=descriptor /var/log/syslog | grep err


Выводы
В этой статье была рассмотрена команда tail linux. С помощью нее очень удобно анализировать логи различных служб, а также искать в них ошибки. Надеюсь, эта информация была полезной для вас.
#96
Когда пишешь даже минимальный скриптик, часто используешь echo — подсказки.
Согласитесь "цветной man" ведь намного приятнее читать, так почему бы не раскрасить вывод echo?
это достаточно легко.
Итак...

Задача:
Раскрасить текстовую строку выводимую на экран через команду echo
т.е. раскрасить эти самые подсказки

Что нужно:
1) man echo
www.opennet.ru/man.shtml?topic=echo&category=1

Из него нам пригодится точно

Цитироватьecho -e   # ключ -e в комманде echo включает отображение "backslash escapes"; например \n - переход на следующую строку, \t -табуляция
echo -n   # ключ -n в команде echo сигнализирует, что после вывода информации не нужно переходить на следующую строку.
echo -en   # в нашем случае поможет раскрасить вывод текста.



2) Хорошая статья с примерами «Управление консолью Linux» RUS
c-reaction.net/content/204

Хорошая статья с примерами «Colorizing Scripts» ENG
www.faqs.org/docs/abs/HTML/colorizing.html

Поехали:

Для начала одним глазом хотябы посмотрим на man echo rus, а потом рассмотрим как использовать цвет
www.opennet.ru/man.shtml?topic=echo&category=1

Переходим к Управлению цветом:

Цитироватьtput sgr0    Возврат цвета в "нормальное" состояние

\033[0m    все атрибуты по умолчанию
\033[1m    жирный шрифт (интенсивный цвет)
\033[2m    полу яркий цвет (тёмно-серый, независимо от цвета)
\033[4m    подчеркивание
\033[5m    мигающий
\033[7m    реверсия (знаки приобретают цвет фона, а фон -- цвет знаков)

\033[22m    установить нормальную интенсивность
\033[24m    отменить подчеркивание
\033[25m    отменить мигание
\033[27m    отменить реверсию

\033[30    чёрный цвет знаков
\033[31    красный цвет знаков
\033[32    зелёный цвет знаков
\033[33    желтый цвет знаков
\033[34    синий цвет знаков
\033[35    фиолетовый цвет знаков
\033[36    цвет морской волны знаков
\033[37    серый цвет знаков

\033[40    чёрный цвет фона
\033[41    красный цвет фона
\033[42    зелёный цвет фона
\033[43    желтый цвет фона
\033[44    синий цвет фона
\033[45    фиолетовый цвет фона
\033[46    цвет морской волны фона
\033[47    серый цвет фона


Таблица цветов и фонов:
Цвет        код       код фона

Цитироватьblack        30  40    \033[30m  \033[40m
red        31  41    \033[31m  \033[41m
green      32  42    \033[32m  \033[42m
yellow      33  43    \033[33m  \033[43m
blue        34  44    \033[34m  \033[44m
magenta      35  45    \033[35m  \033[45m
cyan        36  46    \033[36m  \033[46m
grey        37  47    \033[37m  \033[47m


Допускается объединение этих управляющих последовательностей.
Например \033[1m\033[5m\033[36m может быть заменено эквивалентной последовательностью \033[1;5;36m.

Пример:
Код: bash
#!/bin/sh
#
# скрипт выводит на экран сообщение с использованием цвета
#
echo -en "\033[37;1;41m Внимание \033[0m"



Еще пример:
Код: bash
#!/bin/sh
#
# скрипт запускает копию командного интерпретатора sh
# с цветным приглашением
#
export PS1="\[\033[1;30m\][\[\033[0m\]\t\[\033[1;30m\];\
\[\033[0m\]\W\[\033[1;30m\]]\[\033[36;1m\]|\[\033[0m\] "
echo "Now runing a new copy of shell width color prompt"
echo -en "use \033[1;36mexit\033[0m command or"
echo -e "\033[1;36m^D\033[0m to return back"
sh
#
# обратите внимание на то, что управляющие последовательности
# заключены в скобки "\[" и "\]"
# Это сделано для того, чтобы shell не учитывал их при
# оценке длины строки.
# В противном случае длинные строки будут переноситься неверно.
#



Для удобства пользвания можно цвет и доп. свойства назначить переменным:
Код: bash
RED='\033[0;31m'         #  ${RED}
GREEN='\033[0;32m'      #  ${GREEN}



Файл .sh должен быть в формате UNIX и с кодировкой UTF-8

Ну и напоследок — один хороший пример со всеми плюшками:
Код: bash
#!/bin/sh
# echo подсветка
# echo color
# Скрипт выводит на экран список меню

clear    # Очистка экрана

#Памятка, Таблица цветов и фонов
#Цвет           код       код фона

#black    30  40    \033[30m  \033[40m
#red      31  41    \033[31m  \033[41m
#green    32  42    \033[32m  \033[42m
#yellow    33  43    \033[33m  \033[43m
#blue    34  44    \033[34m  \033[44m
#magenta    35  45    \033[35m  \033[45m
#cyan    36  46    \033[36m  \033[46m
#white    37  47    \033[37m  \033[47m

# Дополнительные свойства для текта:
BOLD='\033[1m'       #  ${BOLD}      # жирный шрифт (интенсивный цвет)
DBOLD='\033[2m'      #  ${DBOLD}    # полу яркий цвет (тёмно-серый, независимо от цвета)
NBOLD='\033[22m'      #  ${NBOLD}    # установить нормальную интенсивность
UNDERLINE='\033[4m'     #  ${UNDERLINE}  # подчеркивание
NUNDERLINE='\033[4m'     #  ${NUNDERLINE}  # отменить подчеркивание
BLINK='\033[5m'       #  ${BLINK}    # мигающий
NBLINK='\033[5m'       #  ${NBLINK}    # отменить мигание
INVERSE='\033[7m'     #  ${INVERSE}    # реверсия (знаки приобретают цвет фона, а фон -- цвет знаков)
NINVERSE='\033[7m'     #  ${NINVERSE}    # отменить реверсию
BREAK='\033[m'       #  ${BREAK}    # все атрибуты по умолчанию
NORMAL='\033[0m'      #  ${NORMAL}    # все атрибуты по умолчанию

# Цвет текста:
BLACK='\033[0;30m'     #  ${BLACK}    # чёрный цвет знаков
RED='\033[0;31m'       #  ${RED}      # красный цвет знаков
GREEN='\033[0;32m'     #  ${GREEN}    # зелёный цвет знаков
YELLOW='\033[0;33m'     #  ${YELLOW}    # желтый цвет знаков
BLUE='\033[0;34m'       #  ${BLUE}      # синий цвет знаков
MAGENTA='\033[0;35m'     #  ${MAGENTA}    # фиолетовый цвет знаков
CYAN='\033[0;36m'       #  ${CYAN}      # цвет морской волны знаков
GRAY='\033[0;37m'       #  ${GRAY}      # серый цвет знаков

# Цветом текста (жирным) (bold) :
DEF='\033[0;39m'       #  ${DEF}
DGRAY='\033[1;30m'     #  ${DGRAY}
LRED='\033[1;31m'       #  ${LRED}
LGREEN='\033[1;32m'     #  ${LGREEN}
LYELLOW='\033[1;33m'     #  ${LYELLOW}
LBLUE='\033[1;34m'     #  ${LBLUE}
LMAGENTA='\033[1;35m'   #  ${LMAGENTA}
LCYAN='\033[1;36m'     #  ${LCYAN}
WHITE='\033[1;37m'     #  ${WHITE}

# Цвет фона
BGBLACK='\033[40m'     #  ${BGBLACK}
BGRED='\033[41m'       #  ${BGRED}
BGGREEN='\033[42m'     #  ${BGGREEN}
BGBROWN='\033[43m'     #  ${BGBROWN}
BGBLUE='\033[44m'     #  ${BGBLUE}
BGMAGENTA='\033[45m'     #  ${BGMAGENTA}
BGCYAN='\033[46m'     #  ${BGCYAN}
BGGRAY='\033[47m'     #  ${BGGRAY}
BGDEF='\033[49m'      #  ${BGDEF}

tput sgr0     # Возврат цвета в "нормальное" состояние

#Начало меню
echo ""
echo -n "     "
echo -e "${BOLD}${BGMAGENTA}${LGREEN} Меню DNS323 ${NORMAL}"
echo ""
echo -en "${LYELLOW} 1 ${LGREEN} Комманды для удобной работы в telnet ${GRAY}(Выполнить?)${NORMAL}\n" 
echo ""
echo -en "${LYELLOW} 2 ${LGREEN} Пути к папкам & Изменение прав доступа ${GRAY}(Комманды)${NORMAL}\n" 
echo ""
echo -en "${LYELLOW} 3 ${LGREEN} Transmission (${GREEN}Start${NORMAL}, ${LRED}Stop${NORMAL}, ${CYAN}Upgrade${NORMAL}) ${GRAY}(Меню)${NORMAL}\n" 
echo ""
echo -en "${LYELLOW} 4 ${LGREEN} Копирование (cp & rsync) ${GRAY}(Комманды)${NORMAL}\n"
echo ""
echo -en "${LYELLOW} 5 ${LGREEN} Создание ссылки на файл или папку ${GRAY}(Комманды)${NORMAL}\n"
echo ""
echo -en "${LYELLOW} 6 ${LGREEN} Установка из fun-plug & IPKG ${GRAY}(Комманды)${NORMAL}\n"
echo ""
echo -en "${LYELLOW} 7 ${LGREEN} Показать Трафик (${LYELLOW} n${LGREEN}load) ${GRAY}(Выполнить?)${NORMAL}\n"
echo ""
echo -en "${LYELLOW} 8 ${LGREEN} Диспетчер задач (${LYELLOW} h${LGREEN}top) ${GRAY}(Выполнить?)${NORMAL}\n"
echo ""
echo -en "${LYELLOW} 9 ${LGREEN} Midnight Commander (${LYELLOW} m${LGREEN}c) ${GRAY}(Выполнить?)${NORMAL}\n"
echo ""
echo -en "${LMAGENTA} q ${LGREEN} Выход ${NORMAL}\n"
echo ""
echo "(Введите пожалуйта номер пункта, чтобы выполнить комманды этого пункта, любой другой ввод, Выход)"
echo ""
tput sgr0

#97
Код: bash
#!/bin/bash
DATE=$(date +%Y-%m-%d-t-%H-%M-%S) 

if [[ $1 = --help ]]; then
echo USAGE:
echo './zip.sh /<fromdir> <to-subdir> - subdir will be not zipped'
echo './zip.sh /<fromdir> /<to-dir> - zipping <fromdir> to /<full_path_to_dir>'
else
arch_fld=$1
#if [$arch_fld = '--help']; then

if ! [ -z $1 ] && ! [ -z $2 ] ; then
	for folder in $arch_fld/*
	do
	    if [[ $2 = /* ]]; then
	      if ! `file $folder  | grep -i  -P $2'|'$RECYCLE.BIN'|System' > /dev/null 2>&1`; then
                save_path=${folder//$arch_fld/$2"/"$DATE}
                echo -'*Achiving folder - ' $folder ' to '$save_path'.zip *-'
                7z a -tzip -ssw -mx7 "$save_path.zip" "$folder"
              fi

	    else
	      if ! `file $folder  | grep -i  -P $2'|'$RECYCLE.BIN'|System' > /dev/null 2>&1`; then 
		save_path=${folder//$arch_fld/$arch_fld"/"$2"/"$DATE}
		echo -'*Achiving folder - ' $folder ' to '$save_path'.zip *-'
		7z a -tzip -ssw -mx7 "$save_path.zip" "$folder"
	      fi
	    fi
	done
else
echo Not enouth parametrs! Try --help 
fi
#98
В windows файл хранится по пути %systemdrive%\Users\<username>\.ssh\
Если пользователь с административными правами в файле sshd_config надо в конце поправить:

Код: bash
Match Group administrators
       AuthorizedKeysFile .ssh\administrators_authorized_keys

В один файл можно добавлять несколько ключей, в зависимости от числа пользователей *nix из-под которых будет проводиться запуск (мне надо доя rsync)
#99
Первая инструкция, наверное, которую я пишу полностью сам, все инструкции не рабочие (в обратную сторону, из вин в Lin)

Итак, пакет openssh мы установили, теперь надо настроить "прозрачную" авторизацию, чтоб забирать с windows машины, например, бэкапы. В 2020 году у меня был неприятный опыт, когда вирус шифровальщик, не только побил систему, на которой стоял сервер MSSQL, но и уничтожил все бэкапы этой базы... Поэтому забрать на linux машину бэкапы, и при этом не открывать доступ по SMB очень правильное решение  ;)

Код: bash
ssh-keygen
Код: bash
 rsync /root/.ssh/id_rsa.pub  sshuser@winserver:/cygdrive/%USERPROFILE%/.ssh/authorized_keys

Копируем полученный файл в %userprofile%\.ssh

наслаждается)
#100
Пакет OpenSSH Server включен в современные версии Windows 10 (начиная с 1803), Windows 11 и Windows Server 2022/2019 в виде Feature on Demand (FoD). Для установки сервера OpenSSH достаточно выполнить PowerShell команду:

Код: powershell
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Server*' | Add-WindowsCapability –Online

Или при помощи команды DISM:

Код: powershell
dism /Online /Add-Capability /CapabilityName:OpenSSH.Server~~~~0.0.1.0

Если ваш компьютер подключен к интернету, пакет OpenSSH.Server будет скачан и установлен в Windows.

Также вы можете установить сервер OpenSSH в Windows через современную панель Параметры (Settings -> Apps and features -> Optional features -> Add a feature, Приложения -> Управление дополнительными компонентами -> Добавить компонент. Найдите в списке OpenSSH Server и нажмите кнопку Install).

Установка openssh сервера из панели параметры windows 10

Здесь также можно установить набор инструментов администратора Remote Server Administration Tools (RSAT).
На изолированных от интернета компьютерах вы можете установить компонент с ISO образа Features On Demand (доступен в личном кабинете на сайте Microsoft: MSDN или my.visualstudio.com). Скачайте диск, извлеките его содержимое в папку c:\FOD (достаточно распаковать извлечь файл OpenSSH-Server-Package~31bf3856ad364e35~amd64~~.cab), выполните установку из локального репозитория:

Код: powershell
Add-WindowsCapability -Name OpenSSH.Server~~~~0.0.1.0 -Online -Source c:\FOD

Также доступен MSI установщик OpenSSH для Windows в официальном репозитории Microsoft на GitHub (https://github.com/PowerShell/Win32-OpenSSH/releases/). Например, для Windows 10 x64 нужно скачать и установить пакет OpenSSH-Win64-v8.9.1.0.msi. Следующая PowerShell команда скачает MSI файл и установит клиент и сервер OpenSSH:

Код: powershell
Invoke-WebRequest https://github.com/PowerShell/Win32-OpenSSH/releases/download/v8.9.1.0p1-Beta/OpenSSH-Win64-v8.9.1.0.msi -OutFile $HOME\Downloads\OpenSSH-Win64-v8.9.1.0.msi -UseBasicParsing
Код: powershell
msiexec /i c:\users\root\downloads\OpenSSH-Win64-v8.9.1.0.msi

установочный msi файл openssh server для windows

Также вы можете вручную установить OpenSSH сервер в предыдущих версиях Windows (Windows 8.1, Windows Server 2016/2012R2). Пример установки Win32-OpenSSH есть в статье "Настройка SFTP сервера (SSH FTP) в Windows".
Чтобы проверить, что OpenSSH сервер установлен, выполните:

Код: powershell
Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Ser*'

State : Installed
проверить что установлен OpenSSH сервер в windows 10

Настройка SSH сервера в Windows
После установки сервера OpenSSH в Windows добавляются две службы:

ssh-agent (OpenSSH Authentication Agent) – можно использовать для управления закрытыми ключами если вы настроили SSH аутентификацию по ключам;
sshd (OpenSSH SSH Server) – собственно сам SSH сервер.
Вам нужно изменить тип запуска службы sshd на автоматический и запустить службу с помощью PowerShell:

Код: powershell
Set-Service -Name sshd -StartupType 'Automatic'
Код: powershell
Start-Service sshd

Start-Service sshd - запустить openssh

С помощью nestat убедитесь, что теперь в системе запущен SSH сервер и ждет подключений на порту TCP:22 :

Код: powershell
netstat -na| find ":22"

nestat - порт 22 ssh сервера windows

Проверьте, что включено правило брандмауэра (Windows Defender Firewall), разрешающее входящие подключения к Windows по порту TCP/22.

Код: powershell
Get-NetFirewallRule -Name *OpenSSH-Server* |select Name, DisplayName, Description, Enabled

Name DisplayName Description Enabled
---- ----------- ----------- -------
OpenSSH-Server-In-TCP OpenSSH SSH Server (sshd) Inbound rule for OpenSSH SSH Server (sshd) True
правило firewall для доступа к windows через ssh

Если правило отключено (состоянии Enabled=False) или отсутствует, вы можете создать новое входящее правило командой New-NetFirewallRule:

Код: powershell
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

Рассмотрим, где храниться основные компоненты OpenSSH:

Исполняемые файлы OpenSSH Server находятся в каталоге C:\Windows\System32\OpenSSH\  (sshd.exe, ssh.exe, ssh-keygen.exe, sftp.exe и т.д.)
Конфигурационный файл sshd_config (создается после первого запуска службы): C:\ProgramData\ssh
Файлы authorized_keys и ssh ключи можно хранить в профиле пользователей: %USERPROFILE%\.ssh\
Sshd_config: Конфигурационный файл сервера OpenSSH
Настройки сервере OpenSSH хранятся в конфигурационном файле %programdata%\ssh\sshd_config. Это обычный текстовый файл с набором директив. Для редактирования можно использовать любой текстовый редактор (я предпочитаю notepad++). Можно открыть с помощью обычного блокнота:

Код: powershell
start-process notepad C:\Programdata\ssh\sshd_config

Например, чтобы запретить SSH подключение для определенного доменного пользователя (и всех пользователей указанного домена), добавьте в конце файле директивы:

Код: powershell
DenyUsers winitpro\admin@192.168.1.10
Код: powershell
DenyUsers corp\*
Чтобы разрешить подключение только для определенной доменной группы:

Код: powershell
AllowGroups winitpro\sshadmins
Либо можете разрешить доступ для локальной группы:

Код: powershell
AllowGroups sshadmins
По умолчанию могут к openssh могут подключаться все пользователи Windows. Директивы обрабатываются в следующем порядке: DenyUsers, AllowUsers, DenyGroups,AllowGroups.

Можно запретить вход под учетными записями с правами администратора, в этом случае для выполнения привилегированных действий в SSH сессии нужно делать runas.

Код: powershell
DenyGroups Administrators
Следующие директивы разрешают SSH доступ по ключам (SSH аутентификации в Windows с помощью ключей описана в отдельной статье) и по паролю:

ЦитироватьPubkeyAuthentication yes
PasswordAuthentication yes
Вы можете изменить стандартный SSH порт TCP/22, на котором принимает подключения OpenSSH в конфигурационном файле sshd_config в директиве Port.

sshd - смена порта ssh 22

После любых изменений в конфигурационном файле sshd_config нужно перезапускать службу sshd:

Код: powershell
restart-service sshd

Подключение по SSH к Windows компьютеру
Теперь вы можете попробовать подключиться к своей Windows 10 через SSH клиент (в этом примере я использую putty).

Вы можете использовать встроенный SSH клиентом Windows для подключения к удаленному хосту. Для этого нужно в командной строке выполнить команду:
ssh alexbel@192.168.31.102

В этом примере alexbel – имя пользователя на удаленном Windows компьютере, и 192.168.31.102 – IP адрес или DNS имя компьютера.

Обратите внимание что можно использовать следующие форматы имен пользователей Windows при подключении через SSH:

alex@server1 – локальный пользователь Windows
alex@winitpro.ru@server1 –пользователь Active Directory (в виде UPN) или аккаунт Microsoft/ Azure(Microsoft 365)
winitpro\alex@server1 – NetBIOS формат имени
В домене Active Directory можно использовать Kerberos аутентификацию в SSH. Для этого в sshd_config нужно включить параметр:

ЦитироватьGSSAPIAuthentication yes
После этого можно прозрачно подключать к SSH сервер с Windows компьютера в домене из сессии доменного подключается. В этом случае пароль пользователя не указывается и выполняется SSO аутентификация через Kerberos:

ssh -K server1

При первом подключении появится стандартный запрос на добавление узла в список известных SSH хостов.

putty сохранить ключ

Нажимаем Да, и в открывшееся окне авторизуемся под пользователем Windows.

ssh сессия в win 10 на базе openssh

При успешном подключении запускается командная оболочка cmd.exe со строкой-приглашением.

Цитироватьadmin@win10tst C:\Users\admin>
В командной строке вы можете выполнять различные команды, запускать скрипты и программы.

подключение к windows 10 через ssh

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

Код: powershell
powershell.exe

powershell.exe в ssh сессии windows

Чтобы изменить командную оболочку (Shell) по умолчанию в OpenSSH с cmd.exe на PowerShell, внесите изменение в реестр такой командой:

Код: powershell
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String –Force

openssh - изменить shell по умолчанию на powershell

Осталось перезапустить SSH подключение и убедиться, что при подключении используется командный интерпретатор PowerShell (об этом свидетельствует приглашение PS C:\Users\admin>).

powershell cli в windows 10 через ssh

В SSH сессии запустилась командная строка PowerShell, в которой работают привычные функции: авто дополнение, раскраска модулем PSReadLine, история команд и т.д. Если текущий пользователь входит в группу локальных администраторов, то все команды в его сессии выполняются с повышенными правами даже при включенном UAC.

OpenSSH сервер в Windows можно использовать в различных сценариях SSH туннелирования.
Логи SSH подключений в Windows
В Windows логи подключений к SSH серверу по-умолчанию пишутся не в текстовые файлы, а в отдельный журнал событий через Event Tracing for Windows (ETW). Откройте консоль Event Viewer (eventvwr.msc>) и перейдите в раздел Application and services logs -> OpenSSH -> Operational.

При успешном подключении с помощью к SSH серверу с помощью пароля в журнале появится событие:

EventID: 4
sshd: Accepted password for root from 192.168.31.53 port 65479 ssh2
события подключения к openssh сервер windows в event viewer

Если была выполнена аутентификация с помощью SSH ключа, событие будет выглядеть так:

sshd: Accepted publickey for locadm from 192.168.31.53 port 55772 ssh2: ED25519 SHA256:FEHDEC/J72Fb2zC2oJNb45678967kghH43h3bBl31ldPs
Если вы хотите, чтобы логи писались в локальный текстовый файл, нужно в файле sshd_config включить параметры:

SyslogFacility LOCAL0
LogLevel INFO
Перезапустите службу sshd и провеьте, что теперь логи SSH сервера пишутся в файл C:\ProgramData\ssh\logs\sshd.log

текстовый sshd.log в windows
🡱 🡳

Отметьте интересные вам фрагменты текста и они станут доступны по уникальной ссылке в адресной строке браузера.