Назад | Перейти на главную страницу

LocalForwarding по SSH-соединению от моего настольного клиента к пользователю CHROOTED в контейнере LXD

В настоящее время у меня есть проксифицированный веб-хостинг для локальной разработки, но я пытаюсь сделать его правильным (задокументированным), чтобы я мог развернуть его практически на любом 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


Give write permissions for agent forwarding and protect 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


Basically the filesystem tree should look like following:

/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
             }
         }
}


Finally, restart sshd.

sudo service ssh restart