В настоящее время у меня есть проксифицированный веб-хостинг для локальной разработки, но я пытаюсь сделать его правильным (задокументированным), чтобы я мог развернуть его практически на любом VPS-хостинге.
В настоящее время все остальное, кроме chrooted user setup, работает.
Прокси-серверы Apache и отказов SSH работают.
Если я отключу chrooting пользователя dev (для разработчика), LocalForwarding будет работать даже для пользователя dev, и я могу успешно получить доступ к отскочившему SSH-хосту и успешно использовать SFTP в перенаправленной настройке с помощью пользователя dev на localhost: 5000, который перенаправляет на порт 22 на сервере разработки.
Но после того, как я включил chrooting в sshd_config для пользователя dev, я обнаружил, что мне не хватает некоторых файлов, которые позволяют использовать SFTP для этой настройки LocalForwarded.
канал 5: ошибка открытия: ошибка подключения: устройство или ресурс занят
Затем я попытался смонтировать различные области контейнера разработки, используя mount -o bind
sudo mount -o bind /bin /home/remoteusers/bin;
sudo mount -o bind /dev /home/remoteusers/dev;
sudo mount -o bind /etc /home/remoteusers/etc;
sudo mount -o bind /lib64 /home/remoteusers/lib64;
sudo mount -o bind /opt /home/remoteusers/opt;
sudo mount -o bind /proc /home/remoteusers/proc;
sudo mount -o bind /run /home/remoteusers/run;
sudo mount -o bind /sbin /home/remoteusers/sbin;
sudo mount -o bind /srv /home/remoteusers/srv;
sudo mount -o bind /sys /home/remoteusers/sys;
sudo mount -o bind /tmp /home/remoteusers/tmp;
sudo mount -o bind /usr /home/remoteusers/usr;
sudo mount -o bind /var /home/remoteusers/var;
Пока бесполезно. Затем я попал в / lib, выполнив следующее.
sudo mount -o bind /lib /home/remoteusers/lib
Затем сообщение об ошибке изменилось с предыдущего ресурса занято на
канал 5: ошибка открытия: ошибка подключения: временная ошибка в разрешении имен
При установке обоих, / lib и /и т.д с помощью
sudo mount -o bind /etc /home/remoteusers/etc
sudo mount -o bind /lib /home/remoteusers/lib
ssh -v
возвращается
debug1: канал 5: бесплатно: direct-tcpip: порт прослушивания 5000 для порта 22 localhost, подключение с порта 127.0.0.1 38519 к порту 5000 127.0.0.1, nchannels 6
Так что это более исправлено, если что-то находится в папке / etc в chrooted месте. Тем не менее мой клиент SFTP говорит
Ошибка: получен неожиданный конец файла от SFTP-сервера.
Ошибка: не удалось подключиться к серверу
Мне теперь интересно, как работает все остальное, кроме chroot (ed setup), что мне не хватает? Теперь мне нужно выяснить, как заставить chroot включать недостающий фрагмент, чтобы мне не нужно было делать уязвимой всю файловую систему контейнера разработки вместо того, чтобы открывать только chroot.
Я что-то пропустил?
Карта хостов:
MAINHOST (running all the containers) {
Logins {
admin
bounce
}
PROXY-CONTAINER ("Proxy") { }
DEVELOPMENT-CONTAINER ("Development") {
Logins {
admin
dev
}
}
}
Если кому интересно, могу опубликовать документацию на Google Диске.
(Я запускаю настройку в VirtualBox на том же настольном клиенте).
Есть какая-то ошибка. Заменить Subsystem
линия в /etc/ssh/sshd_config
:
+ Изменить
Subsystem sftp /usr/lib/openssh/sftp-server
к
Subsystem sftp internal-sftp
tmp
from user access sudo rm -v /home/remoteusers/tmp/*
sudo chown sshd:root /home/remoteusers/tmp
sudo chmod 1700 /home/remoteusers/tmp
Скопируйте важные файлы из /etc
к chroot /home/remoteusers/etc
sudo cp -a -v /etc/{bash.bashrc,group,hostname,hosts,passwd} /home/remoteusers/etc/
sudo cp -a -v /run/systemd/resolve/stub-resolv.conf /home/remoteusers/etc/resolv.conf
sudo chmod 1775 /home/remoteusers/etc/resolv.conf
/home/chroot {
d 755 bin {
755 bash
755 ls
755 nano
}
d 755 etc {
644 bash.bashrc
644 group
644 hostname
644 hosts
644 passwd
1775 resolv.conf (owned by systemd-resolve)
}
d 755 home {
d 755 dev {
- Mounted /home/dev
}
}
d 755 lib {
755 libcre.so.3
755 libpthread.so.0
755 libselinux.so.1
d 755 terminfo {
d ...
}
d 755 x86_64-linux-gnu {
755 libc.so.6
644 libdl.so.2
644 libncursesw.so.5
644 libnsl.so.1
644 libnss_compat.so.2
644 libnss_files.so.2
644 libnss_nis.so.2
644 libtinfo.so.5
}
}
d 755 lib64 {
755 ld-linux-x86-6.so.2
}
d 1700 tmp { } (owned by sshd:root)
d 755 usr {
d 755 bin {
755 groups
755 id
755 locale-check
755 whoami
}
}
}
sudo service ssh restart