Мне нужно выполнить резервное копирование сервера на мой компьютер, используя Duplicity:
duplicity /etc sftp://backup@my.dynamic.ip.address//home/backup
Прежде чем это сделать, мне нужно разрешить доступ без пароля, выполнив следующие действия:
$ ssh-keygen
$ ssh-copy-id backup@my.dynamic.ip.address
$ ssh backup@my.dynamic.ip.address
У меня вопрос, как я могу ограничить команду только этой передачей SFTP в открытом ключе, который генерируется?
command="restrict to sftp",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAA…
И поскольку я нахожусь на динамическом IP-адресе, как мне преодолеть проблему «пропущенного известного хоста» каждый раз, когда мой IP-адрес изменяется?
ssh
sftp
key-authentication
account-restrictions
Вопрос переполнен
источник
источник
Ответы:
Есть 2 способа сделать это.
1. - Ограничение через sshd
Этот метод включает в себя настройку функции SFTP в пределах вашего SSH - демона,
sshd
. Это контролируется через/etc/ssh/sshd_config
файл конфигурации. ПРИМЕЧАНИЕ. Это ограничит пользователя,backup
чтобы ему был разрешен только SFTP на сервер.2. - Ограничение авторизованными ключами
Этот метод не предусматривает никаких изменений в
sshd_config
файле. Вы можете ограничить пользователя + ключ SSH одной командой с помощьюcommand=
функции, которую вы уже упомянули в своем вопросе. Хитрость в том, какую команду вы включаете. Вы можете поместить SFTP-сервер в этуcommand=
строку, что имеет тот же эффект, что и настройка SFTP-сервера в вашемsshd_config
файле.ПРИМЕЧАНИЕ: если у пользователя есть доступ для записи
~/.ssh/authorized_keys
, он может читать и / или изменять его. Например, они могли загрузить его, отредактировать и повторно загрузить, удалив егоcommmand=...
, предоставив ему свободный доступ к командам, включая оболочку. Если у пользователя есть доступ для записи~/.ssh
, он также может просто отсоединить и заново создать файл илиchmod
доступ для записи. Существует множество возможных решений, таких как размещение~/.ssh/authorized_keys
файлов в недоступном для записи месте, например, с помощью:Это сложнее, но выполнимо, используя
from=
функцию вauthorized_keys
файле. Здесь мы ограничиваем доступ только с хостаsomehost.dyndns.org
.Дополнительные параметры после
command=
не менее важны, поскольку они еще больше ограничат использование ключа SSH.разбивка функций
from='hostname1,hostname2,''
- Ограничивает доступ с указанных шаблонов IP или имени хостаcommand='command'
- запускает указанную команду после аутентификацииno-pty
- не выделяет pty (не разрешает интерактивный вход в систему)no-port-forwarding
- не позволяет переадресацию портовno-X11-forwarding
- пользователь не сможет удалить отображаемые графические интерфейсы X11no-agent-forwarding
- пользователь не сможет пересылать через этот хост на другие внутренние хостыЧтобы избавиться от сообщения об «отсутствующих известных хостах», вы можете добавить эту опцию SSH к клиенту, когда он подключается так:
Смотрите man-страницу,
ssh_config
для получения полной информации об этом переключателе.Ограничение пользовательской оболочки
Для обоих вышеупомянутых решений вы, вероятно, захотите заблокировать
backup
пользователя, ограничив также оболочку этого пользователя в/etc/passwd
файле. Обычно вы хотите установить его наscponly
, но есть и другие варианты для этого. Посмотрите U & L Q & A под названием: « Вам нужна оболочка для SCP? », Чтобы узнать, как это сделать.Использование
/sbin/nologin
также может быть использовано, если вы решили использовать функцию chroot,sshd_config
как описано в # 1 выше. Однако, если вы решите использовать метод, описанный в # 2 , вам, вероятно, придется использоватьscponly
или что-то еще для оболочки пользователя/etc/passwd
.БОНУС - Расширение # 2 выше
Если вам нужно предоставить набор команд для этого пользователя, вы также можете сделать это. Создайте скрипт так
/home/backup/commands.sh
:Затем вы настраиваете
authorized_keys
файл так:backup
Пользователь может запустить эти команды , как так:Ссылки
источник
/sbin/nologin
не позволит серверу получить доступ к моему компьютеру с помощью SFTP. Это я попробовал.known_hosts
файле ssh . Марки дал правильное решение в своем комментарии.from
Параметр вauthorized_keys
файл на моем компьютере C ограничивает только место , из которого S можно подключить к С./sbin/nologin
работает, если я использую форс-команду,internal-sftp
вместо/usr/libexec/openssh/sftp-server
которой вы указали в сертификате. Я думаю, это две разные подсистемы. И создание каталога chroot для первого гораздо проще.Ограниченная оболочка
Вам нужно назначить ограниченную оболочку, такую как scponly или rssh.
Когда вы используете scp или sftp, вы подключаетесь к удаленному сайту через ssh, а затем удаленная оболочка выполняет процесс scp или sftp. Что вам нужно, так это ограниченная оболочка, которая позволяет только scp или sftp блокировать вход в систему.
источник