Отражатель VNC разработан для сокращения загрузки ЦП на сервере VNC или сетевом трафике через определенную ссылку (или оба). Отражатель действует как единственный клиент к серверу VNC, но он имеет достаточно знания протокола для действия как сам сервер VNC для нескольких клиентов.
Варианты использования:
Сервер VNC также не спешит обрабатывать много клиентов VNC: выполните отражатель VNC на отдельной машине так, чтобы загрузка нескольких клиентов была обработана той машиной вместо этого.
Office с двумя местами: выполненный сервер VNC в одном офисе и отражатель VNC в другом офисе. Клиенты в первом офисе соединяются с реальным сервером, и клиенты в другом офисе соединяются с отражателем. Это значительно уменьшит трафик в ссылке между этими двумя офисами. Если удаленный офис не будет иметь супер быстрого соединения с другим офисом, то без отражателя удаленный офис будет иметь ужасную производительность.
Если вы запускаете эту функцию от имени пользователя root, нет необходимости вызывать su
и затем запускать несколько команд. Кроме того, это все равно не сработает. Вы просто получите интерактивную оболочку, а затем сценарий продолжится, когда вы выйдете из этой оболочки.
Просто запустите нужные вам команды с помощью sudo
напрямую: (и вам не понадобится mkdir
; ssh-keygen
сделает это за вас)
sudo -u $1 -- ssh-keygen -t rsa
Я предполагаю, что вы не запускаете эту функцию, когда вошли в систему как root, учитывая все ваши использование sudo.
Я бы, вероятно, просто изменил ваш скрипт вот так.
sudo useradd -G lshell,sshlogin -b /usr/share/nginx/$1/home -d /usr/share/nginx/$1/home -m --skel /etc/httpskel -K UMASK=027 $1;
sudo chown root:root /usr/share/nginx/$1;
- sudo su - $1;
- mkdir /usr/share/nginx/$1/home/.ssh;
- ssh-keygen -t rsa;
+ sudo mkdir -p /usr/share/nginx/$1/home/.ssh;
+ sudo ssh-keygen -t rsa -f /usr/share/nginx/$1/home/.ssh/id_rsa
+ sudo chown -R /usr/share/nginx/$1/home/.ssh/
+ sudo chmod 0600 /usr/share/nginx/$1/home/.ssh/
На заметку о безопасности. Вам действительно не следует создавать или хранить закрытые ключи пользователей. Предполагается, что закрытые ключи должны быть личными, а не храниться на сервере, где они могут быть украдены.