Очень часто есть необходимость загрузить или скачать файл с сервера. Как раз для этого есть очень простой и безопасный способ. Мы будем использовать протокол SFTP и пакет OpenSSH который скорей всего у вас уже стоит на сервере.
SFTP (англ.SSH File Transfer Protocol) — протокол прикладного уровня, предназначенный для копирования и выполнения других операций с файлами поверх надёжного и безопасного соединения. Протокол разработан группой IETF как расширение к SSH-2, однако SFTP допускает реализацию и с использованием иных протоколов сеансового уровня. Протокол предполагает, что он работает поверх установленного безопасного канала, что сервер уже аутентифицировал клиента и что идентификатор клиента доступен протоколу. Сервер SFTP обычно использует порт 22.
Настройка OpenSSH.
Первым делом мы настроим сервер ssh для поддержки sftp. Откроем файл настройки /etc/ssh/sshd_conf и добавим туда если нету новые опции :
Subsystem sftp /usr/libexec/openssh/sftp-server
Далее надо добавить флок Match ( User, Group, Host, LocalAddress, LocalPort, Address) Опция match определяет шаблон критериев, согласно которому будут применяться или не применяться остальные параметры. Опция Match содержит пары «ключ-значение». Она может использовать ключи User, Group, Host, Address. Их можно отделить друг от друга пробелами.
Match User root
X11Forwarding no #Запретить графическую передачу интерфейса
AllowTcpForwarding no #Запретить фарвординг TCP
AllowAgentForwarding no # Указывает, будет ли SSH-агенту переадресация разрешена.
PermitTunnel no #Specifies whether tun device forwarding is allowed. The argument must be yes, point-to-point , ethernet , or no.
sshd по умолчанию не логгирует sftp Match User root
X11Forwarding no #Запретить графическую передачу интерфейса
AllowTcpForwarding no #Запретить фарвординг TCP
AllowAgentForwarding no # Указывает, будет ли SSH-агенту переадресация разрешена.
PermitTunnel no #Specifies whether tun device forwarding is allowed. The argument must be yes, point-to-point , ethernet , or no.
Все , перезагружаем сервер sshd.
sshd по умолчанию не логирует sftp , но если требуется такая функция просто допишем к вызову sftp -l INFO
Subsystem sftp /usr/libexec/openssh/sftp-server -l INFO
В логе /var/log/auth.log у нас будут такие записи:

Клиент для Windows.
Для работы с SSH есть очень популярный пакет утилит putty. А в нем уже SFTP клиент — psftp.exe . Запускаем его из cmd.

Вводим команду open root@ip_host.name и вводим пароль пользователя.

Вот мы и в шелл оболочке sftp. Самая главная команда конечно help или ?

Ну и конечно самое главное, загрузка и скачивание файлов :
get file_name #Скачать файл
get /path/file_name
put filename # Загрузить файл
put /path/filename
Chroot.
chroot — операция изменения корневого каталога в Unix-подобных операционных системах. Программа, запущенная с изменённым корневым каталогом, будет иметь доступ только к файлам, содержащимся в данном каталоге.
Что бы настроить sftp с опцией chroot нам надо будет создать пользователя и изменить конфиг sshd :
Subsystem sftp internal-sftp
Match User test
X11Forwarding no #Запретить графическую передачу интерфейса
AllowTcpForwarding no #Запретить фарвординг TCP
AllowAgentForwarding no # Указывает, будет ли SSH-агенту переадресация разрешена.
PermitTunnel no #Specifies whether tun device forwarding is allowed. The argument must be yes, point-to-point , ethernet , or no.
####
ForceCommand internal-sftp
ChrootDirectory /home