Возможности ssh в Linux

Возможности ssh в Linux

    Использование графических программ удаленного компьютера

    В конфиге ssh /etc/ssh/sshd_config необходимо включить систему X11

    X11Forwarding yes

    После перезапустить сервер ssh
    В отличии от удаленного сервера на клиенте должен быть установлен X11

    sudo apt install xorg openbox

    На сервере должен быть установлен как минимум xauth ( для конфигурации Xauthority)

    Xauthority - это sudo apt install xauth

    Чтобы использовать графические программы удаленного хоста, необходимо подключиться используя опцию -X

    ss-X toly@10.1.0.107 virtualbox
    Редактирование файлов через ssh
    vim scp://root@192.168.61.171//root/nodemail.sh

    Здесь используется двойной слэш // вместо :/path/path/....
    Файл копируется в /tmp локальной машины, после редактирования выгружается в удаленную дирректорию, по словам автора статьи, такой фокус работает только в linux

    Сравнение файлов между серверами
    ssh root@192.168.61.171 "cat /etc/ssh/sshd_config" | diff - /etc/ssh/sshd_config

    Здесь используется вывод команды cat на удаленной машине, который передается утилите diff через конвейер(труба) в качестве второго параметра, для этой возможности используется оператор '-'
    Второй способ реализации:

    diff /etc/ssh/sshd_config <(ssh root@192.168.61.171 "cat /etc/ssh/sshd_config")

    Сравнение файлов между двумя удаленными серварами:

    diff <(ssh root@192.168.61.171 "cat /etc/ssh/sshd_config") <(ssh root@95.165.5.82 -p 2222 "cat /etc/ssh/sshd_config")

    Однако этот способ потерпит неудачу, если для входа на сервера потребуется пароль

    VNC через SSH

    VNC - это система удаленного доступа к рабочему столу через протокол RFB
    Вместо VNC в примере используется прокол RDP и утилита xrdp, установленная на сервере и клиенте
    Создание туннеля через ssh:

    ssh toly@10.2.2.121 -L 3000:localhost:3389

    Обратный трафик через ssh туннель будет поступать с порта 3389 удаленной машины на порт 3000 локальной машины
    Теперь можно запустить rdp(vnc) клиент на локальной машине используя localhost:3000

    xfreerdp /f /u:toly /p:passw12345 /v:localhost:3000

    После успешного подключения должен появиться рабочий стол удаленного хоста

    Сохранение выполнения команды при закрытии соединения

    Программа подобная bash при заупуске использует набор скриптов для создания своего рабочего окружения.
    При подключениии по ssh к другому пользователю удаленной машины, создается псевдотерминал, который подключается к оболочке с входом Login shell
    Есть еще без входа в оболочку non login shell
    Чтобы увидеть какой тип входа используется в данный момент:

    ~$ echo $0 -bash

    Перед названием используемой оболочки стоит знак '-' , это говорит о том, что для входа используется login shell
    login shell - предлагает пользователю войти в систему, используя /bin/login/ и /etc/passwd, это первый процесс, который выполняется от id текущего пользователя
    Процесс входа вызывает /etc/profile и ~/.bash_profile
    /etc/profile вызывает скрипты /etc/profile.d/ ~/.bash_profile вызывает ~/.bashrc
    ~/.bashrc вызывает /etc/bashrc

    toly@host:~$ /bin/login login: невозможно выполнить без прав суперпользователя toly@host:~$ sudo /bin/login [sudo] пароль для toly: host имя пользователя: toly Пароль: Последний вход в систему: Вс окт 9 17:33:47 MSK 2022 с 10.0.2.101 на pts/5 toly@host:~$ exit выход toly@host:~$

    Loin shell включает в себя следующие возможные случаи:

    su - su -l su --login su USERNAME - su -l USERNAME su --login USERNAME sudo -i

    non login shell - не связан с входом пользователя в систему, при его использовании выполняются шаги:
    Вызывается ~/.bashrc
    ~/.bashrc вызывает /etc/bashrc
    /etc/bashrc вызывает скрипты /etc/profile.d
    При внезапном закрытии соединения ssh, выполнение команды на удаленном сервере будет остановлено, псевдотерминал и все процессы, которые родились в псевдотерминале получают сигнал SIGHUP и принудительно закрываются, отсюда вопрос, как сделать так, чтобы выполнение команды не останавливалось и можно было посмотреть ее статус выполнения на удаленном сервере при повторном подключении?
    Есть несколько вариантов решения:
    1. Использование мендежера оконных окон screen или tmux
    2. Использование команды nohup. С помощью этой команды процесс выполняется в фоновом режиме игнорируя сигналы SIGHUP, продолжая свое выполнение как демон, таким образом можно отключиться от удаленной машины

    $ nohup find / -name test.txt & [1] 14686 nohup: ввод игнорируется, вывод добавляется в '/home/toly/nohup.out' toly@host:/etc$ fg 1 nohup find / -name test.txt

    3. Использование команды disown

    toly@mega:~$ ping google.com > pingout & [1] 15226 toly@mega:~$ jobs -l [1]+ 15226 Запущен ping zalinux.ru > pingout & toly@mega:~$ disown -h %1 toly@mega:~$ ps -ef | grep ping gdm 1364 1216 0 10:25 tty1 00:00:00 /usr/libexec/gsd-housekeeping toly 1728 1574 0 10:28 tty2 00:00:00 csd-housekeeping toly 15226 5453 0 14:18 pts/1 00:00:00 ping zalinux.ru toly 15244 5453 0 14:19 pts/1 00:00:00 grep --color=auto ping

    6. Использование команды setsid
    В следующем примере процесс sleep отключается от контролируемого терминала, поэтому при закрытии терминала, процесс будет продолжать свою работу:

    setsid sleep 10m ps -ef | grep sleep ~$ ps -ef | grep sleep toly 15820 1538 0 14:26 ? 00:00:00 sleep 10m toly 15910 15833 0 14:27 pts/3 00:00:00 grep --color=auto sleep
    sshfs

    sshfs - сетевая файловая система, позволяет монтировать удаленную файловую систему используя протокол sftp и fuse (filesystem userspace - файловая система в пространстве пользователя)
    fuse - это файловая система в пространстве пользователя, которая позволяет монтировать систему с правами обычного пользователя
    Для использования sshfs:

    sudo apt install sshfs fuse

    Для монтирования удаленного каталога используется следующий синтаксис:

    sshfs ПОЛЬЗОВАТЕЛЬ@УДАЛЁННЫЙ-ХОСТ:/ДИРЕКТОРИЯ/УДАЛЁННОГО/ХОСТА ТОЧКА-МОНТИРОВАНИЯ

    При необходимости можно указать порт через опцию -p в конце команды
    Более подробное описание команды здесь


    Источники
    Последнее изменение: 10.10.2024 05:41


    Связанные темы
    Здесь пока нет комментариев
    Добавлять комментарии могут только авторизованные пользователи

    Авторизоваться
    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ