SSH (Secure Shell)

Server configuration is in /etc/ssh/sshd_config
Client configuration is in /etc/ssh/ssh_config

ssh-keygen #Генеруємо SSH ключ. По дефолту кладеться в ~/.ssh/

Добавляємо свій ключ на віддалений сервер, при умові що ми маємо доступ до відаленого сервера по SSH:
ssh-copy-id -i ~/.ssh/mykey.pub user@server
Якщо немає доступу до сервера по SSH, то копіюємо вміст публічного ключа або пересилаємо вміст поштою та добавляємо в файл на сервері:
~/.ssh/authorized_keys

ssh user@server -i ~/.ssh/mykey # Зєднання якщо вказаний ключ – встановлюється швидше
ssh -p2222 user@server # Явно вказуємо по якому порту підключатися
ssh -oPort=2222 user@server # Альтернативний варіант, який може використовуватись в конфігураційному файлі ~/.ssh/config

Конфігурація рівня користувача зберігається в файлі:
~/.ssh/config
Конфігурація рівня системи:
/etc/ssh/sshd_config та /etc/ssh/ssh_config

~/.ssh/config

Host 192.168.1.1
User Fox # при підключенні до хоста 192.168.1.1 буде використовуватись логін Fox

Host 192.168.1.*
User Fox # при підключенні до мережі192.168.1.0 буде використовуватись логін Fox

Host *.com
User Fox # при підключенні до хостів в домені .com буде використовуватись логін Fox

Host stage1
Hostname work.stage01.eu.central.example.host.com
User Fox # Створює аліас, щоб не вводити довгу назву сервера. Тепер можна використовувати ssh stage1 замість ssh work.stage01.eu.central.example.host.com

Більш повний файл конфігурації:

Host server
Hostname 192.168.1.1
Port 22
User Fox
IdentityFile ~/.ssh/fox_key

chmod 600 ~/.ssh/config # змінюємо права для файла конфігурації

ssh -J user@server1 user@server2 # Якщо сервер один використовується як бастіон хост, то з командою -J переходимо одразу на потрібний сервер
ssh -J user@server1,user@server2 user@server3 # Перескакуємо через 2 проміжних сервера. Проміжні сервери розділяємо комою.

Host server
Hostname 192.168.1.1
Port 22
User Fox
IdentityFile ~/.ssh/fox_key
Host server2
Hostname 10.10.1.2
ProxyJump Fox@172.31.23.22 #Приклад як прописати проміжний хост(бастіон хост) в файлі конфігурації

Переадресація портів:

Local Port Forwarding
Відкриває доступ до віддаленого порта 80 через локальний 8080
<PC>:8080 —-> <server1>:80
ssh -L 8080:localhost:80 fox@server1

<PC>:8080—-> <server1>—-> <server2>:80
ssh -L 8080:server2:80 fox@server1

При запуску команди, відкриється звичайне ssh зєднання, але в той же час прокинеться порт. І тепер, наприклад веб сторінка сервера буде доступна на локальній машині за посиланням localhost:8080

В config:
LocalForward 8080:localhost:80

Remote Port Forwarding

Відкриває доступ до локального порта 22 через віддалений 5432
<PC>:22 <—- <server1>:5432
ssh -R 5432:localhost:22 fox@server1

В config:
RemoteForward 22:localhost:5432

Dynamic Port Forwarding
Запускає SOCKS proxy на локальному порті 3000
<PC>:3000 —-> Server1 ——> Server2
|__________> Server3
ssh -D 3000 user@server1 # Для прикладу – встановити зєдннання та в браузері локальної машини в налаштуваннях встановити в налаштуваннях Proxy -> SOCKS host : localhost , Port: 3000. Тепер весь трафік Інтернет буде йти через Server1

################################
-f Fork the SSH process int o the background
-n Don’t read from STDIN
-N Don’t run remote commands
-T Don’t allocate a TTY
##################################
ssh -fnNT -D 3000 user@server1 # Запускає “тунель” і ховається в бекграунд. Виловити можна за допомогою команди: ps x | grep ssh

В config:
DynamicForward 3000

Інтегровані програми які використовують SSH
sftp
sftp server@192.168.1.10
sftp>put file1
sftp>bye

scp
scp file1 fox@192.168.1.15:/tmp/
scp fox@192.168.1.15:/tmp/file1 file2

Troubleshooting:

systemctl status sshd
systemctl restart sshd
journalctl -u ssh
sudo ufw status

Related posts

Leave a Comment