sudo !! — запустить последнюю команду от имени рута. Полезно, если вы забыли добавить sudo в начале строки.

python -m SimpleHTTPServer — сделать доступной текущую директорию по адресу http://$HOSTNAME:8000/.

^foo^bar — выполнить предыдущую команду, но с заменой. Например, попробуйте запустить echo «tprogezr», а затем ^z.

ctrl-x e — зажать Ctrl и не отпуская x, затем e. Запускает редактор, чтобы можно было удобно составить большую сложную команду.

пробел команда — выполнить команду, но не запоминать её в истории.

‘ALT+.’ или ‘ .’ — поместить аргумент последней команды в консоль.

reset — восстановить терминал после вывода в него сырых бинарных данных или других ошибок формирования текста на экране.

mount | column -t — информация о текущих смонтированных файловых системах с удобным оформлением по столбцам.

echo “ls -l” | at midnight — выполнить команду в указанное время.

curl ifconfig.me — получить свой внешний IP.

ssh -N -L2001:localhost:80 somemachine — создать туннель от 80 порта на удалённой машине до 2001 на локальной.

man ascii — быстрый доступ к таблице ASCII.

dd if=/dev/dsp | ssh -c arcfour -C username@host dd of=/dev/dsp — перенаправить звук с вашего микрофона на колонки на удалённой машине.

arecord -f dat | ssh -C user@host aplay -f dat — более современный вариант предыдущей команды.

ctrl+u […] ctrl+y — запомнить текущую набираемую команду, а затем восстановить. Например, если в процессе набора команды вы что-то забыли, а затем хотите вернуться и продолжить.

wget -random-wait -r -p -e robots=off -U mozilla http://www.example.com — выкачать весь сайт.

curl -u user:pass -d status=”Tweeting from the shell” [http://twitter.com/statuses/update.xml]; — сделать твит через curl.

(cd /tmp && ls) — перейти к директории, выполнить там команду, вернуться к предыдущей директории.

И так, для начала скачиваем софтину:

Если у Вас нет git, то делаем в Debian/Ubuntu:

apt-get install git

или в RH-based системах:

yum install git

Далее всё просто:
$ git clone https://github.com/letsencrypt/letsencrypt
$ cd letsencrypt
$ ./letsencrypt-auto --help

После выполнения вышеописанной команды letsencrypt-auto подтянет все необходимые зависимости.

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

./letsencrypt-auto certonly --manual

После чего letsencrypt спросит имя доменов, для которых мы хотим сгенерировать сертификат, их нужно указать через пробел (например, domain.com www.domain.com) и приватный ключ а также попросит разрешения на запоминание вашего IP (не знаю, зачем это) и закинуть по указанному адресу файл с определённым именем и хешем:


http://domain.com/.well-known/acme-challenge/ТутДлинноеИмяФайлаБезРасширенияНаАнглийском

с содержимым:

КакойТоХешОснованныйНаИмениФайла.ИЕщёКакомТоКлючеНаАнглийском

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

Если всё проделали правильно, то в /etc/letsencrypt/live/domain.com будут лежать файл сертификата cert.pem и ключа privkey.pem

Поскольку наиболее популярный фронтенд — это nginx, то опишу, также, как должна выглядеть секция server{} с включенной поддержкой SSL (HTTPS):

Включаем принудительно перенаправление HTTP->HTTPS

server {
listen aaa.bbb.ccc.ddd:80;
server_name domain.com www.domain.com;
location / {
return 301 https://domain.com$request_uri;


                }
}

Так выглядит виртуальный хост с указанными сертификатом и ключём:

server {
listen aaa.bbb.ccc.ddd:443 ssl;
server_name domain.com www.domain.com;
keepalive_timeout   60;
...
ssl_certificate       /etc/letsencrypt/live/domain.com/cert.pem;
ssl_certificate_key   /etc/letsencrypt/live/domain.com/privkey.pem;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers  "RC4:HIGH:!aNULL:!MD5:!kEDH";
add_header Strict-Transport-Security 'max-age=604800';
...
}

Проверяем конфиг nginx:

nginx -t

И если всё хорошо, применяем новую конфигурацию:

nginx -s reload

Enjoy your food!

Генерируем приватный ключ:

openssl genrsa -out /etc/exim/dkim.key 2048

На основе приватного, генерируем публичную часть ключа:

openssl rsa -in dkim.key -pubout

В текущей папке файл dkim.key – приватный ключ и тот хеш, что будет выведен на экран – публичный ключ.

Копируем содержимое публичного ключа и добавляем следующую запись в DNS для необходимого домена:

mailxxx._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=хеш_публичного_ключа_без_пробелов_и_переносов"

 

Копируем и добавляем её на NS сервер в зону нашего домена

 

Меняем права на приватный ключ, чтобы не было проблем с его доступностью для exim:

chmod 755 /etc/exim/dkim.key

 

Копируем конфигурационный файл exim себе, на случай некорректных изменений:

cp /etc/exim/exim.conf /home/login/

где login — ваш логин

 

Редактируем конфиг exim:

edit /etc/exim/exim.conf

 

Перед секцией remote_smtp добавляем следующее:

# DKIM
DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_FILE = /etc/exim/dkim.key
DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}}
DKIM_SELECTOR = mailxxx
DKIM_CANON = relaxed

 

В секции remote_smtp после директивы driver = smtp добавляем следующее:

dkim_domain = DKIM_DOMAIN
dkim_selector = mailxxx
dkim_private_key = DKIM_PRIVATE_KEY

 

Далее проверяем конфиг

exim -bV

 

и если нет ошибок, то перезапускаем exim:

/etc/init.d/exim restart

 

Проверяем, корректно ли работает подписывание DKIM ключём писем:

exim -v login@gmail.com

 

где вместо login — ваш логин (кэп), gmail.com — если у Вас почта на GMail

и вставляем туда примерно такой текст:

 

From: testmailbox@domain.com
To: login@gmail.com
Subject: Testing mail number1
Text of test message

 

Нажимаем Ctrl+D для отправки, смотрим лог события и выходим по Ctrl+C

В пришедшем письме в исходном сообщении (или по-другому говоря, оригинале) должна присутствовать запись о DKIM, похожая на это:

 

dkim=pass [email protected]
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=domain.com; s=mailxxx;
	h=Date:Message-Id:Subject:To:From; bh=4va6Om8rQAC1qwOFl25GK4pspjLbTsksnYxam9/wNvU=;
	b=c7gPxW6HRILCS3xhlsRYa62SkSPzoAceCzcPDWUFynmUhjvElO/xAGIy3NV3k/RUxoPp2fA2OG6y1sUS5rEbMcW+tMZ0gU4ukO03rvodp9OWHixuV+OFCHih/JjZz2eF9kPPjoT02cD/5Ldj6BlZ77jQc/FGRkQX+1+RmxpFvzM=;

 

Обновляем список доступных пакетов
apt-get update

Устанавливаем OpenVPN
apt-get install openvpn

Защита соединения в OpenVPN в данном случае строится на использовании сертификатов и ключей для сервера и для клиентов. Для их генерации в пакете OpenVPN имеются специальные скрипты, расположенные в /usr/share/doc/openvpn/examples/easy-rsa/2.0 Перед началом работы скопируем их, чтобы не изменять оригиналы.

(для старых версий openvpn)

mkdir /etc/openvpn/easy-rsa
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa

С лета 2013 года easy-rsa не входит в OpenVPN и команда указанная выше не сработает(не найдет easy-rsa), тогда делаем доп команду:

sudo apt-get install easy-rsa

и копируем из другого места:

mkdir /etc/openvpn/easy-rsa
cp -r /usr/share/easy-rsa /etc/openvpn/easy-rsa
mv /etc/openvpn/easy-rsa/easy-rsa /etc/openvpn/easy-rsa/2.0

Переходим в созданную директорию, где и займёмся генерацией ключей и сертификатов

cd /etc/openvpn/easy-rsa/2.0

Редактируем файл переменных

nano vars

Здесь нужно добавить следующие строки:

# По умолчанию здесь просто openssl, которого нет в директории, в результате чего мы получим ошибку, если не укажем существующий. Я выбрал последнюю версию. Указывается без расширения .conf.
export OPENSSL=»openssl»

# В самом низу файла добавить
export KEY_ALTNAMES=»VPNsUS»

копируем конфиг openssl

cp openssl-1.0.0.cnf openssl.cnf

Загружаем переменные

source ./vars

Очищаем от старых сертификатов и ключей папку keys и создаем серийный и индексные файлы для новых ключей

./clean-all

Подтверждаем очистку.

Создаем сертификат. По умолчанию поля будут заполняться данными, введенными ранее в vars, поэтому можно ничего не менять.

./build-ca

Создаем ключ сервера

A challenge password []: Заполняется произвольным значением, насколько я понял это нужно только для создания ключа и больше нам не потребуется.

./build-key-server server

В конце соглашаемся с запросом на подпись и добавление сертификаты в базу.

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

Создаем ключ Диффи Хельман

./build-dh

Cоздаем ключ для tls-аутификации

openvpn —genkey —secret keys/ta.key

Перемещаем сертификаты

cp -r /etc/openvpn/easy-rsa/2.0/keys/ /etc/openvpn/

Создание файла конфигурации сервера

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
cd /etc/openvpn
gunzip -d /etc/openvpn/server.conf.gz

nano /etc/openvpn/server.conf

port 1194
proto udp
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key # This file should be kept secret
dh /etc/openvpn/keys/dh2048.pem
server 172.30.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
tls-auth ta.key 0 # This file is secret
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3
tls-server
tls-auth /etc/openvpn/keys/ta.key 0
tls-timeout 120
auth SHA1
cipher BF-CBC
push «redirect-gateway def1»
push «dhcp-option DNS 8.8.8.8»
status /var/log/openvpn-status.log
log /var/log/openvpn.log

Можно запускать наш сервер OpenVPN

service openvpn restart

В /etc/sysctl.conf расскомментируем #net.ipv4.ip_forward=1 после чего
echo 1 > /proc/sys/net/ipv4/ip_forward
sysctl -p

iptables -t nat -A POSTROUTING -s 172.30.0.0/24 -o venet0:0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 172.30.0.0/24 -j SNAT —to 5.45.x.x
вместо venet0:0 указать имя внешнего интерфейса сервера (смотреть командой ifconfig),
вместо 5.45.x.x — указать внешний IP Вашего сервера,

iptables-save

Создание ключей и сертификатов

Ключи клиента создаются на сервере

Переходим в созданную директорию, где и замёмся генерацией ключей и сертификатов

cd /etc/openvpn/easy-rsa/2.0

Загружаем переменные

source vars

Создаем ключ клиента

Common Name (eg, your name or your server’s hostname) []: нужно вписать название файла ключа, в данном случае client

./build-key client

Если хотим защитить ключ паролем, то генерируем его другой командой, но в таком случае поднимать соединение автоматически не получится:

./build-key-pass client

Теперь нужно не забыть скопировать ключи (ca.crt, dh1024.pem, client.crt, client.key, ta.key) на клиента OpenVPN в /etc/openvpn/keys/

mv /etc/openvpn/keys/ /etc/openvpn/keys_backup
mv /etc/openvpn/easy-rsa/2.0/keys/ /etc/openvpn/

Создание файла конфигурации клиента, это делается на домашнем компьютере в любом простом текстовом редакторе вроде блокнота:

client
dev tun
proto udp
remote 5.45.x.x 1194
resolv-retry infinite
ca ca.crt
cert client.crt
key client.key
tls-client
tls-auth ta.key 1
auth SHA1 # по-умолчанию. Можно MD5
cipher BF-CBC
remote-cert-tls server
comp-lzo
persist-key
persist-tun

вместо 5.45.x.x — нужно вписать внешний IP вашего сервера

И сохраняем с именем client.ovpn в отдельную папку, например «C:\Program Files\OpenVPN\config»

В этой же папке, где мы сохранили client.ovpn, создаём ещё 4 пустых файла, и называем их:
ca.crt
ta.key
client.crt
client.key

и заполняем их содержимым, которое берём из (текст копируем прямо из консоли)
cat /etc/openvpn/keys/ca.crt
cat /etc/openvpn/keys/ta.key
cat /etc/openvpn/keys/client.key
cat /etc/openvpn/keys/client.crt

Сохраняем и запускаем соединение.

Добавление в автозагрузку:

update-rc.d openvpn defaults

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

Редактируем ~/.config/lxsession/Lubuntu/desktop.conf

Находим секцию и меняем значение laptop_mode на yes:

[State]
laptop_mode=yes

Сохраняем, перезагружаем систему.

Почему-то часто забываю как правильно написать формат команды в /etc/sudoers (во FreeBSD /usr/local/etc/sudoers), чтобы вызывать sudo su без ввода пароля, оставлю же это здесь:

user     ALL=(ALL) NOPASSWD: ALL

 

Для того чтобы установить VNC Server на Ubuntu linux и при этом загружался нормальны рабочий стол, а не чёрно-белая хрень, нужно выполнить следующее:

sudo apt-get install vnc4server

Если Вы используете lxde или у Вас она по крайней мере установлена, то далее нужно отредактировать файл ~/.vnc/xstartup и привести его к такому виду:

 

#!/bin/sh

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup

[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresourceslxpanel &

/usr/bin/openbox-session &
/usr/bin/lxsession -s LXDE &

Далее запускаем vncserver, вводим пароль дважды и подключаемся к хосту по адресу x.x.x.x:1, где 1 — это номер виртуального экрана.

Чтобы остановить vncserver необходимо выполнить следующее:

vncserver -kill :1

где :1 — это номер виртуального экрана.

Если нужно запустить vncserver с особым разрешением, для этого запускаем его следующим образом:

vncserver -geometry 800×600

Это всё.

Речь идёт о том, как сделать чтобы к графической среде можно было удалённо подключиться под определённым пользователем (или любым, но предварительно зарегистрированным и прописанным в конфиге), но при этом на реальном компьютере/сервере среда фактически была выключена, т.е. работала, но виртуально, на виртуальном экране (который мы при подключении прописываем через двоеточие, например 192.168.1.1:2, где «:2» — это не порт подключения, а виртуальный экран удалённого компьютера/сервера.

Установить vnc-server для Mandriva 2011.0 достаточно просто, для этого запускаем консоль, в которой пишем:

su

вводим пароль суперъюзера,

urpmi vnc-server

Ниже приводится описание шагов, необходимых для настройки постоянного рабочего стола с помощью VNC в Red Hat Enterprise Linux 4.

Первым делом следует установить пароль на VNC-сервере. Для этого зарегистрируйтесь в системе и выполните команду vncpasswd. Сервис VNC не запустится, пока вы не установите пароль.

Далее, с помощью команды su — получите права пользователя root и отредактируйте файл /etc/sysconfig/vncservers. Для настройки двух постоянных рабочих столов, одного для пользователя fred, а другого для joe (который предпочитает больший размер рабочего стола, чем fred), этот файл должен выглядеть как Пример 1. Файл /etc/sysconfig/vncservers.

# The VNCSERVERS variable is a list of display:user pairs.
#
# Uncomment the line below to start a VNC server on display :1
# as my ‘myusername’ (adjust this to your own). You will also
# need to set a VNC password; run ‘man vncpasswd’ to see how
# to do that.
#
# DO NOT RUN THIS SERVICE if your local area network is
# untrusted! For a secure way of using VNC, see
# <URL:http://www.uk.research.att.com/vnc/sshvnc.html>.

VNCSERVERS=”1:fred 2:joe”

# fred’s VNC options
VNCSERVERARGS[1]=”-geometry 1024×768″

# joe’s VNC options
VNCSERVERARGS[2]=”-geometry 1280×1024″

Пример 1. Файл /etc/sysconfig/vncservers

Для запуска всех рабочих столов VNC во время загрузки системы, активируйте сервис VNC командой chkconfig vncserver on (вы должны иметь права root). Чтобы запустить рабочие столы VNC немедленно, выполните команду service vncserver start. Оба пользователя смогут теперь подключиться клиентами VNC, fred к дисплею 1, а joe к дисплею 2.

Сессия рабочего стола по-умолчанию в VNC очень простая, использует менеджер окон twm. Вероятно, вы захотите работать с вашим обычным менеджером окон. Для этого, отредактируйте файл /home/username/.vnc/xstartup и удалите символ # из двух строк, следующих за строкой Uncomment the following two lines for normal desktop.