Как настроить односторонний scp?

У меня есть удаленный сервер my.server.com и я хотел бы разрешить другому пользователю ( stranger my.server.com ) scp-файлы на коробке.

Цели:

  • предоставить как можно меньше доступа к stranger пользователю
  • stranger не должен входить в систему вообще
  • если возможно, организовать одностороннее копирование – они должны только иметь возможность копировать файлы на сервер, а не выключать

Как я могу это сделать?

Изменить: я удалил все перекрестные сообщения. Этот вопрос существует только здесь. Пожалуйста помоги!

Edit 2: Я закончил тем, что решил нормально перевести scp . Выбрал ответ @ Ламберта, потому что он был самым полным. Спасибо за помощь!

2 Solutions collect form web for “Как настроить односторонний scp?”

Если вы хотите, чтобы все настройки ограничивали вас, я бы посоветовал использовать ProFTPd.

Используя sftp_module вы можете разрешать только безопасный сеанс. Дополнительную информацию о функциях sftp http://www.proftpd.org/docs/contrib/mod_sftp.html . В нижней части страницы приведен пример конфигурации.

Используя директиву DefaultRoot вы можете изолировать предоставленного пользователя в своем собственном каталоге

Используя структуру <LIMIT> вы можете ограничить FTP-команды, которые вы хотите разрешить, то есть READ чтобы пользователь не мог получать файлы. Подробнее см. http://www.proftpd.org/docs/howto/Limit.html .

Когда вы настраиваете конфигурацию sftp в ProFTPd, вы, вероятно, захотите, чтобы он прослушивал другой порт, чем ssh , например 2222. Настройте свой брандмауэр и / или маршрутизатор, чтобы трафик, поступающий от stranger к порту, который вы выбираете для ProFTPd. Другая возможность – запустить модуль sftp ProFTPd на порту 22 и перенастроить ssh для прослушивания на другом порту.

Пример конфигурации может выглядеть так:

 <IfModule mod_sftp.c> <VirtualHost abcd> # The SFTP configuration Port 2222 SFTPEngine on SFTPLog /var/log/proftpd_sftp.log # Configure the RSA, DSA, and ECDSA host keys, using the same host key # files that OpenSSH uses. SFTPHostKey /etc/ssh_host_rsa_key SFTPHostKey /etc/ssh_host_dsa_key SFTPHostKey /etc/ssh_host_ecdsa_key <Limit READ> DenyAll </Limit> DefaultRoot ~ users,!staff </VirtualHost> </IfModule> 

Примечание . Это не полная конфигурация ProFTPd, вы должны просмотреть и изменить конфигурацию по умолчанию ProFTPd, чтобы она соответствовала вашим потребностям.


Существует еще одна возможность просто использовать OpenSSH для этого:

Создайте пользователя- stranger и установите пароль для пользователя:

 useradd -m -d /home/stranger -s /bin/true stranger passwd stranger 

Отредактируйте файл /etc/ssh/sshd_config и проверьте, существует ли следующая строка, добавьте его, если он не существует:

 Subsystem sftp internal-sftp 

Затем добавьте блок соответствия внизу /etc/ssh/sshd_config :

 Match User stranger ChrootDirectory %h ForceCommand internal-sftp -P read,remove AllowTcpForwarding no 

Примечание : пользователь сможет перезаписать существующий файл.

Перезапустите демона sshd .

Установите для владельца каталога /home/stranger значение root :

 chown root:stranger /home/stranger 

Примечание : root должен быть владельцем и может быть единственным, у которого есть разрешение на запись, если используется ChrootDirectory. Альтернативой может быть добавить -d %u в ForceCommand internal-sftp и установить ChrootDirectory /home но пользователь сможет ChrootDirectory /home cd / и просматривать другие имена пользователей с помощью ls

Создайте каталог для загрузки для пользователя:

 mkdir /home/stranger/upload; chown stranger:stranger /home/stranger/upload 

Теперь вы можете войти в систему как пользователь- stranger используя:

 sftp stranger@somehost 

Когда вы загружаете файл, все должно быть в порядке:

 sftp> put myfile Uploading myfile to /upload/myfile myfile 100% 17 0.0KB/s 00:00 sftp> get myfile Fetching /upload/myfile to myfile /upload/myfile 0% 0 0.0KB/s --:-- ETA Couldn't read from remote file "/upload/myfile" : Permission denied 

Лично, если целью является просто разрешить копирование файлов на сервер, я бы пошел по маршруту sftp вместо scp. scp предполагает доступ к ssh, и если нет необходимости предоставлять доступ к оболочке, лучше не пытаться блокировать его только для передачи файлов.

Итак, sftp. Некоторые рекомендации. Отключите обычный FTP и вместо этого запустите что-то, что позволяет вам легко контролировать доступ, который также может работать на уникальном порту с помощью sftp. Я просто закончил настройку proftpd на сервере, например, и это делает работу довольно хорошо. Вы можете chroot доступ, чтобы пользователи приземлялись в своем домашнем каталоге и не могли перемещаться по всему вашему дереву. Вы также можете определить, какие команды вы разрешите, например, отключить «cd» целиком и т. Д. Вы также можете управлять пользователями FTP помимо учетных записей * nix, чтобы вы могли создать эту учетную запись только в контексте FTP и на самом деле не иметь учет для пользователя.

Кроме того (для подхода с поясом и подтяжками) с уровня ОС вы можете изменить права доступа к домашнему каталогу пользователей (к которому подключается их сеанс SFTP), чтобы они имели возможность писать и не читать (но опять же, вы можете ограничьте команды с помощью ftp-демона, такого как proftpd, чтобы они не могли получить также).

Я использовал другие ftp-серверы в прошлом (хотя имена меня избегают в данный момент), и все, кажется, предлагают больше контроля, чем демоны ftp по умолчанию, поэтому я уверен, что другие предоставляют аналогичную функциональность (я упоминаю только proftpd, поскольку я был просто работая над этим, не из-за каких-либо убеждений, это лучший вариант).

  • Как передать два файла через ssh?
  • Как скопировать открытый ключ на ssh-сервер?
  • Запретить запуск файла сценария удаленно с помощью SSH
  • беспроблемный доступ к rsync с ssh через cron
  • Соединения SSH, работающие в фоновом режиме, не выводятся, если несколько соединений были запущены одной и той же оболочкой
  • SSH Pub Key Login без пароля
  • ssh висит тогда тайм-аут
  • Как сохранить работу службы sshd все время и установить постоянное имя домена FQDN в CentOS7?
  • удаленная оболочка - есть ли альтернативы, отличные от ssh?
  • Откройте дверь SSH для нокаутирующего друга
  • Временное отключение сеанса ssh влияет на запущенную программу?
  • Interesting Posts

    Выполнение действия при подключении беспроводной клавиатуры

    Как изменить приглашение в Linux?

    Пользователь не может войти в каталог, хотя разрешения 777

    Установка пакета

    seq – неверная ошибка аргумента с плавающей запятой

    pip не использует прокси-сервер, установленный средой

    Как построить Live Debian CD / USB в Windows, загрузочный в режиме EFI?

    Перечислите прямые символические ссылки (ссылки, которые не указывают на другую символическую ссылку)

    Kali Linux – «пакет не имеет кандидата на установку» (также thinkpad-acpi)

    Команда для предотвращения приостановки выполнения другой команды?

    Как создать постоянный псевдоним ip, принадлежащий разным подсетям в Centos

    На каком дистрибутиве на базе Linux установлен gcc?

    Может ли pf использоваться для изменения заголовков и содержимого HTTP?

    Что такое «<Esc> Kv» в bash

    Как подождать подпроцесс, используемый для перенаправления ввода-вывода?

    Linux и Unix - лучшая ОС в мире.