Установка, настройка и подключение по SFTP
Сам написал
Установить ssh
apt install openssh-server
Добавить в автозапуск и запустить сервис
sudo systemctl enable ssh
sudo systemctl start ssh
Создать директорию для обмена
mkdir -p /data/obmen
Создать группу для sftp пользователей
addgroup sftp
Назначить права и владельца на каталог для chroot
chown root:root /data
chmod 755 /data
На каталог, куда будут загружаться файлы изменить владельца и права
chown root:sftp /data/obmen
chmod 770 /data/obmen
Теперь добавить пользвателя для подключения
useradd -m user1 -g sftp
passwd user1
Напоследок отредактируем файл конфигурации ssh /etc/ssh/sshd_config добавив в конец файла следующие строки
Match group sftp
ChrootDirectory /data
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Этот кусок конфигурационного файла будет таргетировать всех пользователей группы sftp в директорию /data с использованием chroot, т.е. пользователи не смогут попасть в директории по иерархии выше. Им будет видна и доступна только директория /data и её поддиректории.
Перезагрузить службу для применения изменений.
systemctl restart ssh
Настройка логгирования действий (опционально)
В файле /etc/ssh/sshd_config
ForceCommand internal-sftp меняем на
ForceCommand internal-sftp -l INFO -f USER
Для регистрации действий пользователя необходимо ему в ChrootDirectory пробросить /dev/log. Для этого выполнить следующие команды
mkdir /data/dev
touch /data/dev/log
chmod 511 /data/dev
chattr +i /data/dev
mount --bind /dev/log /data/dev/log
Перезагрузить сервис
systemctl restart ssh
Логи будут доступны в файле /var/log/user.log
Создание дополнительных пользователей.
Если необходимо, можно добавить еще пользователя командами
useradd -m user2 -g sftp
passwd user2
Рекомендуется для каждого экземпляра АСД создавать отдельного пользователя.
Проверка подключения
В linux
Установить пакет
apt install openssh-client
Выполнить команду
sftp user1@10.0.0.1
Ввести пароль.
В случае успешного подключения появится надпись
Connected to 10.0.0.1
sftp>
Для неинтерактивной отправки файла (одной командой из терминала) необходимо выполнить следующие действия:
Поменяться ключами между клиентом и сервером. Для этого на сервере у пользователя, которым будем подключаться, необходимо создать файл с ключами. Например
sudo -u user1 mkdir /home/user1/.ssh/
На клиенте
Сгенерировать, если еще не сгенерировали, ключ командой ssh-keygen
Содержимое файла ~/.ssh/id_rsa.pub скопировать и поместить в файл /home/user1/.ssh/authorized_keys
После данных манипуляций, можно подлкючаться пользователем user1 без ввода пароля.
sftp user1@10.0.0.1
Для неинтерактивной перелачи файлов
Создать пакетный файл, в котором прописать команды. Например
создать файл /tmp/upload.txt
Чтобы отправить файл /tmp/file необходимо в файл /tmp/upload.txt прописать
put /tmp/file /obmen/
exit
Выполнить команду для отравки
sftp -b /tmp/upload.txt user1@10.0.0.1
Топ 10 полезных команд на sftp
Проверьте текущий рабочий каталог
Команда «lpwd» используется для проверки локального текущего рабочего каталога, а команда «pwd» - для проверки удаленного рабочего каталога.
sftp> lpwd
Local working directory: /
sftp> pwd
Remote working directory: /merionet/
Список файлов
Перечисление файлов и каталогов как в локальной, так и в удаленной системе.
sftp> ls [На локальной]
sftp> lls [На удаленной]
Скачать файлы
Получение одного или нескольких файлов в локальной системе.
sftp> get SettlementReport_1-10th.xls
Fetching /merionet/SettlementReport_1-10th.xls to SettlementReport_1-10th.xls
Получить несколько файлов в локальной системе.
sftp> mget *.xls
Примечание: Как мы видим по умолчанию, команда get загружает файл в локальной системе с тем же именем. Мы можем скачать удаленный файл с другим именем, указав имя в конце (это применимо только при загрузке одного файла).
Переключение каталогов
Переключение из одного каталога в другой в локальных и удаленных местах.
sftp> cd test [На локальной]
sftp> lcd Documents [На удаленной]
Создать каталоги
Создание новых каталогов в локальных и удаленных местах.
sftp> mkdir test [На локальной]
sftp> lmkdir Documents [На удаленной]
Удалить каталоги
Удалить каталог или файл в удаленной системе.
sftp> rm Report.xls [На локальной]
sftp> rmdir sub1 [На удаленной]
Примечание: чтобы удалить любой каталог из удаленного расположения, каталог должен быть пустым.
Выход из sFTP Shell
Команда ‘!’ выкидывает нас в локальную оболочку, откуда мы можем выполнять команды Linux. Введите команду ‘exit’, после чего мы сможем увидеть подсказку sftp>.
sftp> !
[root@sftp ~]# exit
Shell exited with status 1
sftp>
Комментариев нет:
Отправить комментарий