Как стать автором
Обновить

Комментарии 22

Не проще ли воспользоваться в таком случае утилитой nc? (ничего устанавливать не требуется.)
Вы имеете в виду, передать файл с помощью nc?

1. SSH даёт защищённый канал.
2. У SSH куча замечательных фич для пробрасывания туннелей через NAT.
3. SSH уже работает как демон, так что я могу просто отправить данные для входа пользователя, и не лазить самому на удалённую машину для подтверждения приёма файла.
У sshd давно уже есть возможность разрешать только sftp и делать sftp chroot (шелл при этом /bin/false).
Для загрузки файла вполне достаточно.
Полезно, спасибо! Хотя я не помню, когда я использовал sftp в последний раз, scp уже на кончиках пальцев.
НЛО прилетело и опубликовало эту надпись здесь
С помощью запроса «rssh site:habrahabr.ru» легко гуглится SSH FTP (SFTP) instead/вместо FTP, и в первом же комментарии упоминается rssh.

Да, это я видел, но почему бы не рассказать, что это, и зачем оно нужно.
НЛО прилетело и опубликовало эту надпись здесь
Исправил.
НЛО прилетело и опубликовало эту надпись здесь
Можно заменить /bin/false на Sleep Dummy Shell
Что в общем еще лучше

https://www.mariovaldez.net/software/sleepshell/
/*
2  
3  #include <unistd.h>
4  #include <stdio.h>
5  #include <stdlib.h>
6  
7  #define SS_SLEEPTIME 10
8  
9  main() {
10   char *ssh_connection;
11   char *ssh_client;
12   char *ssh_tty;
13   
14   ssh_connection = getenv ("SSH_CONNECTION");
15   ssh_client = getenv ("SSH_CLIENT");
16   ssh_tty = getenv ("SSH_TTY");
17   printf ("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
18   if (ssh_connection && ssh_client) {
19     printf ("Connection: %s\nClient: %s\nTerminal: %s\n\n", ssh_connection, ssh_client, ssh_tty);
20   }
21   while (1) {
22     sleep (SS_SLEEPTIME);
23     printf ("*");
24     fflush (NULL);
25   }
26 }
27 
28 
Может быть я что-то не понимаю, но при чём здесь дефолтный шелл? ssh позволяет любую команду исполнить на своей стороне. Я, собственно, так туннели поднимал.
ЕМНИП, в ssh команды на удалённом хосте вызываются строкой:
default_shell -c command

где default_shell — то, что прописано у пользователя в passwd, а command — то, что вы передаёте вызовом ssh. Так как по умолчанию у пользователей в качестве shell стоит /bin/sh или /bin/bash, обычно всё работает.

Соответственно, rssh запретит вызывать произвольные команды таким способом.
mysecureshell интересен иным. Мне тут понадобилось ограничить пользователя отдельным набором команд и запереть его в чруте при sftp, вот тут мне связка lshell(я в курсе про то, что в прошлом году в нем были уязвимости) и mysecureshell в качестве sftp-сервера и помогли. Беда же родного opensshного chroot'а для sftp в том, что при его включении отрубается возможность заходить пользователю по ssh, а мне ее надо было сохранить.
Огорчает только, что mysecureshell давно не обновлялся и, судя по всему, заброшен авторами.
Огорчает только, что mysecureshell давно не обновлялся и, судя по всему, заброшен авторами.

Судя по тому, что его добавили в стандартные репозитории Ubuntu 15.04 или 15.10 (не помню точно), всё под контролем.
Да, действительно в 16.04 вижу в репах
apt-cache policy mysecureshell
mysecureshell:
Installed: (none)
Candidate: 2.0-2build1

Ставил в 14.04, там не было в родных репах.
Хорошая новость, спасибо, буду иметь в виду.
Ребят, а я вот что-то не понимаю. Зачем городить какой-то левый шелл, если можно создать пользователя, и в качестве шелла указать /bin/false ???
/bin/false, /bin/true не дадут ничего делать по ssh, но и scp не отработает.

Получится, что сразу после подключения пользователя (неважно, по ssh или scp) /bin/false завершится, и передача не состоится.

На деле, при вызове scp открывается ssh-соединение, после чего в удалённой консоли выполняется команда
scp -t [filename]
(если не путаю аргумент, но суть понятна). Так что пустая консоль здесь не сработает.
Да, согласен, тупанул. Проверил у себя на машинке — не работает. Но есть другой нюанс.
Если мы хотим всё сделать по уму, то нужно ставить jail на SCP, а это уже опять же лишние телодвижения. Так что очень быстро опять же не получится.
Как уже сказали выше ssh умеет ограничивать себя до sftp сам. А если вы уж запускаете/устанавливаете доп. демона, то не проще ли ftp-шник?
Всем привет!
Если включить Selinux и разрешить пользователю user_u использовать SSH среду CHROOT, вы должны включить selinuxuser_use_ssh_chroot булева.
По умолчанию отключено.
setsebool -P selinuxuser_use_ssh_chroot 1
Кто что думает об этом?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории