Обзор tmux — это терминальный мультиплексор, позволяющий запускать в одном окне сразу несколько терминалов, удобно между ними переключаться, сохранять запущенные в нём процессы, всю историю и контекст. Крутейшая штука как для процесса разработки на локальной машине, так и для работы на удалённом сервере.
четверг, 31 января 2019 г.
Изучаем Vim, команды и макросы. Зачем текстовый редактор Vim в 2018?
Vim — мощнейший текстовый редактор, которому скоро будет 50 лет. Если вы много работаете с текстом, то вполне вероятно Vim сможет значительно облегчить вашу жизнь и упростить написание и редактирование текстов.
среда, 16 мая 2018 г.
Авторизация по SSH ключам в GitLab/Github
git pull/push просит логин и пароль на каждой операции и вы задолбались их вводить? Тогда мы идём к вам:)!Первое. Генерим ssh ключ:
ssh-keygen -t rsa -b 4096Второе. Копируем созданный ключ (файл
~/.ssh/id_rsa.pub) в глобальные настройки профиля GitLab (если ссылка не работает, идти в Settings - > SSH Keys).Третье. Проверяем, что локальный Git репозиторий работает с удаленным сервером через SSH вместо HTTP или HTTPS:
git remote -vЕсли вы видите что-то вроде
origin git@, то всё в порядке, если нет — переключаемся на SSH ссылку origin-сервера, её можно скопировать на странице репозитория в веб-интерфейсе самого Gitlab или Github:Меняем удаленный Git сервер для работы через SSH вместо HTTPS:
git remote set-url origin git@gitlab.com:dbms/vetexpert-vuejs-mobileappУра! Теперь команды
git pull/push не будут просить логина и пароля.пятница, 13 апреля 2018 г.
Работа с Timezone в Django + PostgreSQL
Задача: разобраться, как нормально работать с временными зонами в Django/PostgreSQL.
Решение.
Включить в Django
Для работы со временем и датой всегда использовать
Дело в том, что
PostgreSQL в связке с Django по умолчанию хранит все временные метки timestamp в UTC временной зоне и при использовании ORM установленная в Django временная зона перегоняется в UTC и в базе хранится как UTC.
Использование
Решение.
Включить в Django
settings.py использование временных зон и указать нужную зону:
USE_TZ=True
TIME_ZONE = 'Europe/Moscow'
Для работы со временем и датой всегда использовать
django.utils.timezone.localtime:
from django.utils import timezone
now = timezone.localtime(timezone.now())
Дело в том, что
timezone.now() отдает время в UTC метке и тут можно напороться на два не очень удобных момента: в 2 часа московской ночи timezone.now().date() покажет неверную дату, и время timezone.now().hour — не текущий час в Москве, а текущий час по UTC. Поэтому всегда используем timezone.localtime() для получения нормального Московского времени. PostgreSQL в связке с Django по умолчанию хранит все временные метки timestamp в UTC временной зоне и при использовании ORM установленная в Django временная зона перегоняется в UTC и в базе хранится как UTC.
Использование
localtime() прекрасно — в Python коде мы уверены, что это всегда именно локальное нормальное время и дата.пятница, 3 ноября 2017 г.
Бесплатное получение Dun & Bradstreet D-U-N-S Number для регистрации в Apple Developer
Проблема: хотим выложить приложение в Apple App Store от имени компании. Для этого надо зарегистрировать Apple Developer аккаунт, заплатить в Apple 99$ (ежегодно) и в процессе регистрации предоставить специальный номер Dun & Bradstreet D-U-N-S Number, который выдаёт компания Dun & Bradstreet, ведущая международный реестр организаций. В России получить такой номер стоит 12 тысяч, а нам очень не хочется платить эти деньги непонятно за что.
Решение. Apple сама бесплатно может передать данные в Dun & Bradstreet и получить номер D-U-N-S за вас. Для этого идём в https://developer.apple.com/enroll/duns-lookup/#/request, вводим свой Apple ID логин и пароль, заполняем на открывшейся странице данные о компании.
Заполнив, в самой нижней части страницы нажимаем еле заметную, спрятанную от врагов, ссылку submit your information.
После этого отправляем данные, на все соглашаемся и ждём.
Решение. Apple сама бесплатно может передать данные в Dun & Bradstreet и получить номер D-U-N-S за вас. Для этого идём в https://developer.apple.com/enroll/duns-lookup/#/request, вводим свой Apple ID логин и пароль, заполняем на открывшейся странице данные о компании.
Заполнив, в самой нижней части страницы нажимаем еле заметную, спрятанную от врагов, ссылку submit your information.
После этого отправляем данные, на все соглашаемся и ждём.
Ура!
среда, 15 марта 2017 г.
Отзывы о DBMS
Привет, друзья!
Решил собрать отзывы о нашей работе (я являюсь руководителем компании DBMS). Будем продолжать снимать новые:)
Решил собрать отзывы о нашей работе (я являюсь руководителем компании DBMS). Будем продолжать снимать новые:)
суббота, 12 ноября 2016 г.
SSH авторизация и доступ по ключу без пароля
Как мы обычно проходим SSH авторизацию?
Затем ищем где-то пароль, копируем его, и, если всё успешно, попадаем на сервер. Какие проблемы есть с таким подходом?
Во-первых, конечно, под
Теперь зайти по SSH под пользователем
Вторая проблема - использование пароля при каждом SSH соединении. Это а) неудобно (хороший пароль очень длинный и запомнить его почти невозможно, поэтому надо где-то хранить и постоянно копировать); б) небезопасно, так как пароль может быть украден, если сервер взломан. Выход из этих проблем есть - SSH авторизация и аутентификация по специальному ключу без пароля.
SSH ключ состоит из двух частей (файлов) - открытой и закрытой, открытая хранится в домашнем каталоге удалённого пользователя (
Генерируем ключи и переносим их в ~/.ssh/:
Команда спрашивает пароль на ключ, вводим произвольный пароль. Создастся два файла:
Запрашиваемый пароль - это пароль доступа пользователя
Теперь можно заходить на сервер без ввода пароля:
Если сервер не имеет домена (доступ только по IP), то, чтобы не копировать каждый раз IP, можно упросить авторизацию, создав команду логина и выполняя её:
Перезапустим терминал, появится команда
ssh root@server.ru
Затем ищем где-то пароль, копируем его, и, если всё успешно, попадаем на сервер. Какие проблемы есть с таким подходом?
Во-первых, конечно, под
root заходить на сервер сразу по SSH затея плохая и такую возможность надо сразу отключить, это опасно. Поэтому: а) создаём пользователя, например, www; б) даём ему возможность логиниться на сервер по SSH; в) логиниться root пользователю по SSH запрещаем:# создаём юзера www
adduser www
# позволяем ему выполнять sudo команды с root правами
adduser www sudo
# позволяем ему заходить по SSH, а root пользователю запрещаем
vi /etc/ssh/sshd_config
AllowUsers www
PermitRootLogin no
# выходим из vi, перезагружаем SSH сервер
sudo /etc/init.d/ssh start
Теперь зайти по SSH под пользователем
root на сервер мы не сможем, но можем зайти под пользователем www, который сможет выполнять команды с правами root, используя sudo, например, sudo vim /etc/hosts.Вторая проблема - использование пароля при каждом SSH соединении. Это а) неудобно (хороший пароль очень длинный и запомнить его почти невозможно, поэтому надо где-то хранить и постоянно копировать); б) небезопасно, так как пароль может быть украден, если сервер взломан. Выход из этих проблем есть - SSH авторизация и аутентификация по специальному ключу без пароля.
SSH ключ состоит из двух частей (файлов) - открытой и закрытой, открытая хранится в домашнем каталоге удалённого пользователя (
www в нашем случае) на удалённом сервере, закрытая в домашнем каталоге локального пользователя (то есть нашего компьютера). При таком подходе украсть открытую часть будет недостаточно для проведения аутентификации, нужна ещё закрытая часть, которая хранится у нас на локальном компьютере. Плюс - можно настроить SSH подключение к серверу без ввода пароля.Генерируем ключи и переносим их в ~/.ssh/:
mkdir keys; cd keys;
ssh-keygen -t rsa -f www
mv www* ~/.ssh/
Команда спрашивает пароль на ключ, вводим произвольный пароль. Создастся два файла:
~/.ssh/id_rsa.pub- публичный ключ, который копируется на сервер;~/.ssh/id_rsa- закрытый ключ, который остаётся у нас.
ssh-copy-id -i ~/.ssh/www www@server.ru
Запрашиваемый пароль - это пароль доступа пользователя
www на сервер, то есть заданный при создании пользователя www. Если SSH на сервере на нестандартном порту, то нужно передать порт следующим образом:ssh-copy-id '-p 443 www@server.ru'
Теперь можно заходить на сервер без ввода пароля:
ssh www@server.ru
Если сервер не имеет домена (доступ только по IP), то, чтобы не копировать каждый раз IP, можно упросить авторизацию, создав команду логина и выполняя её:
vim ~/.bashrc
alias ssh_www_server='ssh www@server'
Перезапустим терминал, появится команда
ssh_www_server, которая быстро и безопасно пустит нас на сервер - без копипаста IP сервера и пароля на SSH:ssh_www_server
Подписаться на:
Сообщения (Atom)




