ssh в Linux
Утилиты ssh
sshd - программа демон, ожидает подключение от клиентов.
sftp-server - передача файлов по протоколу sftp, работает совместно с демоном sshd.
ssh - клиент
ssh-keygen - создание ключей или отзыв ключей
Посмотреть логи ssh:
journalctl -u ssh.service
#or
journalctl /usr/sbin/sshd
#Вот так можно посмотреть журнал подключений пользователей
journalctl | grep -i 'Accepted password'
PermitEmptyPasswords - разрешение входа без пароля, разрешает вход с пустым паролем
Разрешение доступа для пользователей или групп
За директивой AllowUsers может следовать несколько шаблонов имен
Можно использовать шаблон имя пользователя@host
Можно использовать регулярные выражения
AllowUsers user1 user2 ...
AllowUsers *@net
DenyGroups admin
AllowGroups *
DenyUsers user1@!host1
AllowUsers *@*
AllowUsers admin@192.168.1.* admin2@192.168.2.* user1 user2
Настройка журналов
Директива LogLevel в файле sshd_config по умолчанию имеет значение INFO, однако доступны другие уровни:
DEBUGDEBUG1
DEBUG2
DEBUG3
QUIET
FATAL
ERROR
INFO
VERBOSE
Опция -o позволяет задавать параметры используемые в файле конфигурации
Опция -e записывает журнал отладки в стандартный вывод ошибок вместо системного журнала
Опция -h указывает файл, из которого читается ключ хоста
Опция -T sshd проверит правильность файла конфигурации, выведет действующую конфигурацию в стандартный вывод, затем завершит работу
Подключение
При подключении можно указать команду, тогда после ее выполнения утилита завершит соединение:
ssh root@netbash.ru -p 222 ls -la
Можно вместо ip или домена использовать короткий псевдоним, для этого просто указать его в файле /etc/hosts
ssh user@95.168.5.82 'ls -la' > test.txt
Но есть более лаконичное решение, для этого можно использовать ~/ssh/config
Host nb
HostName 65.155.5.133
Port 2222
Чтобы перенаправить вывод не в локальную, а в удаленную директорию, достаточно переставить кавычку:
ssh user@95.168.5.82 'ls -la > test.txt'
Передать публичный ключ ssh удаленной машине:
cat .ssh/id_rsa.pub | ssh root@95.165.5.83 -p 222 'cat >> .ssh/authorized_keys'
Дополнительные опции
Перенаправить вывод логов в отдельный файл:
ssh root@95.165.4.82 -p 2222 -E /tmp/test-ssh.log
Указать конфигурационный файл при подключении можно с помощью опции -F, тогда стандартный файл /etc/ssh/sshd_config будет игнорироваться, однако по умолчанию используется файл config определенный в директории пользователя ~/.ssh/config
/etc/ssh/ssh_known_hosts - файл список открытых ключей известных хостов
.ssh/known_hosts - содержит список ключей хостов в которые входил пользователь, но отсутствует в общесистемном списке известных хостов
Конфигурационные данные обрабатываются в следующем приоритете:
1 Опции командной строки
2 Файл со специфичными для пользователей настройками ~/.ssh/config
3 Файл с общесистемными настройками /etc/ssh/ssh_config
Директива Host устанавливает имя хоста, к которому будут применяться настройки
Host * - для любого хоста, Host * !test - для любого хоста, кроме
Можно указать для каждого хоста свой порт
Host 10.0.2.10
Port 2222
Если говорить о командах ssh scp sftp -o в них параметры конфигурации можно заключать в кавычки через пробел или используя символ '='
Опция -i используется для указания приватного ключа(~/.ssh/id_rsa) при подключении к удаленному серверу
Дополнительную информацию по работе с утилитой ssh и настройке sshd_config можно узнать командой man
man ssh
man ssh_config
Источники
Связанные темы
Конфигурация vsftpd в ОС Linux Ubuntu
Установка и конфигурация samba в Linux
Конфигурация openvpn сервера в Linux Alpine
Использование iptables в linux
Базовые понятие о настройках и безопасности в сети
Использование ifconfig в Linux
Настройка openvpn сервера в Linux
Полезные сетевые утилиты Linux
Использование fail2ban в Linux
Конфигурация сети в Alpine Linux