Пост

Совместное использование терминала Raspberry Pi

Совместное использование терминала позволяет нескольким пользователям работать в одной сессии терминала. Это полезно для совместной разработки, обучения и удаленной помощи. Рассмотрим рабочие методы организации общего доступа к терминалу.

Совместное использование терминала Raspberry Pi

Описание/Введение: Совместное использование терминала позволяет нескольким пользователям работать в одной сессии терминала. Это полезно для совместной разработки, обучения и удаленной помощи. Рассмотрим рабочие методы организации общего доступа к терминалу.

Использование tmux для совместной работы

Настройка многопользовательских сессий с tmux.

  1. Установите tmux:
    1
    2
    
    sudo apt update
    sudo apt install tmux
    
  2. Создайте новую сессию tmux:
    1
    
    tmux new-session -s shared
    

    Новая сессия tmux с приглашением командной строки

  3. Предоставьте доступ другим пользователям:
    1
    
    tmux list-sessions
    

Настройка совместного доступа к tmux

Организация многопользовательского доступа через сокет.

  1. Создайте сессию с конкретным сокетом:
    1
    
    tmux -S /tmp/shared new-session -s team-session
    
  2. Настройте права доступа к сокету:
    1
    
    chmod 777 /tmp/shared
    
  3. Другие пользователи подключаются командой:
    1
    
    tmux -S /tmp/shared attach
    

Безопасная настройка прав доступа

Организация безопасного доступа через группы.

  1. Создайте группу для пользователей:
    1
    
    sudo groupadd tmux-shared
    
  2. Добавьте пользователей в группу:
    1
    2
    
    sudo usermod -aG tmux-shared user1
    sudo usermod -aG tmux-shared user2
    
  3. Настройте права на сокет:
    1
    2
    
    sudo chgrp tmux-shared /tmp/shared
    sudo chmod 770 /tmp/shared
    

Использование screen для совместной работы

GNU Screen как альтернатива tmux.

  1. Установите screen:
    1
    
    sudo apt install screen
    
  2. Запустите сессию screen:
    1
    
    screen -S shared-session
    
  3. Включите многопользовательский режим внутри screen:
    1
    2
    
    Ctrl + a
    :multiuser on
    
  4. Добавьте пользователя:
    1
    
    :acladd username
    

Совместное использование через SSH

Организация общего доступа через SSH.

  1. Создайте общего пользователя:
    1
    2
    
    sudo adduser team-user
    sudo usermod -aG sudo team-user
    
  2. Настройте SSH доступ:
    1
    
    sudo nano /etc/ssh/sshd_config
    

    Убедитесь, что есть:

    1
    
    PasswordAuthentication yes
    
  3. Перезапустите SSH службу:
    1
    
    sudo systemctl restart ssh
    

Установка и использование терминального сервера

Установка ttyd из исходного кода.

  1. Установите зависимости для сборки:
    1
    
    sudo apt install git build-essential cmake libjson-c-dev libwebsockets-dev
    
  2. Клонируйте репозиторий ttyd:
    1
    2
    
    git clone https://github.com/tsl0922/ttyd.git
    cd ttyd
    
  3. Соберите и установите:
    1
    2
    3
    4
    5
    
    mkdir build
    cd build
    cmake ..
    make
    sudo make install
    
  4. Запустите ttyd:
    1
    
    ttyd -p 7681 bash
    

Настройка простого веб-терминала

Использование shellinabox как альтернативы.

  1. Установите shellinabox:
    1
    
    sudo apt install shellinabox
    
  2. Запустите службу:
    1
    2
    
    sudo systemctl start shellinabox
    sudo systemctl enable shellinabox
    
  3. Доступ через браузер:
    1
    
    https://ip-адрес-pi:4200
    

    Веб-браузер с работающим терминалом через shellinabox

Настройка безопасности общего доступа

Важные меры безопасности.

  1. Создавайте отдельных пользователей для общего доступа

  2. Ограничивайте права через sudoers:
    1
    
    sudo visudo
    

    Добавьте:

    1
    
    team-user ALL=(ALL) NOPASSWD: /usr/bin/apt update, /usr/bin/git
    
  3. Настройте брандмауэр:
    1
    2
    3
    
    sudo ufw allow 7681
    sudo ufw allow 4200
    sudo ufw enable
    

Мониторинг активных сессий

Отслеживание подключенных пользователей.

  1. В tmux просмотр подключенных пользователей:
    1
    2
    
    Ctrl + b
    w
    

    Список окон tmux с подключенными пользователями

  2. Просмотр активных SSH сессий:
    1
    2
    
    who
    w
    
  3. Просмотр сетевых подключений:
    1
    
    sudo netstat -tulpn | grep :7681
    

Автоматизация запуска сервисов

Настройка автоматического запуска.

  1. Создайте systemd службу для ttyd:
    1
    
    sudo nano /etc/systemd/system/ttyd.service
    
  2. Добавьте конфигурацию:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    [Unit]
    Description=ttyd terminal server
    After=network.target
    
    [Service]
    Type=simple
    User=pi
    ExecStart=/usr/local/bin/ttyd -p 7681 bash
    Restart=always
    RestartSec=5
    
    [Install]
    WantedBy=multi-user.target
    
  3. Включите службу:
    1
    2
    
    sudo systemctl enable ttyd.service
    sudo systemctl start ttyd.service
    

Управление сессиями tmux

Полезные команды для управления.

  1. Создание новой сессии:
    1
    
    tmux new -s session-name
    
  2. Подключение к существующей сессии:
    1
    
    tmux attach -t session-name
    
  3. Просмотр всех сессий:
    1
    
    tmux list-sessions
    
  4. Выход из сессии:
    1
    
    exit
    

Устранение проблем

Решение распространенных проблем.

Проблема: Нет доступа к tmux сокету

1
2
3
4
5
# Проверьте права доступа
ls -la /tmp/shared
# Пересоздайте сокет
tmux -S /tmp/shared kill-server
tmux -S /tmp/shared new-session -d

Проблема: Пользователь не видит сессию

1
2
3
4
# Проверьте группу пользователя
groups username
# Проверьте права на сокет
ls -la /tmp/shared

Проблема: Веб-терминал не доступен

1
2
3
4
# Проверьте запущен ли сервис
sudo systemctl status shellinabox
# Проверьте порт
sudo netstat -tulpn | grep 4200

Теперь вы можете организовать совместную работу в терминале Raspberry Pi используя проверенные методы. Эти решения обеспечивают надежный общий доступ к терминалу без зависимости от внешних сервисов.

Авторский пост защищен лицензией CC BY 4.0 .

© evdokimoff. Некоторые права защищены.

Использует тему Chirpy для Jekyll