Позвольте SCP, но не фактический вход в систему с помощью SSH

Очевидно:

Ctrl-X: сокращение
Ctrl-C: копия
Ctrl-V: вставка

те, я использую большинство!

Некоторые другие:

  • В большинстве текстовых редакторов:

    Ctrl-F: найти
    Ctrl-H: Найти и заменить

  • В большинстве браузеров:

    Ctrl-T: Откройте новую вкладку
    Щелкните при нажатой клавише Ctrl по ссылке или Средней кнопке мыши на ссылке: откройте ссылку на новой вкладке

62
задан 12 November 2009 в 04:44
8 ответов

оболочка rssh (http://pizzashack.org/rssh/) разработана для точно этой цели.

Так как RHEL/CentOS 5.2 не включает пакет для rssh, Вы могли бы посмотреть здесь для получения об/мин: http://dag.wieers.com/rpm/packages/rssh/

Использовать его просто установило его как оболочку для нового пользователя как это:

useradd -m -d /home/scpuser1 -s /usr/bin/rssh scpuser1
passwd scpuser1

.. или измените оболочку для существующей как это:

chsh -s /usr/bin/rssh scpuser1

.. и редактирование /etc/rssh.conf для конфигурирования оболочки rssh - особенно не комментируют allowscp строка для включения доступа SCP для всех rssh пользователей.

(Можно также хотеть использовать chroot для хранения пользователей содержавшимися в их домах, но это - другая история.)

45
ответ дан 28 November 2019 в 19:32
  • 1
    that' s потрясающий - I' ve, ища что-то вроде этого некоторое время, также –  warren 12 November 2009 в 06:44
  • 2
    идея позади rssh хороша, но iirc rssh wasn' t точно чудо безопасности в программировании условий. Простой Google на ' rssh exploit' урожаи больше результатов, чем я доволен... –  wzzrd 12 November 2009 в 09:48
  • 3
    scponly является более или менее тем же самым также и по-видимому менее склонный к использованию: sublimation.org/scponly/wiki/index.php/Main_Page –  François Feugeas 12 November 2009 в 12:52

Я - путь поздно к этому, но Вы могли использовать ssh ключи и указать точную команду, позволенную в их ~/.ssh/authorized_keys файл, например.

без перенаправления портов, без имуществ, управляйте = "scp исходная цель" ssh-dss...

Вы, возможно, должны использовать PS для на цели для установки правильных настроек команды.

PS: Если Вы запускаете тест scp команда с, "-v" Вы видите что-то вроде этого

debug1: Sending command: scp -v -t myfile.txt

Вы отметите, что "-t" является недокументированной scp опцией, используемой программой на дальнем конце. Это дает Вам идею того, что необходимо поместить в authorized_keys.

Править: Можно найти больше информации (с несколькими ссылками) в этом вопросе о StackOverflow.

Вот рабочий пример этого, поскольку пользователь назвал backup_user на стороне сервера.

~backup_user/.ssh/authorized_keys содержание на стороне сервера (еще с некоторыми ограничениями безопасности):

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="scp -v -r -d -t ~/CONTENT" ssh-rsa AAAAMYRSAKEY...

Создайте ссылку в ~backup_user/, который связывается с каталогом, где содержание должно быть доступным.

$ ln -s /path/to/directory/with/accessible/content ~backup_user/CONTENT

Теперь, от стороны клиента, следующая команда должна работать:

scp -v  -r  -P 2222 -i .ssh/id_rsa_key_file path/to/data backup_user@SERVER:~/CONTENT

Что эта команда сделайте:

  • Это отображает подробную информацию (дополнительный: можно удалить -v и от команды и от authorized_keys файла)
  • Это рекурсивно копирует содержание пути/к/данных. (дополнительный: можно удалить -r и от команды и от authorized_keys файла, если Вы не хотите делать рекурсивную копию),
  • Это использует порт 2222 для соединения с сервером (дополнительный: можно удалить -P 2222 от команды)
  • Это использует и файл идентификационных данных для автоматизации соединения (дополнительный: можно удалить -i .ssh/id_rsa_key_file
  • Содержание path/to/data будет скопирован в /path/to/directory/with/accessible/content/

Для создания копии файла (или несколько) от сервера до клиента необходимо создать сценарий оболочки, который обрабатывает это, как описано здесь

38
ответ дан 28 November 2019 в 19:32

Я немного опаздываю стороне, однако я предложу, чтобы Вы смотрели на ForceCommand директива OpenSSH.

Subsystem sftp internal-sftp

Match group sftponly
         ForceCommand internal-sftp

Предоставленный, это - SFTP и не SCP, но он достигает той же цели, более надежно, чем с ограниченной оболочкой. Кроме того, Вы можете chroot пользователь, если Вы хотите.

31
ответ дан 28 November 2019 в 19:32

Я использую MySecureShell, чтобы сделать это. Можно настроить другие ограничения также.

https://github.com/mysecureshell/mysecureshell

Предельные соединения с SFTP/SCP только. Никакой доступ оболочки.

6
ответ дан 28 November 2019 в 19:32

Мы используем оболочку psudo, названную scponly на наших безопасных FTP-серверах для пользователей, мы только хотим смочь в scp файлы, но не войти в систему.

2
ответ дан 28 November 2019 в 19:32

Я рекомендовал бы использовать scponly.

Это - ограниченная оболочка, которая позволяет пользователям делать, на что это походит, файлы SCP к серверу, но не на самом деле входят в систему. Информация и загрузки исходного кода для программного обеспечения доступны здесь, и предварительно скомпилированные RPM-пакеты доступны через ВКУСНЫЕ Репозитории EPEL.

После того, как установленный, необходимо будет настроить каждую учетную запись пользователя, к которой Вы хотите ограничить доступ, использовать недавно установленную ограниченную оболочку. Можно сделать это вручную через/etc/passwd или использовать следующую команду: usermod -s /usr/bin/scponly USERNAME

7
ответ дан 28 November 2019 в 19:32

Это не самое изящное решение, но вы можете добавить что-то подобное в пользователей .bashrc

if [ "$TERM"  != "dumb" ]; then
  exit
fi

Я обнаружил, что пользователи SCP получают ТЕРМИН "тупой", а другие будут обычно получают vt100.

Я полагаю, что пользователь мог бы использовать scp через новый .bashrc, что делает это не лучшим решением, но для быстрого и грязного решения это сработает

0
ответ дан 28 November 2019 в 19:32

Я нашел хороший способ - использовать функцию command = "..." файла authorized_keys. (Предложено мне на этой странице )

Команда, которую вы запустите, будет проверять аргументы, начинающиеся с scp (и rsync).

Вот файл authorized_keys:

# authorized_keys
command="/usr/local/bin/remote-cmd.sh" ssh-rsa.....== user@pewpew

Вот содержимое remote-cmd.sh:

#!/bin/bash
# /usr/local/bin/remote-cmd.sh
case $SSH_ORIGINAL_COMMAND in
 'scp'*)
    $SSH_ORIGINAL_COMMAND
    ;;
 'rsync'*)
    $SSH_ORIGINAL_COMMAND
    ;;
 *)
    echo "Access Denied"
    ;;
esac

. Думаю, вам, вероятно, все равно потребуется защитить файл authorized_keys пользователя, но моей целью было иметь ключ без пароля, который я мог бы использовать для резервных копий, без необходимости создавать совершенно новый пользователь, и у ключа нет оболочки (хорошо, легко)

2
ответ дан 28 November 2019 в 19:32

Теги

Похожие вопросы