LINUX.ORG.RU
ФорумAdmin

Приёмчики SSH

 ,


0

2

Предлагаю в этой теме делиться полезными приёмами работы по удалённому доступу SSH.

Наберём небольшой FAQ тех вопросов и ответов, которые встречаются в повседневной работе или, наоборот, достаточно редко.

Первый вопрос прозвучит так:

Что делать в случае ненадёжного соединения (Wi-Fi) между компьютерами в помещении с помехами (сварочный цех, торговый центр с глушилками и т.д.), то есть как в SSH решается проблема восстановления потерянной сессии?

★★★★★

Последнее исправление: iZEN (всего исправлений: 1)

то есть как в SSH решается проблема восстановления потерянной сессии?

Никак, все на уровне tcp не рухнуло ну и хорошо, таймаут большой. Если смена ip то рухнуло.

ЗЫ Уж простите не смог удержаться на фоне аватарки

в помещении с помехами (сварочный цех

Так честно и пишите АД :) Помех много :)

anc ★★★★★
()

Ssh к sshd со стандартными работает по gsm через teledo -стабильный пинг сотни мс., интерактивный отклик пару секунд, постоянно то тунель, то радиоканал глохнут или при неактивности отключаютя, что создает задержки в десятки секунд, но ssh продолжает работать, ничего перезапускать не надо.

Или тоже со стандартными, putty к sshd, машина с sshd успевает перезагрузится прежде чем putty закроется по таймауту, видимо по закешированным данным переподключается и работа продолжается дальше.

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

anonymous
()

как в SSH решается проблема восстановления потерянной сессии?

1. tmux

2. mosh

Turbid ★★★★★
()
Ответ на: комментарий от anonymous

putty.exe ни разу не доводилось использовать по прямому назначению. Не знаю его нюансов. Но если он позволяет временно отключиться от управляемой машины, не закрывая сессию, а потом восстановить связь, то почему нет?

iZEN ★★★★★
() автор топика
Ответ на: комментарий от Turbid

Во FreeBSD полно графических терминалов и программ, поддерживающих протоколы VNC и RDP. Но это не имеет никакого отношения к теме.

iZEN ★★★★★
() автор топика
Ответ на: комментарий от iZEN

ClientAliveInterval и tmux (как без него кто-то работает?). /тред

anonymous
()

Cтавишь salt и забываешь про ssh. В случае если ssh все-таки нужен, запускаешь нужный рецепт. Если тебе не нужен в реальном времени output (или он невозможен), то может и ssh на самом деле не нужен.

anonymous_sama ★★★★★
()
Последнее исправление: anonymous_sama (всего исправлений: 1)

mosh

mobile shell - это средство для связи с удалённым сервером через ssh для плохих каналов. В отличие от ssh, ввод выполняется интерактивно, без длительного ожидания сервера (что весьма заметно на медленных каналах, когда между вводом текста и его отображением на экране проходит долгое время). Также поддерживается роуминг (пересоединение с сервером без разрыва сессии).

Использование его довольно просто - ставим mosh на клиенте и на сервере, затем mosh user@host. Для каких-то особых случаев, см. man mosh.

sin-ok
()
Ответ на: комментарий от anonymous

Если, например, по ssh подключаешься к удалённой машине, устанавливается сессия, в ней на удалённой машине запускаешь процесс долгой компиляции или локального копирования чего-либо. Далее, нужно отойти и отключиться от этого процесса и заняться своими делами, а через некоторое время подключиться к удалённой машине, чтобы продолжить наблюдение и увидеть результат завершённых процессов, то как это сделать в ssh?

iZEN ★★★★★
() автор топика
Ответ на: комментарий от iZEN

Но есть ведь screen, мы как всегда ищем мультитул когда можно все делать отдельными полезными инструментами.

sin-ok
()
Ответ на: комментарий от iZEN

Mosh

Вы лучше напишите, как его используете, а не то, что он есть.

Наливай да пей. Ставь да пользуйся.

mosh 222.222.222.222

Причем, ставить нужно только на клиента - на сервер не надо.

Novator ★★★★★
()
Ответ на: комментарий от Novator

Причем, ставить нужно только на клиента - на сервер не надо.

Вообще-то надо, хотя бы mosh-server там должен быть. А еще надо открывать UDP-порты с 60000 по 61000.

deadNightTiger ★★★★★
()
Ответ на: комментарий от Novator

на сервер не надо.

Я обманул - на сервер тоже надо ставить.
Но не в виде сервиса, а чисто пакет установить.

Novator ★★★★★
()
Ответ на: комментарий от anonymous

Ему надо сессию восстанавливать, а не мош

Сессию-то какую? Терминальную?
Мош её легко восстанавливает после обрыва.

Novator ★★★★★
()
Ответ на: комментарий от deadNightTiger

tmux то наружу не торчит в сеть. Хотя я вроде тоже юзал мош без спец сервера, но не уверен. Бтв, этому бздуну надо сессию восстанавливать, а не держать (пишет же, что отключается сам)

anonymous
()
Ответ на: комментарий от Novator

Далее, нужно отойти и отключиться от этого процесса и заняться своими делами, а через некоторое время подключиться к удалённой машине

Читай тред то :)

anonymous
()
Ответ на: комментарий от iZEN

процесс долгой компиляции... отключиться от этого процесса и заняться своими делами, а через некоторое время подключиться к удалённой машине, чтобы продолжить наблюдение и увидеть результат завершённых процессов, то как это сделать в ssh?

Это делается установкой screen на сервере, запуска команды через скрин, отключения, подключения и восстановления терминала через скрин:

screen brain-fuck-command --with-shit-parameters
<здесь отключашься и снова подключаешься>
screen -r

Горячие клавиши в скрине:
Ctrl+A,Esc - пролистать весь вывод терминала (по умолчанию 1000 строк)
Ctrl+A,D - отключиться от сессии (команда будет продолжать выполняться)
Ctrl+A,K - грохнуть процесс в сессии

Больше подробностей в man screen.

Novator ★★★★★
()
Последнее исправление: Novator (всего исправлений: 2)

Ну вот тебе пример конфига, чем сам часто пользуюсь:

Host example.intranet
        User another
        ProxyCommand ssh jumphost.example.com nc %h %p
        LocalForward 5432 127.0.0.1:5432

Host *
        TCPKeepAlive yes
        ForwardAgent yes
        ForwardX11Trusted yes
        ServerAliveInterval 30
        HashKnownHosts no

beastie ★★★★★
()
Ответ на: комментарий от deadNightTiger

Заодно спрошу, может кто-то подскажет, почему в убунту-дебиане в сессии tmux автокомплит не работает в таких случаях

for i in $(cat тутжмуTAB)

и получаю

for i in $(cat -bash: unexpected EOF while looking for matching `)'
-bash: syntax error: unexpected end of file
^C

В рхел-центос этого бага нет, тянется уже года 3, минимум.

anonymous
()

Что делать в случае ненадёжного соединения

mosh

entefeed ☆☆☆
()
Ответ на: комментарий от iZEN

Что значит как его используете? Ставишь на сервере, ставишь на клиенте, вместо ssh пишешь в консольке mosh. Соединение устанавливается таки через ssh, поэтому никаких дополнительных настроек не надо.

entefeed ☆☆☆
()
Ответ на: комментарий от iZEN

Далее, нужно отойти и отключиться от этого процесса и заняться своими делами, а через некоторое время подключиться к удалённой машине, чтобы продолжить наблюдение

тебе уже сказали про tmux

Bobby_
()
Ответ на: комментарий от iZEN

Так и формулируйте в топике. А не как у вас написано.
В таком варианте вам уже ответили много раз.

anc ★★★★★
()
Ответ на: комментарий от iZEN

по ssh подключаешься к удалённой машине, устанавливается сессия, в ней на удалённой машине запускаешь процесс долгой компиляции или локального копирования чего-либо

nohup <команда> &
disown
^D

annulen ★★★★★
()
Последнее исправление: annulen (всего исправлений: 1)
Ответ на: комментарий от Novator

Mosh-сессия выглядит следующим образом mosh логинится на сервер по SSH и запускает удаленный процесс mosh-server, который слушает на UDP портах от 60000 до 61000 закрывает SSH-соединение запускает mosh-client с параметрами mosh-сервера, полученными на шаге 1

Правильно я сомневался - ставить самому ничего не надо.

anonymous
()

Если у тебя плохое соединения, то используй screen.

Т.е. подключаешь по ssh, посредством screen создаёшь отдельную сессию screen, можешь с указанием имени и далее выполняешь все нужные действия в этой сессии.

Далее либо можешь сам отключиться от сессии screen, а потом её восстанавливать если нужно, либо в случае потери связи с ssh сервером сможешь восстановить screen сессию.

Удачи.

kostik87 ★★★★★
()
Ответ на: комментарий от iZEN

Команда так и называется «screen».

По комбинациям клавишь по управлению почитай man screen.

Вот у лиссяры написано всё: https://www.lissyara.su/articles/freebsd/trivia/screen/.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 2)

screen?

алгоримт:

yum install screen
screen


после этого можно отключаться и подключаться к сессии, только надо глянуть хелп, кажется screen -R подключиться к сессии.

некоторые прописывают screen вместо шела и вроде довольны, но я не пробовал

AndreyKl ★★★★★
()
Ответ на: комментарий от Bobby_

Чего-то странно ведёт себя ваш tmux

> tmux

xauth:  file /home/igor/.serverauth.814 does not exist


X.Org X Server 1.18.4
Release Date: 2016-07-19
X Protocol Version 11, Revision 0
Build Operating System: FreeBSD 11.1-STABLE amd64 
Current Operating System: FreeBSD comp.home 11.1-STABLE FreeBSD 11.1-STABLE #0 r332165: Sat Apr  7 14:54:42 MSK 2018     igor@comp.home:/usr/obj/usr/src/sys/COMP amd64
Build Date: 06 January 2018  12:09:17AM
 
Current version of pixman: 0.34.0
        Before reporting problems, check http://wiki.x.org
        to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
        (++) from command line, (!!) notice, (II) informational,
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.1.log", Time: Sat Apr  7 15:51:20 2018
(==) Using config file: "/etc/X11/xorg.conf"
(==) Using system config directory "/usr/local/share/X11/xorg.conf.d"
(II) [KMS] Kernel modesetting enabled.
/usr/local/bin/startxfce4: X server already running on display :1
xfce4-session: No GPG agent found
xfce4-session-Message: SSH authentication agent is already running

(xfce4-session:838): xfce4-session-WARNING **: xfsm_manager_load_session: Something wrong with /home/igor/.cache/sessions/xfce4-session-comp.home:1, Does it exist? Permissions issue?
DBG[workspaces.c:456] xfce_workspaces_helper_wait_for_window_manager_destroyed(): found window manager after 1 tries
libpager-Message: Setting the pager rows returned false. Maybe the setting is not applied.

** (wrapper-1.0:869): WARNING **: Binding 'XF86AudioLowerVolume' failed!

** (wrapper-1.0:869): WARNING **: Binding 'XF86AudioRaiseVolume' failed!

** (wrapper-1.0:869): WARNING **: Binding 'XF86AudioMute' failed!

(xfce4-session:838): Gtk-CRITICAL **: IA__gtk_widget_set_visible: assertion 'GTK_IS_WIDGET (widget)' failed

(xfce4-session:838): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
/home/igor/.xinitrc: £-enlightenment_start: not found
xinit: connection to X server lost
xscreensaver: 15:51:27: SIGHUP received: restarting...
xscreensaver: 15:51:27: initial effective uid/gid was root/??? (0/1001)
xscreensaver: 15:51:27: running as igor/??? (1001/1001)


waiting for X server to shut down xfsettingsd: Fatal IO error 35 (Resource temporarily unavailable) on X server :1.0.
(II) Server terminated successfully (0). Closing log file.
xscreensaver: 15:51:27: Can't open display: :1.0
xscreensaver: 15:51:27: initial effective uid/gid was root/??? (0/1001)
xscreensaver: 15:51:27: running as igor/??? (1001/1001)

xscreensaver: 15:51:27: This is probably because you're logging in as root.  You
              shouldn't log in as root: you should log in as a normal user,
              and then `su' as needed.  If you insist on logging in as
              root, you will have to turn off X's security features before
              xscreensaver will work.

              Please read the manual and FAQ for more information:

              https://www.jwz.org/xscreensaver/faq.html
              https://www.jwz.org/xscreensaver/man.html


igor has logged on pts/1 from tmux(810).%0.
igor has logged on unix:0.0 from локальный.
iZEN ★★★★★
() автор топика
Ответ на: комментарий от Bobby_

Он его похоже еще и локально решил запустить, а не на сервере.

anonymous
()
Ответ на: комментарий от iZEN

Если, например, по ssh подключаешься к удалённой машине, устанавливается сессия, в ней на удалённой машине запускаешь процесс долгой компиляции или локального копирования чего-либо.

Всегда для этого screen использовал.

madcore ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.