Цель работы: понять принцип работы SSH и его роль в администрировании.
SSH (Secure Shell) - протокол для защищённого удалённого доступа к системе по сети.
telnet,rsh,rlogin.scp,sftp);В ALT Linux используется, как правило, пакет OpenSSH (ssh-клиент и ssh-сервер).
SSH-клиент - программа, с которой вы подключаетесь к серверу:
sshв терминале.SSH-сервер - служба на удалённой машине:
sshd,/etc/openssh/sshd_config.Методы аутентификации:
Проверка наличия ssh-клиента
На клиентской машине:
ssh
Если показался список опций - клиент установлен
На сервере ALT Linux (от root или через sudo, если настроен):
apt-get update
apt-get install openssh-server
Проверка статуса службы:
service sshd status
# или
systemctl status sshd
Запуск и включение автозапуска:
service sshd start
# или
systemctl start sshd
systemctl enable sshd
Формат команды:
ssh пользователь@ip_адрес
Примеры:
ssh root@192.168.1.10
ssh student@server.alt
При первом подключении вы увидите сообщение о «fingerprint» сервера (отпечаток ключа) — его нужно принять (yes), чтобы добавить сервер в ~/.ssh/known_hosts.
Основной файл: /etc/openssh/sshd_config
Изменения должны выполняться с правами root!
Port 22 # порт, по умолчанию 22
PermitRootLogin yes/no # разрешён ли вход root по SSH
PasswordAuthentication yes/no # вход по паролю
PubkeyAuthentication yes/no # вход по ключам
AllowUsers user1 user2 # список разрешённых пользователей (если нужно)
После изменения конфигурации — перезапустить sshd:
service sshd restart
# или
systemctl restart sshd
Зачем ключи?
На клиентской машине:
ssh-keygen -t ed25519 #ed25519 это тип шифрования и ни на что не влияет, можно ввести команду и без этого параметра
Enter file in which to save the key - путь к файлу ключа (по умолчанию~/.ssh/id_ed25519) - нажимаем Enter.Enter passphrase— можно задать пароль на закрытый ключ, либо оставить пустым (сейчас лучше оставить его пустым).Будут созданы файлы:
~/.ssh/id_ed25519~/.ssh/id_ed25519.pubВариант 1 (удобный, если есть утилита):
ssh-copy-id user@192.168.1.10 #ip-адрес хоста, на который вы будете подключаться по ssh ключу
Он сам добавит ваш id_ed25519.pub в ~/.ssh/authorized_keys на сервере.
Вариант 2 (вручную):
Скопировать содержимое файла~/.ssh/id_ed25519.pub:
cat ~/.ssh/id_ed25519.pub
Подключиться на сервер по паролю:
ssh user@192.168.1.10
На сервере:
mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys
Вставить туда содержимое ключа (одной строкой), сохранить.
Выставить права:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
После этого можно разлогиниться и проверять вход по ключу:
ssh user@192.168.1.10
На сервере, в /etc/openssh/sshd_config:
PasswordAuthentication no
PubkeyAuthentication yes
Перезапустить sshd:
systemctl restart sshd
scp — копирование через SSH (аналог cp по сети)
Формат:
scp [опции] источник назначение
Примеры:
С клиента на сервер:
scp file.txt user@192.168.1.10:/home/user/
С сервера на клиента:
scp user@192.168.1.10:/home/user/file.txt ~/Downloads/
Копирование каталогов:
scp -r project/ user@192.168.1.10:/home/user/
sftp — интерактивное FTP-подобное соединение по SSH
sftp user@192.168.1.10
Команды внутри sftp:
ls— список файлов на сервереlcd— смена локального каталогаcd— смена удалённого каталогаget file— скачать файлput file— загрузить файл на серверexit— выходМожно не открывать интерактивную сессию, а выполнить одну команду на сервере:
ssh user@192.168.1.10 "uname -a"
ssh root@192.168.1.10 "systemctl status sshd"
Это удобно для скриптов и автоматизации.
Настроить на сервере ALT Linux SSH-сервер (если ещё не настроен).
Создать на клиенте новую пару ключей специально для этого сервера (например,~/.ssh/id_alt_rsa), указав имя файла при генерации:
ssh-keygen -t rsa -f ~/.ssh/id_alt_rsa
Добавить созданный открытый ключ на сервер в~/.ssh/authorized_keysвыбранного пользователя.
Настроить на клиенте файл~/.ssh/configтак, чтобы можно было подключаться командой:
ssh alt-lab
Пример содержимого~/.ssh/config:
Host alt-lab
HostName 192.168.1.10
User user
IdentityFile ~/.ssh/id_alt_rsa
Port 22
На сервере вsshd_config:
AllowUsers.Используяscp, передать на сервер каталогlab_ssh/с минимум двумя файлами, а затем скачать его обратно под другим именемlab_ssh_copy/.
~/.ssh/known_hosts?root?