From the Firehose

ssh / openssh / ssh tunnel / ssh-keygen

  • openssh — для SSH-з'єднання.
sudo pacman -S openssh sshpass net-tools
  • sshpass — для автоматизації введення пароля (опціонально).
  • net-tools — для роботи з мережевими інструментами (наприклад, ifconfig).

Налаштуйте SSH

На комп'ютері, до якого ви хочете підключитися: Запустіть SSH-сервер:

sudo systemctl start sshd
sudo systemctl enable sshd
sudo systemctl status sshd

Дізнайтеся IP-адресу цього комп'ютера:

ip a

На комп'ютері, з якого ви підключаєтеся:

ssh user@192.168.1.100

Якщо ви хочете автоматизувати введення пароля, використовуйте sshpass:

sshpass -p 'your_password' ssh user@192.168.1.10

Налаштуйте спільний доступ до файлів

Для обміну файлами між комп'ютерами можна використовувати scprsync або налаштувати спільну папку через NFS або Samba.

Використання scp:

Щоб скопіювати файл з одного комп'ютера на інший:

scp /шлях/до/файлу user@ip_address:/шлях/до/призначення

Наприклад:

scp myfile.txt user@192.168.1.100:/home/user/

Використання rsync:

rsync дозволяє синхронізувати файли між комп'ютерами:

rsync -avz /шлях/до/файлу user@ip_address:/шлях/до/призначення

Налаштуйте NFS (опціонально)

Якщо вам потрібен спільний доступ до тек, можна налаштувати NFS (Network File System).

На сервері (комп'ютері, який надає доступ до тек):

  1. Встановіть NFS:

    sudo pacman -S nfs-utils
    
  2. Налаштуйте експортовану теку у файлі /etc/exports. Додайте рядок:

    /шлях/до/папки ip_address(rw,sync,no_subtree_check)
    

    Наприклад:

    /home/user/shared 192.168.1.0/24(rw,sync,no_subtree_check)
    
  3. Перезапустіть NFS-сервер:

    sudo systemctl restart nfs-server
    

На клієнті (комп'ютері, який підключається до теки):

  1. Встановіть NFS:

    sudo pacman -S nfs-utils
    
  2. Підключіть теку:

    sudo mount -t nfs ip_address:/шлях/до/папки /шлях/до/точки/монтування
    

    Наприклад:

    sudo mount -t nfs 192.168.1.100:/home/user/shared /mnt/shared
    

Перевірте з'єднання

Переконайтеся, що всі налаштування працюють. Використовуйте ping для перевірки зв'язку між комп'ютерами:

ping ip_address

Наприклад:

ping 192.168.1.100

Інструкція зі створення SSH-ключів та копіювання їх на віддалений сервер

1. Створення SSH-ключів

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

ssh-keygen -t ed25519 -C "ваш_коментар@приклад"

> Зараз не обов’язково вводити -t ed25519, ssh-keygen вже за замовчуванням створює id_ed25519 замість id_rsa >

(Або для старіших систем використайте ssh-keygen -t rsa -b 4096 -C "ваш_email@приклад")

  • Натисніть Enter, щоб зберегти ключ у стандартній папці (~/.ssh/).
  • Введіть пароль (опціонально, але рекомендовано для додаткової безпеки).

Після виконання у папці ~/.ssh/ з’являться два файли:

  • id_ed25519 (або id_rsa) – приватний ключ (нікому не передавати!).
  • id_ed25519.pub (або id_rsa.pub) – публічний ключ (копіюємо на сервер).

2. Копіювання ключа на сервер

Використайте утиліту ssh-copy-id:

ssh-copy-id -i ~/.ssh/id_ed25519.pub username@remote_server_ip

(Замініть username та remote_server_ip на свої дані)

Якщо ssh-copy-id недоступна, скопіюйте ключ вручну:

cat ~/.ssh/id_ed25519.pub | ssh username@remote_server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"


3. Перевірка підключення

Спробуйте підключитись до сервера:asw

ssh username@remote_server_ip

Якщо все правильно, сервер не запросить пароль (якщо не встановлено пароль на ключ).


4. Вимкнення авторизації по паролю (опціонально)

Для підвищення безпеки на сервері у файлі /etc/ssh/sshd_config змініть:

PasswordAuthentication no

Потім перезавантажте SSH:

sudo systemctl restart sshd

Готово! Тепер ви можете підключатись до сервера за допомогою SSH-ключа. 🔑


Вибір стратегії для SSH-ключів

  1. Один ключ для всіх серверів
    • Переваги:
      • Простота (не потрібно керувати кількома ключами).
      • Легко додавати нові сервери (просто копіюєте той самий публічний ключ).
    • Недоліки:
      • Якщо ключ буде скомпрометовано, зламані всі сервери.
      • Немає ізоляції між серверами.
  2. Окремий ключ для кожного сервера
    • Переваги:
      • Безпека (компрометація одного ключа не впливає на інші сервери).

      • Можливість відкликати доступ лише до певного сервера.

    • Недоліки:
      • Складніше керувати (особливо якщо серверів багато).

Як створити ключ з іншою назвою (для окремих серверів)

  1. Генерація ключа зі своєю назвою

    Використовуйте параметр -f для вказання шляху до файлу:

    ssh-keygen -t ed25519 -f ~/.ssh/my_server_key -C "коментар"
    
  • Це створить:

    • Приватний ключ: ~/.ssh/my_server_key
    • Публічний ключ: ~/.ssh/my_server_key.pub
  • Копіювання ключа на сервер

    Використовуйте ssh-copy-id з явним вказанням ключа:

ssh-copy-id -i ~/.ssh/my_server_key.pub username@server_ip

Або вручну (як у вашому прикладі):

cat ~/.ssh/my_server_key.pub | ssh username@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"
  • Підключення з вибором ключа

    Додайте параметр -i до команди ssh:

ssh -i ~/.ssh/my_server_key username@server_ip

Як уникнути перезапису id_ed25519

  • SSH за замовчуванням використовує ключі зі стандартними іменами (id_ed25519, id_rsa тощо).
  • Якщо ви створюєте ключ з іншою назвою (наприклад, my_server_key), вам завжди потрібно вказувати його явно через i.

Покращений підхід: конфіг SSH (~/.ssh/config)

Щоб не вводити -i щоразу, створіть/відредагуйте файл ~/.ssh/config:

Host my-server-alias
    HostName server_ip
    User username
    IdentityFile ~/.ssh/my_server_key

Тепер підключайтесь просто:

ssh my-server-alias

Висновок: що вибрати?

  • Для персонального використання (наприклад, домашні сервери) – одного ключа достатньо.
  • Для продакшн-середовищ або критичних серверів – окремі ключі + ~/.ssh/config для зручності.
  • Якщо ви хочете максимальної безпеки – ключі на рівні серверів/проєктів + регулярне обертання (заміна) ключів.

Важливо: Ніколи не використовуйте один ключ для серверів з різним рівнем конфіденційності (наприклад, тестовий і банківський сервер).


GitHub & ssh

Створити ключ:

ssh-keygen -t ed25519 -f ~/.ssh/github -C "github_key"

Налаштувати ~/.ssh/config :

Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/github
  IdentitiesOnly yes

Додати ключ до GitHub:

  • Settings → SSH and GPG keys → New SSH key
  • В поле “Key” вставляємо вміст файла github.pub
  • Add SSH key

Перевірити з'єднання:

❯ ssh -T git@github.com
Hi peturik! You've successfully authenticated, but GitHub does not provide shell access.

Перевірити чи підключення здійснюється через https чи ssh

git remote -v 

В разі потреби змінити https на ssh

git remote set-url origin [git@github.com](mailto:git@github.com):peturik/lucia_auth_2.git 
git remote -v

Передача файлів по SSH. Інструменти.


Передача файлів по SSH є безпечним та надійним способом переміщення даних між комп'ютерами. Існує кілька основних інструментів, які використовують протокол SSH для цієї мети:

SCP (Secure Copy Protocol):

  • Призначення: SCP - це простий і ефективний інструмент для копіювання файлів та каталогів. Він використовує SSH для автентифікації та шифрування даних під час передачі.
  • Переваги: Швидкість, простота у використанні, вбудований у більшість систем на базі Unix/Linux.
  • Недоліки: Не має інтерактивних функцій (як SFTP), не підтримує відновлення перерваних передач.

Основні команди:

  • Копіювання файлу з локального комп'ютера на віддалений:
scp mydocument.txt user@example.com:/home/user/documents/
  • Копіювання файлу з віддаленого комп'ютера на локальний:
scp user@example.com:/var/log/syslog.log ./logs/
  • Копіювання каталогу (рекурсивно) з локального на віддалений:
scp -r myproject/ user@example.com:/home/user/projects/ 
  • Копіювання з нестандартним портом SSH (-P велика буква):
scp -P 2222 mydocument.txt user@example.com:/home/user/

SFTP (SSH File Transfer Protocol):

  • Призначення: SFTP є більш функціональним протоколом, ніж SCP. Він надає можливості, подібні до FTP (наприклад, перегляд каталогів, зміна дозволів), але працює поверх SSH, забезпечуючи безпеку.
  • Переваги: Безпека (шифрування), інтерактивний режим, підтримка відновлення перерваних передач, розширені можливості управління файлами.
  • Недоліки: Може бути трохи повільнішим за SCP для простих копіювань.

Основні команди (в інтерактивному режимі):

  • Підключення до віддаленого сервера:
sftp user@example.com

Після підключення ви потрапите в інтерактивну оболонку SFTP.

  • Завантаження файлу з віддаленого сервера (з SFTP-оболонки):
get віддалений_файл [локальний_шлях]

# Приклад: 
get /var/www/html/index.html 
# або 
get /var/www/html/image.jpg ./downloads/new_image.jpg
  • Вивантаження файлу на віддалений сервер (з SFTP-оболонки):
put локальний_файл [віддалений_шлях]

# Приклад: 
put mylocalfile.txt 
# або 
put ~/documents/report.pdf /home/user/reports/
  • Перегляд вмісту віддаленого каталогу:
ls
  • Зміна віддаленого каталогу:
cd /віддалений/шлях
  • Зміна локального каталогу:
lcd /локальний/шлях
  • Вихід з SFTP:
quit
  • SFTP з нестандартним портом SSH (-P велика буква):
sftp -P 2222 user@example.com

Rsync через SSH:

  • Призначення: Rsync - це потужний інструмент для синхронізації файлів та каталогів. Він особливо ефективний для передачі великих обсягів даних або для оновлення існуючих файлів, оскільки передає лише зміни, а не весь файл. Його можна використовувати через SSH для безпечної передачі.
  • Переваги: Ефективність (передає тільки зміни), підтримка інкрементного резервного копіювання, відновлення перерваних передач, широкі можливості фільтрації та виключення.
  • Недоліки: Синтаксис може бути складнішим для початківців порівняно з SCP.

Основні команди:

  • **Синхронізація локального каталогу з віддаленим:**Bash
rsync -avz --progress /шлях/до/локального/джерела/ користувач@віддалений_хост:/шлях/до/віддаленого/призначення/

# Приклад: 
rsync -avz --progress ~/mydata/ user@example.com:/home/user/backups/
  • a: архівний режим (рекурсивне копіювання, збереження дозволів, часу, символічних посилань тощо)
  • v: докладний вивід
  • z: стиснення даних під час передачі
  • -progress: показує прогрес передачі

> Важливо: Слідкуйте за слешами в кінці шляхів. Якщо ви вказуєте /шлях/до/локального/джерела/ (зі слешем), rsync скопіює вміст каталогу. Якщо /шлях/до/локального/джерела (без слеша), rsync скопіює сам каталог всередину призначення. >

  • **Синхронізація віддаленого каталогу з локальним:**Bash
rsync -avz --progress користувач@віддалений_хост:/шлях/до/віддаленого/джерела/ /шлях/до/локального/призначення/

# Приклад: 
rsync -avz --progress user@example.com:/var/www/html/ ~/web_backups/
  • **Rsync з нестандартним портом SSH:**Bash
rsync -avz -e "ssh -p 2222" /шлях/до/локального/джерела/ user@example.com:/шлях/до/віддаленого/призначення/

Загальні рекомендації для передачі файлів по SSH:

  • Використовуйте SSH-ключі для автентифікації: Це набагато безпечніше та зручніше, ніж використання паролів, особливо для автоматизованих сценаріїв.
  • Перевіряйте права доступу: Переконайтеся, що у вас є відповідні дозволи на читання вихідних файлів і запис у цільову директорію.
  • Будьте уважні до шляхів: Правильно вказуйте повні шляхи до файлів та каталогів, або використовуйте відносні шляхи відносно вашого поточного робочого каталогу.
  • Для великих файлів/директорій: Rsync є найкращим вибором завдяки його ефективності та можливості відновлення.
  • Для інтерактивного управління файлами: SFTP надає зручніші можливості для навігації та маніпуляції файлами на віддаленому сервері.
  • Для швидкого копіювання одного-двох файлів: SCP зазвичай є найпростішим і найшвидшим варіантом.

Підключення до SSH через роутер

Щоб під'єднатися до комп'ютера з локальною IP-адресою 192.168.0.26 через SSH, використовуючи публічну IP-адресу роутера (95.60.222.6), потрібно виконати наступні кроки:

1. Налаштування Port Forwarding на роутері

Оскільки комп'ютер знаходиться за NAT (роутером), потрібно перенаправити зовнішній порт на локальний:

  • Зайдіть в адмін-панель роутера (наприклад, через http://192.168.0.1).
  • Знайдіть розділ Port Forwarding / Віртуальні сервери / NAT.
  • Додайте нове правило:
    • Зовнішній порт (WAN Port): 2222 (або будь-який інший вільний, за замовчуванням SSH використовує 22, але це небезпечно).
    • Локальна IP-адреса (Internal IP): 192.168.0.26
    • Локальний порт (Internal Port): 22 (якщо на комп'ютері SSH сервер слухає інший порт – вкажіть його).
    • Протокол: TCP
    • Збережіть налаштування.

> Увага! Якщо ваш провайдер надає вам Carrier-Grade NAT (CGNAT), то Port Forwarding може не працювати. У такому разі можна використати VPN, SSH-тунель через сервер (Remote Port Forwarding) або сервіси типу Ngrok. >

2. Налаштування SSH на цільовому комп'ютері

Переконайтеся, що на комп'ютері (192.168.0.26) встановлено та запущено SSH-сервер:

Для Linux (Ubuntu/Debian)

sudo apt update && sudo apt install openssh-server -y
sudo systemctl enable --now ssh

Перевірте, чи працює SSH:

sudo systemctl status ssh

Для Windows

  • Відкрийте "Налаштування" → "Додатки" → "Додаткові компоненти".
  • Знайдіть "OpenSSH Server" і встановіть його.
  • Увімкніть службу:
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'

3. Підключення через SSH з іншого комп'ютера

Тепер можна підключатися з іншого пристрою через інтернет:

ssh username@95.60.222.6 -p 2222

(де username – ім'я користувача на цільовому комп'ютері, 2222 – порт, який ви вказали в Port Forwarding).

4. Додатковий захист (рекомендовано)

  • Змініть стандартний порт SSH (наприклад, на 2222 у файлі /etc/ssh/sshd_config).
  • Вимкніть вхід під root:
PermitRootLogin no
  • Використовуйте ключі SSH замість паролів:
ssh-keygen -t ed25519
ssh-copy-id username@192.168.0.26
  • Встановіть фаєрвол (наприклад, ufw на Linux):
sudo ufw allow 2222/tcp
sudo ufw enable

Якщо виникнуть проблеми, перевірте:

  • Чи працює SSH локально: ssh username@192.168.0.26
  • Чи відкритий порт на роутері: nc -zv 95.60.222.6 2222
  • Чи немає блокування з боку провайдера.

Доступ до android по ssh

  • Встановіть Termux з Play Store.
  • Відкрийте Termux і виконайте команди:
    • pkg install openssh
    • sshd (це запустить SSH-сервер на стандартному порту 8022. Якщо хочете змінити порт, потрібно редагувати файл /data/data/com.termux/files/usr/etc/ssh/sshd_config і перезапустити sshd).
    • ifconfig або ip a (щоб дізнатися IP-адресу вашого пристрою).
  • Задайте пароль для SSH: passwd (це встановить пароль для користувача Termux, який буде вашим SSH-логіном).
❯ ssh u0_a36@192.168.0.87 -p 8022

Назва користувача u0_a36 є системним ідентифікатором Android і зазвичай не використовується для SSH-логінів. Якщо ви використовуєте Termux, логін буде просто вашим ім'ям користувача Termux (зазвичай u0_a..., але при SSH підключенні це часто просто localhost або termux). Якщо ж додаток SSH-сервера дозволяє створювати користувачів, тоді перевірте, яке ім'я користувача він надає.

 ❯ scp linux-notes/week1/day1.md 5540:~/linux-notes/week1/    
                                                             

SSH-тунель

SSH-тунель — це спосіб захистити або переадресувати мережевий трафік через зашифроване з'єднання SSH. Він дозволяє створити "тунель" між вашим комп'ютером і віддаленим сервером, через який можна безпечно передавати дані, навіть якщо з'єднання проходить через незахищені мережі.


🔐 Види SSH-тунелів

1. Локальний тунель (Local Forwarding)

> Найпоширеніший тип. Ви переадресовуєте локальний порт на порт на віддаленому сервері або навіть на третій машині через SSH. >

Синтаксис:

ssh -L [локальний_порт]:[ціль_адреса]:[цільовий_порт] user@ssh-сервер

Приклад:

ssh -L 8080:localhost:80 user@remote.com

🡒 Ви зможете відкрити http://localhost:8080, і побачите вебсервер на remote.com:80.

2. Віддалений тунель (Remote Forwarding)

> Навпаки — трафік з віддаленого порту буде переадресований на локальний або інший комп’ютер, до якого має доступ ваш SSH-клієнт. >

Синтаксис:

ssh -R [віддалений_порт]:[локальна_адреса]:[локальний_порт] user@ssh-сервер

Приклад:

ssh -R 9090:localhost:3000 user@remote.com

🡒 Тепер на сервері remote.com доступ до localhost:3000 вашого комп’ютера через localhost:9090.

3. Динамічний тунель (Dynamic Forwarding / SOCKS-проксі)

> Цей тунель створює SOCKS-проксі. Усі програми, які підтримують SOCKS (наприклад, браузери), можуть через нього передавати трафік. >

Синтаксис:

ssh -D [локальний_порт] user@ssh-сервер

Приклад:

ssh -D 1080 user@remote.com

🡒 У браузері налаштуй проксі SOCKS5: localhost:1080. Увесь трафік піде через remote.com.

🔄 Сценарії використання

Сценарій Тип тунелю Опис
Перегляд локального сайту з інтернету Remote Віддалений порт переадресовується на локальний
Безпечне з'єднання з БД через інтернет Local Тунель з localhost на сервер БД
Обхід фаєрволів або цензури Dynamic Створює SOCKS-проксі через сервер у вільній країні
Робота з інтерфейсом веб-програми за SSH NAT Remote Надсилає вебінтерфейс "назовні"

🧰 Корисні опції SSH

Ключ Пояснення
-N Не запускати команду, лише тунель
-f Запустити у фоні
-C Стиснення (може бути корисним для повільного з'єднання)
-v Вивести відлагоджувальну інформацію (корисно при проблемах)
-L Локальний тунель
-R Віддалений тунель
-D Динамічний тунель (SOCKS-проксі)
-p Вказати порт ssh
-4 Використовувати IPv4
-6 Використовувати IPv6

Приклад запуску у фоні:

ssh -f -N -L 3307:localhost:3306 user@remote.com

🔒 Безпека

Тунелі зашифровані (через SSH).

Якщо ви відкриваєте порти назовні (особливо з -R), перевіряйте /etc/ssh/sshd_config, щоб були дозволені такі тунелі:

GatewayPorts yes
AllowTcpForwarding yes

🔄 Завершення тунелю

Щоб завершити тунель, просто:

Натисни Ctrl+C, якщо він у терміналі.

Якщо запущено з -f -N, знайди процес SSH:

ps aux | grep ssh
kill [PID]

Category: Linux | Comments: 0

Grub роздільна здатність

Grub роздільна здатність

Додати параметри GRUB_GFXMODE та GRUB_GFXPAYLOAD_LINUX до файлу /etc/default/grub

GRUB_GFXMODE=1280x1024x32  # формат: ШИРИНАxВИСОТАxГЛИБИНА_КОЛЬОРУ
GRUB_GFXPAYLOAD_LINUX=keep  # зберігати роздільну здатність при завантаженні Linux

Запустити команду grub-mkconfig -o /boot/grub/grub.cfg

Перевірка доступних режимів

У терміналі GRUB (натисніть c під час завантаження) виконайте:

videoinfo

Це покаже список підтримуваних роздільних здатностей.

Category: Linux | Comments: 0

Windows 11 in grub arch linux

  • Завантажити Arch Linux з Live USB.
  • Переконатися, що ви підключені до мережі (якщо потрібно).
  • Змонтувати розділи
  • Перейти в систему: arch-chroot /mnt
  • Встановити grub та os-prober
  • Встановити GRUB на диск.
grub-install --target=i386-pc /dev/sda  # Для BIOS 
# або
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB  # Для UEFI
  • Замінити /dev/sda на свій диск.

  • Для UEFI, переконатися, що /boot/efi змонтовано правильно.

Створення конфігураційного файлу GRUB:

  • Згенерувати конфігураційний файл GRUB:
grub-mkconfig -o /boot/grub/grub.cfg

> Переконатися, що os-prober знайшов Windows, і він з'явився в меню GRUB.

vim /boot/grub/grub.cfg

> В разі відмови os-prober - переконатися що у файлі /etc/default/grub розкоментовано рядок:

GRUB_DISABLE_OS_PROBER=false
  • Після повторити:
grub-mkconfig -o /boot/grub/grub.cfg

Category: Linux | Comments: 0

Стратегія для SSH ключів

Вибір стратегії для SSH-ключів

  1. Один ключ для всіх серверів
    • Переваги:
      • Простота (не потрібно керувати кількома ключами).
      • Легко додавати нові сервери (просто копіюєте той самий публічний ключ).
    • Недоліки:
      • Якщо ключ буде скомпрометовано, зламані всі сервери.
      • Немає ізоляції між серверами.
  2. Окремий ключ для кожного сервера
    • Переваги:
      • Безпека (компрометація одного ключа не впливає на інші сервери).
      • Можливість відкликати доступ лише до певного сервера.
    • Недоліки:
      • Складніше керувати (особливо якщо серверів багато).

Як створити ключ з іншою назвою (для окремих серверів)

  1. Генерація ключа зі своєю назвою

    Використовуйте параметр -f для вказання шляху до файлу:

    ssh-keygen -t ed25519 -f ~/.ssh/my_server_key -C "коментар"
    
  • Це створить:

    • Приватний ключ: ~/.ssh/my_server_key
    • Публічний ключ: ~/.ssh/my_server_key.pub
  • Копіювання ключа на сервер

    Використовуйте ssh-copy-id з явним вказанням ключа:bash

ssh-copy-id -i ~/.ssh/my_server_key.pub username@server_ip

Або вручну (як у вашому прикладі):

cat ~/.ssh/my_server_key.pub | ssh username@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"
  • Підключення з вибором ключа

    Додайте параметр -i до команди ssh:

    bash

ssh -i ~/.ssh/my_server_key username@server_ip

Як уникнути перезапису id_ed25519

  • SSH за замовчуванням використовує ключі зі стандартними іменами (id_ed25519, id_rsa тощо).
  • Якщо ви створюєте ключ з іншою назвою (наприклад, my_server_key), вам завжди потрібно вказувати його явно через i.

Покращений підхід: конфіг SSH (~/.ssh/config)

Щоб не вводити -i щоразу, створіть/відредагуйте файл ~/.ssh/config:

Host my-server-alias
    HostName server_ip
    User username
    IdentityFile ~/.ssh/my_server_key

Тепер підключайтесь просто:

ssh my-server-alias

Висновок: що вибрати?

  • Для персонального використання (наприклад, домашні сервери) – одного ключа достатньо.
  • Для продакшн-середовищ або критичних серверів – окремі ключі + ~/.ssh/config для зручності.
  • Якщо ви хочете максимальної безпеки – ключі на рівні серверів/проєктів + регулярне обертання (заміна) ключів.

Важливо: Ніколи не використовуйте один ключ для серверів з різним рівнем конфіденційності (наприклад, тестовий і банківський сервер).

Category: Linux | Comments: 0

sha256

Щоб отримати SHA256 хеш файлу в Linux, використовуйте команду sha256sum в терміналі.

Додайте ім'я файлу після команди, щоб отримати його SHA256 хеш.

Покроковий процес:

  1. Відкрийте термінал: У більшості дистрибутивів Linux термінал можна знайти в меню додатків або в пошуковій панелі.
  2. Використовуйте команду:
sha256sum [ім'я_файлу]

Замініть [ім'я_файлу] на фактичне ім'я файлу, для якого ви хочете отримати хеш. Наприклад,

sha256sum /path/to/my_file.txt
  1. Отримайте результат: Термінал виведе SHA256 хеш файлу. Він буде виглядати як довгий рядок цифр та літер, наприклад, 4167b599f36af0781b81563bd2179a6d35daa3145f0b6f99ac6d9ee1894b516a.

Приклад:

Якщо ви хочете отримати SHA256 хеш файлу my_file.txt, який знаходиться в каталозі Downloads, команда буде виглядати так:

sha256sum ~/Downloads/my_file.txt

Ця команда виведе SHA256 хеш цього файлу.

Category: Linux | Comments: 0

ssh key

Інструкція зі створення SSH-ключів та копіювання їх на віддалений сервер

1. Створення SSH-ключів

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

ssh-keygen -t ed25519 -C "ваш_коментар@приклад"  

(Або для старіших систем використайте ssh-keygen -t rsa -b 4096 -C "ваш_email@приклад")

  • Натисніть Enter, щоб зберегти ключ у стандартній папці (~/.ssh/).
  • Введіть пароль (опціонально, але рекомендовано для додаткової безпеки).

Після виконання у папці ~/.ssh/ з’являться два файли:

  • id_ed25519 (або id_rsa) – приватний ключ (нікому не передавати!).
  • id_ed25519.pub (або id_rsa.pub) – публічний ключ (копіюємо на сервер).

2. Копіювання ключа на сервер

Використайте утиліту ssh-copy-id:

ssh-copy-id -i ~/.ssh/id_ed25519.pub username@remote_server_ip  

(Замініть username та remote_server_ip на свої дані)

Якщо ssh-copy-id недоступна, скопіюйте ключ вручну:

cat ~/.ssh/id_ed25519.pub | ssh username@remote_server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"  

3. Перевірка підключення

Спробуйте підключитись до сервера:

ssh username@remote_server_ip  

Якщо все правильно, сервер не запросить пароль (якщо не встановлено пароль на ключ).


4. Вимкнення авторизації по паролю (опціонально)

Для підвищення безпеки на сервері у файлі /etc/ssh/sshd_config змініть:

PasswordAuthentication no  

Потім перезавантажте SSH:

sudo systemctl restart sshd  

Готово! Тепер ви можете підключатись до сервера за допомогою SSH-ключа. 🔑

Category: Linux | Comments: 0

Oh my tmux

https://github.com/gpakosz/.tmux


cd
git clone --single-branch <https://github.com/gpakosz/.tmux.git>
ln -s -f .tmux/.tmux.conf
cp .tmux/.tmux.conf.local .

Bindings

tmux may be controlled from an attached client by using a key combination of a prefix key, followed by a command key. This configuration uses C-a as a secondary prefix while keeping C-b as the default prefix. In the following list of key bindings:

  • <prefix> means you have to either hit Ctrl + a or Ctrl + b
  • <prefix> c means you have to hit Ctrl + a or Ctrl + b followed by c
  • <prefix> C-c means you have to hit Ctrl + a or Ctrl + b followed by Ctrl + c

This configuration uses the following bindings:

  • <prefix> e opens the .local customization file copy with the editor defined by the EDITOR environment variable (defaults to vim when empty)
  • <prefix> r reloads the configuration
  • C-l clears both the screen and the tmux history
  • <prefix> C-c creates a new session
  • <prefix> C-f lets you switch to another session by name
  • <prefix> C-h and <prefix> C-l let you navigate windows (default <prefix> n is unbound and <prefix> p is repurposed)
  • <prefix> Tab brings you to the last active window
  • <prefix> - splits the current pane vertically
  • <prefix> _ splits the current pane horizontally
  • <prefix> h, <prefix> j, <prefix> k and <prefix> l let you navigate panes ala Vim
  • <prefix> H, <prefix> J, <prefix> K, <prefix> L let you resize panes
  • <prefix> < and <prefix> > let you swap panes
  • <prefix> + maximizes the current pane to a new window
  • <prefix> m toggles mouse mode on or off
  • <prefix> U launches Urlscan (preferred) or Urlview, if available
  • <prefix> F launches Facebook PathPicker, if available
  • <prefix> Enter enters copy-mode
  • <prefix> b lists the paste-buffers
  • <prefix> p pastes from the top paste-buffer
  • <prefix> P lets you choose the paste-buffer to paste from

Additionally, copy-mode-vi matches my own Vim configuration

Bindings for copy-mode-vi:

  • v begins selection / visual mode
  • C-v toggles between blockwise visual mode and visual mode
  • H jumps to the start of line
  • L jumps to the end of line
  • y copies the selection to the top paste-buffer
  • Escape cancels the current operation

It's also possible to preserve the tmux stock bindings by setting the tmux_conf_preserve_stock_bindings variable to true in your .local customization file copy.




Category: Linux | Comments: 0

Tmux install

Installation

pacman -S tmux

Sane scrolling

The default scrolling behaviour runs through the previous commands instead of scrolling the terminal output. Enable sane scrolling behaviour with this config line.

~/.config/tmux/tmux.conf
set -g mouse on

Usage

Commands

Here is a summary of the most common commands that you'll want to use.

CommandFunction
tmuxStart a new session
tmux new -s nameStart a new named session
tmux lsList sessions
tmux attachAttach to the most recently used session
tmux attach -t nameAttach to a named session
tmux kill-session -t nameKill a named session

Key bindings

Tmux also have a lot of keybindings to help you manage all sessions and windows. Here are the essential bindings that you'll want to learn. The default key combination to initiate a command is Ctrl+b / control+b.

CommandFunction
Ctrl+b ?List all key bindings.
Ctrl-b dDetach from the current session
Ctrl+b %Add a new pane to the right
Ctrl+b "Add a new pane to the bottom
Ctrl+b %Split pane horizontally
Ctrl+b "Split pane vertically
Ctrl+b oSwitch to the next pane
Ctrl+b ;Move between the current and previous pane
Ctrl+b arrow-keyNavigate between the panes
Ctrl+b xCtrl+b x Close the current pane
Ctrl-b cCreate a new window
Ctrl-b wSwitch between sessions and windows


Category: Linux | Comments: 0

Конфігурація Git

Встановлення значення

git config [--local | --global] <name> <value>

Видалення значення

git config [--local | --global] --unset <name> <value>

Мінімальна конфігурація

Щоб працювати з Git, необхідно йому представитися:

git config --global user.name "my_name"
git config --global user.mail "my@mail.com

Змінити редактор:

git config --global core.editor "vim"

Додавання команди slog (en. simple log)

git config --global alias.slog "log -n 30 --graph --pretty=format:'%C(yellow)%h%Creset %Cgreen%ad%Creset %C(blue bold)%&lt;(10,trunc)%an%Creset %s%C(auto)%d%Creset' --date=format:'%Y-%m-%d %H:%M'"

Додавання команди alog (en. all log)

git config --global alias.alog "log -n 30 --graph --pretty=format:'%C(yellow)%h%Creset %Cgreen%ad%Creset %C(blue bold)%&lt;(10,trunc)%an%Creset %s%C(auto)%d%Creset' --date=format:'%Y-%m-%d %H:%M' --all"

Кольори статусу:

git config --global color.status.added green
git config --global color.status.changed yellow
git config --global color.status.untracked red

Скорочення для команд:

git config --global alias.st status
git config --global alias.sst 'status --short'

Перевірити конфігурацію:

git config [--local | --global] [--show-origin] (-l | --list)

Опція --show-origin висвітлює назву файлу, з якого було взято дане значення:

git config --show-origin -l

Також можна вивести значення конкретної опції:

git config [--local | --global] [--show-origin] --get <name>

Category: Git | Comments: 0

Alacritty for Windows

To install Alacritty on Windows, you can use Chocolatey or download pre-built binaries from the GitHub releases page. Chocolatey is a package manager for Windows, and the pre-built binaries are directly downloadable from GitHub.
 

Using Chocolatey:


 - Install Chocolatey: If you don't have it, install Chocolatey first.
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))


 - Install Alacritty: Open PowerShell as administrator and run the command

choco install alacritty


 - Configure: The default configuration file is located at

%APPDATA%\\alacritty\\alacritty.yml. (or alacritty.toml)



Using Pre-built Binaries:


  1. Download:

    Download the pre-built Alacritty binaries (Alacritty.exe and winpty-agent.exe) from the GitHub releases page.
  2. Extract:
    Extract the downloaded ZIP file to a directory of your choice (e.g., C:\Program Files).
  3. Add to PATH (Optional):
    If you want to be able to run Alacritty from the command line, add the directory where you extracted the binaries to your system's PATH environment variable.
4. Configure:
The default configuration file is located at %APPDATA%\alacritty\alacritty.yml. (or alacritty.toml)


Category: Windows | Comments: 0

About

Customize this section to tell your visitors a little bit about your publication, writers, content, or something else entirely. Totally up to you.