Генерація ключів
#Це те за чим я сюди прийшов Ed25519:
1
| ssh-keygen -t ed25519 -C "admin@linuxway.com.ua"
|
Якщо потрібна сумісність зі старими системами (RSA):
1
| ssh-keygen -t rsa -b 4096 -C "your@email.com"
|
Згенерувати ключ в конкретну теку
1
| ssh-keygen -t ed25519 -f ~/.ssh/назва_ключа -C "коментар"
|
Згенерувати ключ без пароля (в скриптах якщо автоматизація)
1
| ssh-keygen -t ed25519 -f ~/.ssh/мій_ключ -N ""
|
Змінити пароль до існуючого ключа
1
| ssh-keygen -p -f ~/.ssh/my_key
|
Копіювання ключа на сервер
#Автоматично (найпростіше)
Конкретний ключ (конкретний .PUB ключ)
1
| ssh-copy-id -i ~/.ssh/мій_ключ.pub user@host
|
Якщо порт нестандартний
1
| ssh-copy-id -p 2222 user@host
|
Вручну (якщо ssh-copy-id немає) - але це дічь.
1
| cat ~/.ssh/my_key.pub | ssh user@host "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
|
Як підключититися
#Якщо порт нестандартний
З конкретним ключем
1
| ssh -i ~/.ssh/my_key user@host
|
Verbose (дебаг підключення)
1
2
3
| ssh -v user@host # рівень 1
ssh -vv user@host # рівень 2
ssh -vvv user@host # рівень 3 (максимум)
|
Як щось скопіювати
#Файл НА сервер
1
| scp file.txt user@host:/path/
|
Файл З сервера
1
| scp user@host:/path/file.txt ./
|
Теку рекурсивно
1
| scp -r ./folder user@host:/path/
|
З вказанням порту
1
| scp -P 2222 file.txt user@host:/path/
|
З конкретним ключем
1
| scp -i ~/.ssh/my_key file.txt user@host:/path/
|
Тунелі та проксі
# 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| # Local port forwarding (локальний порт → віддалений сервіс)
ssh -L 8080:localhost:80 user@host
# тепер localhost:8080 → host:80
# Local forwarding до третього хоста
ssh -L 3306:db-server:3306 user@jump-host
# тепер localhost:3306 → db-server:3306 через jump-host
# Remote port forwarding (віддалений порт → локальний сервіс)
ssh -R 9090:localhost:3000 user@host
# тепер host:9090 → твій localhost:3000
# Dynamic SOCKS proxy
ssh -D 1080 user@host
# SOCKS5 проксі на localhost:1080
# Jump host (ProxyJump)
ssh -J user@jump user@target
# Тримати тунель у фоні
ssh -fN -L 8080:localhost:80 user@host
|
SSH Config (.ssh/config)
# 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# Базовий хост
Host myserver
HostName 192.168.1.100
User admin
Port 22
IdentityFile ~/.ssh/my_key
# Через jump host
Host internal
HostName 10.0.0.5
User admin
ProxyJump jump-host
# Wildcard для групи серверів
Host 192.168.1.*
User admin
IdentityFile ~/.ssh/home_key
# Загальні налаштування для всіх
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
AddKeysToAgent yes
IdentitiesOnly yes
|
Права доступу на файли і теки .ssh
#1
2
3
4
5
| chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519 # приватний ключ
chmod 644 ~/.ssh/id_ed25519.pub # публічний ключ
chmod 600 ~/.ssh/config
chmod 600 ~/.ssh/authorized_keys
|
Налаштування sshd на стороні сервера (/etc/ssh/sshd_config)
# 1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# Основні налаштування безпеки
Port 2222 # змінити порт
PermitRootLogin no # заборонити root
PasswordAuthentication no # тільки ключі
PubkeyAuthentication yes
MaxAuthTries 3
AllowUsers admin deploy # дозволити тільки цих юзерів
# Перезапустити після змін
sudo systemctl restart sshd
# Перевірити конфіг перед рестартом
sudo sshd -t
|