Передача X11 по SSH, если конфигурация сервера не позволяет его

Linux значением по умолчанию использует RAM в качестве дискового кэша. Как демонстрация, попытайтесь работать time find /some/dir/containing/a/lot/of/files > /dev/null два раза второй раз намного быстрее, поскольку каждый диск inodes кэшируется. Точка здесь - то, как использовать эту функцию ядра и остановить Вашу попытку заменить ее.

Точка должна измениться swappiness. Давайте рассмотрим три основных типа использования памяти: активные программы, неактивные программы и дисковый кэш. Очевидно, память, используемая активными программами, не должна быть выгружена, и выбор между двум другим довольно произволен. Хотели бы Вы быстрое переключение программы или быстрый доступ к файлу? Низкий swappiness предпочитает сохранять программы в памяти (даже если не используемый в течение долгого времени), и высокий swappiness предпочитает сохранять больше дискового кэша (путем свопинга неиспользованных программ). (swappiness масштаб от 0 до 100, и значение по умолчанию равняется 60),

Мое решение Вашей проблемы состоит в том, чтобы изменить swappiness на очень высокий (90-95, чтобы не сказать 100) и загрузить кэш:

echo 95 | sudo tee /proc/sys/vm/swappiness > /dev/null # once after reboot
find /your/source/directory -type f -exec cat {} \; > /dev/null

Поскольку Вы предполагаете это, у Вас должно быть достаточно свободной памяти для содержания в кэше, все исходные файлы и объектные файлы, а также компилятор, включенные файлы заголовков, связали библиотеки, IDE и другие используемые программы.

10
13.04.2017, 15:36
3 ответа

Ответ @Demi хорош, но я думаю, что его заполнение было бы большим подспорьем.

  • местный --локальная машина, обслуживающая X-сервер.
  • удаленный --удаленная машина, обслуживающая приложение, которое управляет данными, поступающими на X-сервер

Пульт/etc/ssh/sshd_config:

X11Forwarding no
X11DisplayOffset 10
X11UseLocalhost yes

Пульт ~/.Xauthorityпуст или не существует

По местному:

Xephyr -ac -screen 1280x800 -br -reset   :2 &
DISPLAY=:2 ssh  -fR 6010:/tmp/.X11-unix/X2  user@remote "DISPLAY=:10 xeyes"

Во время теста на локальном компьютере работала Ubuntu 18.05, а на удаленном — Debian Jesse.

2
27.01.2020, 20:03

Протокол X11, говорит когда говорящий с tcp портом, несколько отличающимся когда говорящий с сокетом?

Возможно, Вы могли объединить свое собственное предложенное использование ssh -R 6010:localhost:6000 для введения данных X11 по перенаправлению портов затем соедините локальную болтливость мостом между tcp портом, и X11 снабжают слушателя сокетом с nc как:

nc -l -p 6000 > /tmp/.X11-unix/X0
5
27.01.2020, 20:03
  • 1
    Да, это - идея. Но я надеялся на высказывание ответа, “вставляет это Ваш .ssh/config клиентский и это в Вашем .profile серверная сторона, и затем просто выполненный ssh B”. –  Gilles 'SO- stop being evil' 07.05.2011, 13:13
  • 2
    Существует легкое, "помещает это в Вашу конфигурацию" ответ, проблема - Вы, исключают это в Ваших квалификациях вопроса, потому что опция, в которой Вы нуждаетесь, входит в sshd_config сторону вещей на B. Вы пытаетесь работать вокруг блока, помещенного на месте, чтобы мешать непреднамеренно открывать проблему безопасности. –  Caleb 07.05.2011, 13:21
  • 3
    , для которого я нацелен (по моему опыту, очень распространенный) случай, где администратор не заботится и просто оставил настройки по умолчанию на месте. Передача X11 не запрещается политикой, это - просто неудобство безразличием системного администратора. Так или иначе передача X11 позволяет серверу нападать на клиент, таким образом запрещая его, серверная сторона не имеет большого смысла. –  Gilles 'SO- stop being evil' 07.05.2011, 13:56
  • 4
    @Gilles я согласовываю значение по умолчанию, действительно не защищает ни от чего полезного. Таким образом, мы должны лоббировать для получения значения по умолчанию, измененного в восходящем направлении? –  Caleb 07.05.2011, 14:04
  • 5
    Для меня, /tmp/.X11-unix/X0 сокет домена Unix, не FIFO, таким образом, любые концы попытки перенаправления с ENXIO: No such device. –  Samveen 05.06.2015, 08:17
  1. Разверните дополнительный X-сервер с помощью Xephyr. Это сделано для безопасности — это предотвращает компрометацию вашей удаленной системой.

  2. Используйте SSH для переадресации удаленного сокета на сокет Xephyr. SSH также поддерживает переадресацию сокетов Unix.

  3. Правильно задайте переменные среды на удаленном сервере.

2
27.01.2020, 20:03

Теги

Похожие вопросы