Linux

Стратегія для 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

About

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