По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
SSH (Secure Shell) обеспечивает безопасное удаленное соединение между двумя системами. С помощью этого криптографического протокола вы можете управлять машинами, копировать или перемещать файлы на удаленном сервере через зашифрованные каналы. Существует два способа входа в удаленную систему через SSH - с использованием аутентификации по паролю или аутентификации с открытым ключом (вход SSH без пароля). В этом руководстве вы узнаете, как настроить и включить вход по SSH без пароля. Подготовка Нам необходимо: Доступ к командной строке или окну терминала Пользователь с привилегиями sudo или root Локальный сервер и удаленный сервер Доступ по SSH к удаленному серверу через командную строку или окно терминала Перед тем как начать проверьте существующие ключи SSH. Возможно, на вашем компьютере уже есть пара ключей SSH. Чтобы узнать, есть ли у вас в системе ключи SSH, выполните команду: ls -al ~/.ssh/id_*.pub Если в выводе указано, что таких файлов нет, переходите к следующему шагу, который показывает, как сгенерировать ключи SSH. Если они у вас есть, вы можете использовать существующие ключи, сделать их резервную копию и создать новую пару или перезаписать ее. Шаг 1. Создайте пару ключей SSH 1. Первое, что вам нужно сделать, это сгенерировать пару ключей SSH на машине, на которой вы сейчас работаете. В этом примере мы генерируем 4096-битную пару ключей. Мы также добавляем адрес электронной почты, но это необязательно. Команда такая: ssh-keygen -t rsa -b 4096 -C "your_email@domain.com" 2. Затем введите место, где вы хотите сохранить ключи, или нажмите Enter, чтобы принять путь по умолчанию. 3. Также вам будет предложено установить кодовую фразу. Хотя это делает соединение еще более безопасным, оно может прерываться при настройке автоматизированных процессов. Поэтому вы можете ввести пароль или просто нажать Enter, чтобы пропустить этот шаг. 4. Затем в выводе сообщается, где хранятся идентификационный и открытый ключ, а также выдается отпечаток ключа. 5. Убедитесь, что вы успешно создали пару ключей SSH, выполнив команду: ls -al ~/.ssh/id_*.pub Вы должны увидеть путь идентификационного ключа и открытого ключа, как на скриншоте ниже: Шаг 2. Загрузите открытый ключ на удаленный сервер Вы можете загрузить публичный SSH-ключ на удаленный сервер с помощью команды ssh-copy-id или команды cat. Вариант 1. Загрузить открытый ключ с помощью команды ssh-copy-id Чтобы включить беспарольный доступ, вам необходимо загрузить копию открытого ключа на удаленный сервер. 1. Подключитесь к удаленному серверу и используйте команду ssh-copy-id: ssh-copy-ide [remote_username]@[server_ip_address] 2. Открытый ключ автоматически копируется в файл .ssh/authorized_keys. Вариант 2: загрузить открытый ключ с помощью команды cat Другой способ скопировать открытый ключ на сервер - использовать команду cat. 1. Начните с подключения к серверу и создания на нем каталога .ssh. ssh [remote_username]@[server_ip_address] mkdir -p .ssh 2. Затем введите пароль для удаленного пользователя. 3. Теперь вы можете загрузить открытый ключ с локальной машины на удаленный сервер. Команда также указывает, что ключ будет храниться под именем authorized_keys во вновь созданном каталоге .ssh: cat .ssh/id_rsa.pub | ssh [remote_username]@[server_ip_address] 'cat >> .ssh/authorized_keys' Шаг 3. Войдите на сервер без пароля После создания пары ключей SSH и загрузки открытого ключа на удаленный сервер вы должны иметь возможность подключаться к выделенному серверу без ввода пароля. Проверьте, работает ли установка, выполнив команду: ssh [remote_username]@[server_ip_address] Система должна напрямую входить в систему на удаленном сервере, пароль не требуется. Примечание: убедившись, что вы можете подключаться к удаленному серверу SSH без пароля, рассмотрите возможность полного отключения аутентификации по паролю SSH. Это добавит еще один уровень безопасности и защитит ваш сервер от bruteforce атак. Дополнительно: Устранение неполадок с разрешениями файлов удаленного сервера Права доступа к файлам на удаленном сервере могут вызвать проблемы с входом в SSH без пароля. Это обычная проблема со старыми версиями SSH. Если после выполнения всех шагов вам все еще предлагается ввести пароль, начните с редактирования прав доступа к файлам на удаленном сервере. Установите разрешения 700 для каталога .ssh. Установите разрешения 640 для каталога .ssh/authorized_keys. Отредактируйте права доступа к файлу с помощью следующей команды: ssh [remote_username]@[server_ip_address] "chmod 700 .ssh; chmod 640 .ssh/authorized_keys" При появлении запроса введите свой пароль. Если действие было успешным, вывода не будет. Итог Если вы хотите автоматизировать обновления и другие задачи или беспрепятственно подключаться к удаленному серверу по SSH, вам следует включить вход по SSH без пароля. Инструкции в этой статье должны помочь вам в этом.
img
Вы помните из прошлых статей, что BGP был создан для поддержки многих различных протоколов и NLRI непосредственно с момента его возникновения. В результате чего BGP поддерживает такие технологии, как IPV6, MPLS, VPN и многое другое. Вы будете приятно удивлены тем, что как только вы овладеете основами BGP, которые мы рассмотрели в этом цикле статей, работа с BGP в IPv6 покажется очень простой! Предыдущие статьи цикла про BGP: Основы протокола BGP Построение маршрута протоколом BGP Формирование соседства в BGP Оповещения NLRI и политики маршрутизации BGP Масштабируемость протокола BGP Видео: Основы BGP за 7 минут BGP с IPv6 BGP настолько удивительно гибок, что, как обсуждалось ранее в этом цикле статей, можно использовать IPv4 в качестве «несущего» протокола для IPv6 NLRI. В данном случае мы рассматриваем IPv6 как «пассажирский» протокол. Давайте сначала рассмотрим конфигурацию и используем два простых маршрутизатора, как показано на рисунке 1. Рисунок 1: Простая топология для IPv6 протокола BGP Пример 1 показывает конфигурацию и проверку такой сети. Обратите внимание, что эта конфигурация требует установки соответствующего адреса следующего прыжка IPv6 для префиксного объявления. Это не требуется при использовании IPv6 как протокола «перевозчика», так и протокола «пассажира». Пример 1: IPv4 «перевозящий» IPv6 NLRI ATL#conf t Enter configuration commands, one per line. End with CNTL/Z. ATL( config)#ipv6 unicast-routing ATL(config)#route-map IPV6NH permit 10 ATL(config-route-map)#set ipv6 next-hop 2001:1212:1212::1 ATL(config-route-map)#exit ATL(config)#int lo 100 ATL(config-if)#ipv6 address 2001:1111:1111: :/64 eui-64 ATL(config-if )#router bqp 200 ATL(config-router)#neiqhbor 10.10.10.2 remote-as 200 ATL(config-router) #address-family ipv4 unicast ATL(config-router-af)#neiqhbor 10.10.10.2 activate ATL(config-router-af)#address-family ipv6 unicast ATL(config-router-af)#neiqhbor 10.10.10.2 activate ATL(config-router-af)#neiqhbor 10.10.10.2 route-map IPV6NH out ATL(config-router-af)#network 2001:1111:1111: :/64 ATL(config-router-af)#end ATL# Пример 2 показывает проверку этой конфигурации на ATL 2. Обратите внимание, что поскольку EUI-64 действует на интерфейсе обратной связи ATL, вам нужно будет скопировать полный IPv6-адрес из этого интерфейса, чтобы выполнить тестирование командой ping. Пример 2: проверка настройки BGP IPv4/IPv6 ATL#show ip bgp ipv6 unicast ATL2#ping 2001:1111:1111:0:C801:6FF:FEDB:0 Как вы можете догадаться, гораздо более «чистая» конфигурация заключается в использовании IPv6 для передачи информации IPv6 префикса. «Чистая» - это имеется в виду гораздо простая конфигурация. Пример 3 демонстрирует эту конфигурацию. Обратите внимание, что были удалены все IPv4 с устройств, поэтому необходимо установить 32-битный router ID для BGP, поскольку он не может установить его автоматически из интерфейса на устройстве. Пример 3: проверка настройки BGP IPv4/IPv6 ATL1#conf t ATL1(config)#router bgp 200 *Jan 9 03:31:21.039: %BGP-4-NORTRID: BGP could not pick a router-id. Please configure manually. ATL1(config-router)#bgp router-id 1.1.1.1 ATL1(config-router)#neighbor 2001:1212:1212::2 remote-as 200 ATL1(config-router)#address-family ipv6 unicast ATL1(config-router-af)#neighbor 2001:1212:1212::2 activate ATL1(config-router-af)#network 2001:1111:1111::/64 ATL1(config-router-af)#end ATL1# Возможно, вам будет интересно проверить соседство BGP после настройки IPv6. Мы очень любим использовать команду show ip bgp summary для проверки настроек в IPv4. Для IPv6 используйте команду show bgp ipv6 unicast summary. Как вы помните из предыдущей части этой серии статей, существует много замечательных механизмов фильтрации, которые мы можем применить в IPv4 BGP. Замечательная новость заключается в том, что этот же набор методов, доступны и для IPv6. Ментоды включают в себя такие механизмы, как: Prefix lists AS Path Filtering Route maps Пример 4 показывает пример конфигурации фильтрации с использованием списка префиксов. Обратите внимание, что эта конфигурация действительно не требует от вас повторного изучения каких-либо технологий. Пример 4: фильтрация префиксов IPv6 в BGP ATL#conf t ATL(config)#ipv6 prefix-list MYTEST deny 2001:1111:1111::/64 ATL(config)#ipv6 prefix-list MYTEST permit ::/0 le 128 ATL(config)#router bgp 200 ATL(config-router)#address-family ipv6 unicast ATL(config-router-af)#neighbor 2001:1212:1212:: 2 prefix-list MYTEST out ATL(config-router-af)#end ATL# ATL#clear ip bgp *
img
Model-View-Controller - популярный шаблон программирования, где логика приложения делится на три различных компонента. В этой статье расскажем о роли компонентов архитектуры MVC, начнем с короткой истории, а далее покажем, как её можно использовать в приложении. История паттерна Model View Controller Модель MVC была впервые представлена в 1979 году учёным Трюгве Миккьелем Хейердалом Реенскаугом. Он хотел придумать решение, как разбить сложное пользовательское приложение на более мелкие управляемые компоненты. Шаблон MVC был впервые использован в языке программирования Small Talk. Изначально шаблоне хотели назвать «Model-View-Editor», но затем оно было изменено на «Model-View-Controller». В 1980-х и начале 90-х годов шаблон MVC использовался главным образом в настольных приложениях. Но к концу 1990-х годов она стала довольно популярной в разработке веб-приложений. В современных веб-приложениях шаблон MVC является популярным архитектурным дизайном для организации кода. Ниже приведен список нескольких популярных веб-фреймворков, использующих шаблон MVC: Ruby on Rails ASP.NET MVC Laravel Angular Какие три компонента включает в себя MVC? Шаблон программирования MVC состоит их трёх следующих компонентов: Model – отвечает за логику данных, лежащую в основе приложения View – это видимая часть приложения, то с чем взаимодействует пользователь Controller – работает как мозг приложения и обеспечивает связь между моделью и видом Как шаблон MVC работает в веб-приложении? Чтобы лучше понять, как работает шаблон MVC, лучше всего показать его в демонстрационном приложении. Это приложение стека MERN (MongoDB, Express, React, Node) своего рода помощник менеджера офиса и отображает таблицу недавно нанятых тренеров средней школы. Он также показывает, какие тренеры не сдали тесты на туберкулез, не прошли вакцинацию от Covid, не заполнили резюме и не прошли проверку. Менеджер может отправлять напоминания по электронной почте тем тренерам, у которых отсутствуют документы. Компонент Model Модель отвечает за логику данных нашего приложения. Мы используем MongoDB для базы данных тренеров. Для начала определяем свойства, которые будут применены к каждому тренеру в базе данных. У каждого тренера есть свойства name, email, program, application, backgroundCheck, tbTest и covidTest. const coachSchema = new Schema({ name: { type: String, trim: true, maxLength: 32, required: true }, email: { type: String, trim: true, maxLength: 32, required: true, unique: true }, program: { type: String, trim: true, maxLength: 32, required: true }, application: { type: Boolean, required: true }, backgroundCheck: { type: Boolean, required: true }, tbTest: { type: Boolean, required: true }, covidTest: { type: Boolean, required: true } }, { timestamps: true }) type: Boolean представляет значение true или false для свойств приложения, backgroundCheck, tbTest и covidTest. Если у тренера одно из этих четырех свойств, помечены как false, это означает, что они не завершили процесс найма. Создаем семь записей для нашей базы данных тренеров, и эта информация хранится в MongoDB Atlas. Ниже приведен пример одной из записей базы данных. Компонент "контроллер"" будет взаимодействовать с базой данных и получать необходимую информацию для отправки компоненту представление. Компонент View Компонент View (вид, представление или вью) отвечает за все визуальные аспекты приложения. Для отображения данных пользователю мы использовали React. При первой загрузке приложения на экране отображается приветственное сообщение. При нажатии кнопки «View Dashboard» происходит переход к таблице тренеров и списку отсутствующих документов. Компонент Вид не взаимодействует напрямую с базой данных, поскольку это делает наш контроллер. Контроллер предоставляет эту информацию компоненту представление, чтобы ее можно было отобразить на странице. Вот как выглядит код, когда представление выполняет вызов выборки (fetch) для получения данных от контроллера: await fetch('https://mvc-project-backend.herokuapp.com/coaches') Затем мы используем метод map(), чтобы пройтись по списку тренеров и отобразить их имена, адреса электронной почты и программу в виде таблицы. coachData.map(data => ( <tr key={data._id}> <td>{data.name}</td> <td>{data.email}</td> <td>{data.program}</td> </tr> )) Для отображения раздела отсутствующих документов мы отправляем запрос к бэкнэду и получием список тренеров, которые не заполнили анкету, не сдали тесты на туберкулез, не привиты от Covid и не прошли проверки. Для отображения имен для каждой категории снова используется метод map(). Если нажать кнопку «Send reminder email», эта информация будет отправлена React-ом на бэкэнд. Контролер отвечает за отправку сообщения электронной почты и обмен информацией с компонентом представление о том, отправилось ли сообщение. На основе информации, которую он получает от контроллера, во View отображается сообщение об успехе или сообщение об отказе. Компонент Controller Контроллер взаимодействует с компонентами «Модель» и «Представление» и выполняет все логические операции для нашего приложения. Этот раздел кода был построен в Node.JS и Express. Контролер получает полный список тренеров из «Модели» и отправит эту информацию в «Представление». Контролер также отвечает за фильтрацию через «Модель» и предоставление списка тренеров, которые не сдали необходимые документы. Все эти данные отправляются в «Представление», чтобы их можно было отобразить пользователю. Что касается функциональности электронной почты, то «Контролер» перед отправкой проверяет валидность адреса электронной почты. Для отправки электронных писем использована Nodemailer: transporter.sendMail(mailOptions, (err) => { if (err) { console.log(`Applications: There was an error sending the message: ${err}`) res.json({ status: 'Email failure' }) } else { console.log(`Applications Success: Email was sent`) res.json({ status: "Email sent" }); } }) Если сообщение электронной почты успешно отправлено, пользователь получает уведомление, и сообщение электронной почты отображается в почте демонстрационной учетной записи. Если при отправке сообщения возникает ошибка, то «Контроллер» посылает эту информацию в «Вид», чтобы пользователю отобразилось уведомление об ошибке. Заключение А в заключение повторим пройденное: Model-View-Controller - популярный шаблон программирования, используемый для разделения логики приложения на три различных компонента. Хотя шаблон MVC первоначально использовался в настольных приложениях, в конце 1990-х он стал популярным в разработке веб-приложений. Модель отвечает за логику данных, лежащую в основе приложения. Представление - это то, что пользователь видит в приложении и взаимодействует с ним. Контроллер действует как мозг приложения и взаимодействует с моделью и представлением. Веб-инфраструктуры, использующие шаблон MVC - это Ruby on Rails, ASP.NET MVC, Laravel и Angular.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59