Архив рубрики: Публикации

Расширенный WordPress поиск и замена в базе данных в Linux с помощью sed

При переносе сайта WordPress или WooCommerce магазина на новый домен, вы можете найти некоторые URL-адреса или пути не обновленными. Точно так же при переходе с HTTP на HTTPS вы можете получить ошибки смешанного содержания, как правило, это может быть исправлено путем обновления базы данных. Традиционно существуют некоторые плагины и скрипты, которые помогут вам обновить базу данных, чтобы решить эти проблемы, если у вас все еще есть проблемы, этот пост должен помочь вам исправить пути и URL-адреса в вашей базе данных WordPress.

Мы впервые столкнулись с этой проблемой, когда обнаружили плагин Ultimate VC Add-ons, чтобы кодировать двоеточие и косую черту по- разному , как это http%3A%2F%2F

Я предполагаю, что у вас уже есть дамп базы данных WordPress, созданный с помощью PhpMyAdmin, плагина Adminer, дамп MySQL или WP-CLI.

Расширенный WordPress поиск и замена в базе данных в Linux с помощью sed

Я собираюсь использовать инструменты Linux  grep и sed для достижения максимальной скорости. Если у вас нет доступа к Linux, то вы можете использовать WordPress плагин  Better Search and Replace.

Поиск вхождений

Мы можем смоделировать с Grep, используя -c флаг, которая будет подсчитывать количество раз он находит строку domain.ru

grep -c 'andreyex.ru' database.sql

 

Вы получите целое число в качестве вывода, если вы видите 0, то нет вхождения domain.ru в базе данных

234

 

Закодированный URL

Некоторые плагины используют кодировку URL, которая использует этот формат для миграции HTTP и HTTPS %3A = :и %2F = /.

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

grep -c 'http%3A%2F%2F' database.sql

 

Слеши

Некоторые плагины избегают  и / и могут быть легко пропущены.

grep -c 'http://domain.ru' database.sql

 

Путь WordPress

Иногда плагины хранят информацию о пути хранения на вашем хосте, узнать можно с помощью этой команды

grep -c '/public_html/domain.ru' database.sql

 

Фактическая замена

Многие учебники используют в /качестве разделителя sed, я использую #, чтобы сделать его более удобным для чтения. Это также означает, что вам не придется искать какие — либо косые черты (/) в вашей команде SED.

означает глобальная замена и переадресовывает на новый файл, чтобы не изменять исходный дамп базы данных.

Эта команда заменяет domain.ru на newdomain.ru в файле dump.sql

sed 's#domain.com#newdomain.ru#g' dump.sql > staging-or-newdomain.sql

 

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

sed 's#domain.ru/oldfolder#newdomain.ru/newfolder#g' dump.sql > staging-or-newdomain.sql

 

Закодированный URL

Замена кодирующейся строки URL

sed 's#http%3A%2F%2Fdomain.ru#http%3A%2F%2Fnewdomain.ru#g' dump.sql > staging-or-newdomain.sql

 

Это как заменить закодированые строки URL доменов в подпапках

sed 's#http%3A%2F%2Fdomain.ru%2Fsubfolder#http%3A%2F%2Fnewdomain.ru%2Fsubfolder#g' dump.sql > staging-or-newdomain.sql

 

Слеши

Если вы нашли косую черту, эта команда заменит их

sed 's#http://domain.ru#http://newdomain.ru#g' dump.sql > staging-or-newdomain.sql

 

WordPress путь поиска и замены

Замена пути

sed 's#/public_html/andreyex.ru#/public_html/newfolder#g' dump.sql > staging-or-newdomain.sql

 

Это должно работать в большинстве баз данных WordPress, дайте нам знать в комментариях, если вы обнаружите какие-либо другие необычные шаблоны!

Использование Gzip для сжатия новых Dump

Мы можем сжать модифицированный дамп с помощью Gzip легко, он значительно сократит файл .sql

cat dump.sql | gzip > dump.sql.gz

 

Теперь вы можете повторно импортировать измененный дамп с помощью WP-CLI, PhpMyAdmin или Adminer.



2017-02-11T02:47:12
Базы данных

Введение в JQuery

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

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

Сравнивая простой пример программы «Привет, мир!» в JavaScript и JQuery, мы можем увидеть разницу в том, как они оба написаны.

JavaScript

document.getElementById("demo").innerHTML = "Привет, мир!";

 

Jquery

$("#demo").html("Привет, мир!");

 

Этот короткий пример демонстрирует, как JQuery может достигнуть того же конечного результата как обычный JavaScript в сжатой форме.

Цели

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

  • Как установить Jquery в веб-проекте.
  • Определения важных концепций веб-разработки, таких как API, DOM и CDN.
  • Общие селекторы JQuery, события и эффекты.
  • Примеры для проверки концепции, которые вы узнали на протяжении всей статьи.

Предпосылки

Перед тем, как начать это руководство вам необходимо следующее:

  • Базовые знания HTML и CSS. Вы уже должны знать, как создать простой веб-сайт, а также иметь представление о селекторов CSS, таких как идентификаторы, классы и псевдо элементы.
  • Понимание основ программирования. В то время как можно начать писать JQuery без передовых знаний JavaScript, знакомство с понятиями переменных и типов данных , а также математики и логики существенно поможет.

Настройка Jquery

JQuery является файл JavaScript, который вы внедряете в виде ссылки в вашем HTML. Есть два способа включить JQuery в проекте:

  • Загрузить локальную копию.
  • Ссылка на файл через сеть доставки контента (CDN).

Примечание: Сеть доставки контента (CDN) представляет собой систему из нескольких серверов, которые обеспечивают веб — контент для пользователя на основе географического положения. Когда Вы даете ссылку на размещенный файл Jquery через CDN, он будет потенциально загружен быстрее и эффективнее для пользователя, чем если вы его принимали на своем собственном сервере.

Мы будем использовать CDN, чтобы ссылаться на Jquery в наших примерах. Вы можете найти последнюю версию JQuery в библиотеке компании Google . Если вместо этого вы хотите загрузить его, вы можете получить копию JQuery с официального сайта.

Мы начнем это упражнение, создав небольшую веб — проект. Он будет состоять из style.css в каталоге css/, scripts.js в каталоге js/, и главный файл index.html в корневом каталоге проекта.

project/

├── css/

|   └── style.css

├── js/

|   └── scripts.js

└── index.html


Для того, чтобы начать, сделайте HTML скелет и сохранить его как index.html.

index.html

<!doctype html>

<html lang="ru">



<head>

  <title>Демо jQuery</title>

  <link rel="stylesheet" href="css/style.css">

</head>



<body>

</body>



</html>

 

Ссылка на файл JQuery CDN перед закрывающим тегом </body>, а затем свой собственный файл JavaScript, scripts.js.

index.html

<!doctype html>

<html lang="ru">



<head>

  <title>Демо jQuery</title>

  <link rel="stylesheet" href="css/style.css">

</head>



<body>



<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>

<script src="js/scripts.js"></script>

</body>



</html>

 

Ваш JavaScript — файл ( scripts.js) должны быть включен ниже библиотеки Jquery в документе или он не будет работать.

Примечание
Если вы загрузили локальную копию JQuery, сохранить его в js/папку и ссылку на него в js/jquery.min.js.


На данный момент библиотека Jquery теперь загружается на ваш сайт, и у вас есть полный доступ к API JQuery.

Примечание
Интерфейс прикладного программирования (API) представляет собой интерфейс, который позволяет программам программного обеспечения взаимодействовать друг с другом. В этом случае API для JQuery содержит всю необходимую информацию и документацию, необходимую для доступа к JQuery.


Использование JQuery

По своей сути, Jquery используется для соединения с HTML-элементами в браузере через DOM.

Объектная модель документа (DOM) является метод, с помощью которого JavaScript (и JQuery) взаимодействуют с HTML в браузере. Для просмотра именно того, что DOM является, в вашем веб — браузере, щелкните правой кнопкой мыши на текущей веб — странице выберите Inspect. Это откроет Инструменты разработчика. HTML код, который Вы видите здесь DOM.

Каждый HTML — элемент считается узлом в DOM — это объект, который может коснуться JavaScript. Эти объекты расположены в виде древовидной структуры, с <html> будучи ближе к корню, и каждый вложенный элемент представляет ветвь дальше по дереву. JavaScript может добавлять, удалять и изменять любой из этих элементов.

Если вы щелкните правой кнопкой мыши на сайте снова и нажмите View Page Source, вы увидите необработанный HTML вывод веб — сайта. Легко сначала запутать DOM с источником HTML, но они разные — исходная страница именно то, что написано в HTML — файле. Это является статическим и не будет меняться, и не будет зависеть от JavaScript. DOM является динамическим, и может измениться.

Наружный слой DOM, слой, который оборачивает весь <html> узел, является документом объекта. Для того, чтобы начать манипулировать страницей с помощью JQuery, мы должны гарантировать , что документ в первую очередь «готов».

Создайте файл scripts.js в вашей директории js/, и введите следующий код:

JS/scripts.js

$(document).ready(function() {

    // все пользовательские jQuery будет писаться здесь

});

 

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

Во введении этой статьи, вы видели простой скрипт «Привет, мир!». Для того, чтобы инициировать этот сценарий и печать текста в браузере с JQuery, сначала мы создадим пустой абзац элемента уровня блока с идентификатором demo, приложенного к нему.

index.html

...

<body>



<p id="demo"></p>

...

 

JQuery вызывается и представлен знаком доллара ($). Мы получаем доступ к DOM с JQuery, используя в основном синтаксис CSS, и применяем действие с помощью метода. Основной пример Jquery имеет следующий формат.

$("selector").method();

 

Так как идентификатор представлен символом хэш (#) в CSS, мы получить доступ к демонстрационному идентификатору с помощью селектора #demo. html() это метод изменяет HTML внутри элемента.

Теперь мы собираемся поставить наш пример «Привет, мир!» внутри Jquery ready(). Добавьте эту строку в файл scripts.js в пределах существующей функции:

js/scripts.js

$(document).ready(function() {

    $("#demo").html("Привет, мир!");

});

 

После того как вы сохранили файл, вы можете открыть файл index.html в вашем браузере. Если все сделано правильно, вы увидите выход Привет, Мир!.

Если вы были смущены DOM прежде, вы можете увидеть его в действии прямо сейчас. Щелкните правой кнопкой мыши на текст «Привет, мир!» на странице и выберите Inspect Element. DOM теперь будет отображать <p id="demo">Привет, мир!</p>. Если вы просмотрите исходный код, вы будете видеть только <p id="demo"></p>, чистый HTML, который мы написали.

Селекторы

Селекторы, это элементы, которые мы указываем JQuery, какие хотим использовать. Большинство селекторов Jquery такие же, как и знакомых в CSS, с несколькими Jquery-специфическими дополнениями. Вы можете просмотреть полный список селекторов JQuery в официальной документации.

Чтобы получить доступ к селектору, используйте символ Jquery $, а затем скобки ().

$("selector")

 

Строки в двойных кавычках являются предпочтительными в руководстве по стилю Jquery, хотя одиночные кавычки тоже часто используются.

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

  • $("*")Джокер: выбирает каждый элемент на странице.
  • $(this)Ток: выбирает текущий элемент эксплуатирующийся на внутри функции.
  • $("p")Метка: выбирает каждый экземпляр тега <p>.
  • $(".example")Класс: выбирает каждый элемент, который имеет класс example, примененных к нему.
  • $("#example")Id: выбирает один экземпляр уникального идентификатора example.
  • $("[type='text']")Атрибут: выбирает любой элемент с text применен к атрибуту type.
  • $("p:first-of-type")Псевдо элемент: выбирает первый <p>.

Как правило, между классами и идентификаторами,  вы чаще всего встретите — классы, когда вы хотите выбрать несколько элементов, а также идентификаторы, если вы хотите выбрать только один.

События Jquery

В примере «Привет, мир!», код сработал, как только страница была загружена, и документ был готов, и, следовательно, не требует взаимодействия с пользователем. В этом случае, мы могли бы написать текст непосредственно в HTML, не потрудившись с JQuery. Тем не менее, нам нужно будет использовать JQuery, если мы хотим, чтобы текст появлялся на странице с одним нажатием кнопки.

Вернитесь в файл index.html и добавьте элемент <button>. Мы будем использовать эту кнопку для прослушивания нашего события щелчка.

index.html

...

<body>



<button id="trigger">Кликни по мне</button>

<p id="demo"></p>

 

Мы будем использовать метод click() для вызова функции, содержащую наш текст «Привет, мир!».

JS/scripts.js

$(document).ready(function() {

    $("#trigger").click();

});

 

Наш элемент <button> имеет идентификатор с именем trigger, когда мы выбираем $("#trigger"). Добавляя click(), мы говорим это надо прослушивать события щелчка, но мы еще не сделали. Теперь мы будем вызывать функцию, которая содержит наш код, внутри метода click().

function() {

    $("#demo").html("Привет, мир!");

}

 

Вот окончательный код.

JS/scripts.js

$(document).ready(function() {

    $("#trigger").click(function() {

    $("#demo").html("Привет, мир!");

    });

});

 

Сохраните файл scripts.js и обновите index.html в браузере. Теперь при нажатии кнопки, поменяется текст на «Привет, мир!».

Событие появляется в любое время, когда пользователь взаимодействует с браузером. Обычно это делается с помощью мыши или клавиатуры. Пример, который мы только что создали, использовал событие щелчка. Из официальной документации Jquery, вы можете просмотреть полный список методов событий JQuery. Ниже приводится краткий обзор некоторых из наиболее часто используемых методов событий.

  • click()Нажмите: выполняется при нажатии кнопки мыши.
  • hover()Hover: выполняется, когда мышь зависает над элементом. mouseenter() и  mouseleave()применяются только при появлении мыши на элементе или оставляет элемент.
  • submit()Отправить: выполняется, когда форма была отправлена.
  • scroll()Свиток: выполняется, когда на экране прокручивается.
  • keydown()KeyDown: выполняется при нажатии вниз на клавиши на клавиатуре.

Для того, чтобы изображения изменялись или исчезали, когда пользователь прокручивает вниз по экрану, используйте метод scroll(). Для выхода из меню с помощью клавиши ESC, используйте метод keydown(). Для того, чтобы сделать выпадающее меню аккордеон, используйте метод click().

Понимание событий имеет важное значение для создания динамического содержимого веб-сайта с JQuery.

Эффекты JQuery

Эффекты JQuery работают рука об руку с событиями, позволяя добавить анимацию и иным образом манипулировать элементами на странице.

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

Удалим текущий теги <button> и <p> из тела вашего файла index.html, и добавьте следующую строку в ваш HTML — документ:

index.html

...

<body>

<button class="trigger">Открыть</button>



<section class="overlay">

  <button class="trigger">Закрыть</button>

</section>

...

 

В нашем файле style.css, мы будем использовать минимальное количество CSS, чтобы скрыть overlay с display: none и в центре его на экране.

css/style.css

.overlay {

  display: none;

  position: fixed;

  top: 45%;

  left: 45%;

  transform: translate(-45%, -45%);

  height: 210px;

  width: 150px;

  background: blue;

}

 

Перейдите в файл в scripts.js, там мы будем использовать метод toggle(), который будет переключать в CSS свойство display между none и block, скрытия и отображения наложения при нажатии.

JS / scripts.js

$(document).ready(function() {

    $(".trigger").click(function() {

        $(".overlay").toggle();

    });

});

 

Обновите файл index.html. Теперь вы будете иметь возможность переключать видимость окошка, нажав на кнопку. Вы можете изменить toggle() на fadeToggle() или slideToggle() увидеть несколько других встроенных эффектов JQuery.

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

  • toggle()Переключение: переключает видимость элемента или элементов. show()и hide()являются соответствующие эффекты в одну сторону.
  • fadeToggle()Fade Переключение: переключает видимость и одушевляет непрозрачность элемента или элементов. fadeIn() и fadeOut() являются соответствующие эффекты в одну сторону.
  • slideToggle()Slide Переключение переключает видимость элемента или элементов со скользящим эффектом. slideDown() и slideUp() являются соответствующие эффекты в одну сторону.
  • animate()Анимация выполняет пользовательские эффекты анимации на CSS свойство элемента.

Мы используем события Jquery для прослушивания для взаимодействия с пользователем, например, нажатием одной кнопки, и мы используем эффекты JQuery для дальнейшего управления элементами, когда-то происходит действие.

 Введение в JQuery

Вывод

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

Отсюда, вы должны иметь более глубокое понимание возможностей JQuery, и быть готовы к вашему пути написания собственного кода.



2017-02-11T00:54:35
Лучшие учебники по Wodpress

Калькулятор размеров мужской обуви

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

Также, калькулятор способен показать размер, исходя из длины стопы. Для выяснения этого параметра, обведите по контуру свою стопу на листе бумаги. При этом учитывайте, что выступ пятки слегка увеличит это расстояние. Определять размер нужно по наиболее длинной траектории вашей стопы. Стоит помнить, что стопы немного отличаются по размеру, а значит, измерить следует обе, а потом выбрать наибольший результат. И еще один нюанс: не стоит осуществлять обводку из положения «сидя» — это приведет к погрешности измерения.

Сандалии, туфли, полуботинки, ботинки, сапоги — определитесь с размером перед покупкой!

Мужская обувь
Длина стопы (см)
Россия
Китай
США
Европа
Великобритания

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

Калькулятор размеров мужской одежды

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

Также, калькулятор способен проиллюстрировать физические параметры, соответствующие данному размеру. Это и рост, и длина рукава, и обхват груди, талии, бедер… И, разумеется, наоборот, можно выяснить, ваш размер на основании введенных вами мерок.

Мужская одежда
Китай
Россия
Международный
Физические параметры
Рост (см)
Обхват груди (см)
Обхват талии (см)
Обхват бедер (см)
Длина спины (см)
Длина рукава (см)
Длина шагового шва (см)
Обхват шеи (см)

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

Авторизация по ключу SSH

SSH или Secure Shell — это зашифрованный протокол, который часто используется для взаимодействия и удаленного управления серверами. Если вы захотите что-либо сделать на удаленном сервере, скорее всего, вам придется воспользоваться SSH и работать через терминал.

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

Как работают ключи SSH?

SSH сервер может выполнять аутентификацию пользователей с помощью различных алгоритмов. Самый популярный — это аутентификация по паролю. Он достаточно прост, но не очень безопасный. Пароли передаются по безопасному каналу, но они недостаточно сложны для противостояния попыткам перебора. Вычислительная мощность современных систем в сочетании со специальными скриптами делают перебор очень простым. Конечно, существуют другие способы дополнительной безопасности, например, fail2ban, но аутентификация по ключу SSH более надежна.

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

Открытый ключ используется для шифрования сообщений, которые можно расшифровать только закрытым ключом. Это свойство и используется для аутентификации с помощью пары ключей. Открытый ключ загружается на удаленный сервер, к которому необходимо получить доступ. Его нужно добавить в специальный файл ~/.ssh/authorized_keys.

Когда клиент попытается выполнить проверку подлинности через этот ключ, сервер отправит случайное сообщение для проверки, клиент шифрует его с помощью закрытого ключа и отправляет обратно. Дальше сервер проверяет получится ли его расшифровать с помощью открытого ключа и если да — аутентификация пройдена.

Как создать ключи SSH?

Сначала необходимо создать ключи ssh для аутентификации на локальном сервере. Для этого существует специальная утилита ssh-keygen, которая входит в набор утилит OpenSSH. По умолчанию она создает пару 2048 битных RSA ключей, которая подойдет не только для SSH, но и для большинства других ситуаций.

Итак, генерация ключей ssh выполняется командой:

ssh-keygen

Утилита предложит вам выбрать расположение ключей. По умолчанию ключи располагаются в папке ~/.ssh/. Лучше ничего не менять, чтобы все работало по умолчанию и ключи автоматически подхватывались. Секретный ключ будет называться id_rsa, а публичный id_rsa.pub.

Затем утилита предложит ввести пароль для дополнительного шифрования ключа на диске. Его можно не указывать, если не хотите. Использование дополнительного шифрования имеет только один минус — необходимость вводить пароль, и несколько преимуществ:

  • Пароль никогда не попадет в сеть, он используется только на локальной машине для расшифровки ключа. Это значит что перебор по паролю больше невозможен.
  • Секретный ключ хранится в закрытом каталоге и у клиента ssh нет к нему доступа пока вы не введете пароль;
  • Если злоумышленник хочет взломать аутентификацию по ключу SSH, ему понадобится доступ к вашей системе. И даже тогда ключевая фраза может стать серьезной помехой на его пути.

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

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

Загрузка ключа на сервер

Когда генерация ключей завершена, нам осталось только загрузить ключ на сервер. Для загрузки ключа можно использовать несколько способов. В некоторых случаях вы можете указать ключ в панели управления сервером, например, сPanel или любой другой. Но мы такой способ рассматривать не будем. Мы рассмотрим ручные способы.

Самый простой способ скопировать ключ на удаленный сервер — это использовать утилиту ssh-copy-id. Она тоже входит в пакет программ OpenSSH. Но для работы этого метода вам нужно иметь пароль доступа к серверу по SSH. Синтаксис команды:

ssh-copy-id username@remote_host

При первом подключении к серверу система может его не распознать, поэтому вам нужно ввести yes. Затем введите ваш пароль пользователя на удаленном сервере. Утилита подключится к удаленному серверу, а затем использует содержимое ключа id.rsa.pub для загрузки его на сервер в файл ~/.ssh/authorized_keys. Дальше вы можете выполнять аутентификацию с помощью этого ключа.

Если такой способ по какой-либо причине для вас не работает, вы можете скопировать ключ по ssh вручную. Мы создадим каталог ~/.ssh, а затем поместим наш ключ в файл authorized_keys с помощью символа >>, это позволит не перезаписывать существующие ключи:

cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Здесь вам тоже нужно набрать yes, если вы подключаетесь к новому серверу, а затем ввести пароль. Теперь вы можете использовать созданный ключ для аутентификации на сервере:

 ssh username@remote_host

Если вы не захотели создать ssh ключ с доступом по паролю, то вы сразу же будете авторизованы, что очень удобно. Иначе, сначала вам придется ввести фразу-пароль для расшифровки ключа.

Отключение проверки пароля

Если пароль больше не будет использоваться, то для увеличения безопасности системы лучше его вовсе отключить. Но убедитесь, что ключ надежно сохранен и вы его не потеряете, потому что по паролю вы больше не войдете. Авторизуйтесь на сервере, затем откройте конфигурационный файл /etc/ssh/sshd_config и найдите там директиву PasswordAuthenticatin. Нужно установить ее значение в No:

sudo vi /etc/ssh/sshd_config

PasswordAuthentication no

Теперь сохраните файл и перезапустите службу ssh:

sudo service ssh restart

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

Выводы

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



2017-02-08T17:59:19
Сервер

Restrict Internet Access Based on MAC Address in MikroTik

MikroTik router has a lot of features by which a network administrator can design his network as he likes. As a network administrator, sometimes you may need to allow internet access some specific devices. If other devices try to access internet, they will be rejected by your router. For example, say, you have configured a simple network like below diagram. In this network, you have configured WAN, LAN, Gateway, DNS and NAT. Also you have created queue rules for limiting bandwidth based on IP address. Now, if you have an expert user who knows networking can change his IP address and can consume unlimited bandwidth because you have created queue rules for specific IP addresses and also you have NATed all the IP blocks. Obviously, it is not a better and secure network design. Then, how can you prevent this unauthorized access in your network? Don’t worry. MikroTik has integrated a lot of features by which you can prevent this type of unauthorized access in your router. In this article, I will show you some strategies by which you can easily block unauthorized access in your network.







Limit Internet Access in MikroTik Router




As a network administrator, you often want to block unauthorized access in your network. Applying some strategies in your MikroTik router, you can easily prevent unauthorized access in your network. These strategies can mainly be divided into below two types.




  • Single IP NAT Strategy
  • Internet Access Based on MAC Address






Single IP NAT Strategy




Single IP NAT strategy is one of the most efficient ways to block internet access through your router. Normally, you allow internet access to all the IP blocks or a specific IP block by NAT configuration. But using single IP NAT strategy, you can allow internet access to a specific IP address. So, if any user wants to use internet, he/she must inform you to allow him. Otherwise he/she cannot access internet through your router. Single IP NAT strategy was discussed in my previous article. Spend some time to study that article and try to apply single IP NAT strategy in your network. I hope, it will be helpful to block unauthorized internet access in your network.




Internet Access Based on MAC Address




MAC (Media Access Control) is a unique identity to any IP devices. So, using MAC address, you can easily prevent unauthorized access to your router. MikroTik router provides various ways by which you can easily filter MAC address of any IP device and allow internet access to this device. Usually, MAC address can be filtered by below three ways in MikroTik router and can be limit internet access.




  • Internet access based on MAC address with PPPoE server
  • Internet access based on MAC address with static DHCP server
  • MAC address binding on interface




Internet Access Based on MAC Address with PPPoE Server




PPPoE server helps to assign IP address to any user using username and password. PPPoE server is popularly used in local ISP network. MAC address filtering can easily be applied in PPPoE server while creating PPPoE secret that means client’s username name and password. If MAC address filtering is applied in PPPoE server, then username, password and MAC address must be matched to get IP address and other IP information from PPPoE server. How to enable PPPoE server and how to do MAC address filtering in MikroTik router was discussed in another article. Please spend some time to study PPPoE server configuration in MikroTik router if you wish to apply MAC address filtering with PPPoE server.




Internet access based on MAC address with static DHCP server




DHCP server is another easy way to assign user IP address and other IP information. Obviously, normal DHCP server configuration is not secure for your network. So, you should apply static DHCP server strategy where MAC address must provide to get IP address from DHCP server. But only static DHCP is not fully capable to secure your network because if any expert user assigns IP address manually, he/she will be able to access internet through your router. So, you should apply both single IP NAT strategy and static DHCP server strategy at the same time to get more secure network. To get more about static DHCP server, study my article about Static DHCP Server Configuration in MikroTik Router and try to apply in your network. I hope, this strategy will be very helpful for your network.




MAC Address Binding on Interface




MAC address binding on interface is another way to limit internet access based on MAC address. MAC address binding uses ARP (Address Resolution Protocol) property of an interface to respond to any IP device.  ARP is a protocol which is used to map IP network addresses to the hardware addresses or MAC address of any IP device. The term address resolution refers to the process of finding a hardware address or MAC address of a computer in a network. There are four types of ARP modes on an interface in MikroTik router. These are:




  • Disabled: If ARP feature is turned off on the interface, i.e., arp=disabled is used, ARP requests from clients are not answered by the router. Therefore, static arp entry that means IP address and MAC address of your router interface should be added to the client’s workstations. For example, if any user uses Windows workstation, he/she must use below arp command otherwise he/she cannot access internet through your router.
    C:> arp -s 10.5.8.254  00-aa-00-62-c6-09
  • Enabled: This mode is enabled by default on all interfaces. ARPs will be discovered automatically and new dynamic entries will be added to ARP table if this mode remains enabled.
  • Proxy-arp: This mode is used to responds to an arp request on behalf of another router. This mode is commonly used in VPN connection.
  • Reply Only: If arp property is set to reply-only on any interface, then router will only reply to ARP requests. In this case, you have to add MAC address and IP address in ARP table otherwise your user will not get internet access although they assign IP address manually in their workstation.




So, if you set ARP reply only mode on any interface, you can filter user MAC addresses on that interface because until you map MAC address and IP address in ARP table, no user will be able to get internet access through your router although any expert user assign IP address manually in their workstation. Now the question is, how you can apply MAC address binding strategy in your MikroTik router. Don’t worry, in the rest of this article I will show you proper steps to apply MAC address binding strategy in MikroTik router.




Steps to Apply MAC Address Binding Strategy in MikroTik Router




Complete configuration to apply MAC address binding strategy in MikroTik router can be divided into below three steps.




  • MikroTik router basic configuration
  • Enabling reply only ARP on LAN interface
  • Mapping MAC address to IP address in ARP table




Steps 1: MikroTik Router Basic Configuration




Before going to apply MAC binding strategy, you have to do MikroTik router basic configuration. Basic configuration means assigning WAN, LAN and DNS IP addresses and configuring Gateway and NAT. MikroTik router basic configuration using winbox was explained in another article. If you are a new MikroTik user, spend some time to study that article and complete your MikroTik router basic configuration. Then, do the next step.




Step 2: Enable ARP Reply Only Mode on LAN Interface




After completing basic configuration, you need to apply ARP reply only mode on your LAN interfaces. To enable reply only mode, do the below steps carefully.




  • Click on Interfaces menu and then double click on your LAN interface. Interface property window will appear now.
  • From this window, choose reply-only from ARP dropdown menu and then click Apply and OK button.




Now your router is ready to reply only those devices whose MAC address is mapped in ARP table. So, if you want to allow any devices to get internet access, its MAC address must be entered manually in ARP table. In the next step, I will show you how to put static ARP entry in ARP table.




Step 3: Mapping MAC address to IP address in ARP table




After enabling reply only ARP mode, you must enter MAC addresses of your LAN devices in ARP table otherwise the devices will not be able to get internet access. Follow my below steps carefully to enter MAC address and associated IP address of any device in ARP table.




  • Go to IP > ARP ARP list window will appear now.
  • Click on add new button (PLUS SIGN) from this window. New ARP window will appear.
  • Put desired IP address in IP Address input box and MAC address of any user device in MAC address input box and then chooses your LAN interface from Interface dropdown menu. Click Apply and OK button now.
  • Do the above steps for all your LAN devices.




Now your MikroTik router is fully ready for MAC address filtering. So, any user of your network cannot get internet unless you allow them by entering MAC address in ARP table.




Proper steps to bind MAC address on LAN interface has been show above. However, if you face any problem to do the above steps properly, watch my video tutorial about MAC address binding on LAN interface carefully. I hope, it will reduce your any confusion.