Как выйти из ssh linux

How can I break out of ssh when it locks?

I frequently ssh into my box at home from school, but usually when I change classes and my computer suspends, the pipe will be broken. However, ssh simply locks up — Ctrl + c , Ctrl + z and Ctrl + d have no effect. It’s annoying to have to restart my terminal, and even more annoying to have to close and re-create a new screen window. So my question, is there an easy way to make ssh die properly (i.e. when the pipe fails «normally» it will exit with a message about a broken pipe)? Or do I have to figure out what the PID is and manually kill it?

If I got disconnected with an active SSH session, it freezes. I just kill it and start a new session. No information is lost because I use GNU screen.

[mosh](mosh.mit.edu) is a neat alternative to avoid this problem. It «stays connected» even with intermittent internet connectivity.

@jaynp The drawback of me using mosh (since two minutes ago) is that I don’t know how to disconnect it. I’m using a tmux+irssi session on a remote host (as an IRC bouncer, sort of) and I do want to disconnect sometimes (while keeping the tmux+irssi running) and that I did with +~+. using SSH but won’t work using mosh.

3 Answers 3

Normal keys are forwarded over the ssh session, so none of those will work. Instead, use the escape sequences. To kill the current session hit subsequently Enter , ~ , . .

(Keep in mind that in international keyboards where ~ is set to be a composing character, you have to hit it twice: Enter , ~ , ~ , . )

More of these escape sequences can be listed with Enter , ~ , ? :

Supported escape sequences: ~. - terminate connection (and any multiplexed sessions) ~B - send a BREAK to the remote system ~C - open a command line ~R - request rekey ~V/v - decrease/increase verbosity (LogLevel) ~^Z - suspend ssh ~# - list forwarded connections ~& - background ssh (when waiting for connections to terminate) ~? - this message ~~ - send the escape character by typing it twice (Note that escapes are only recognized immediately after newline.) 

You can close the list of Escape sequences by hitting Enter .

Notice that because hitting ~ ~ causes ssh to send the ~ instead of intercepting it, you can address N nested ssh connections by hitting ~ N times. (This only applies to ~ s that directly follow an Enter .) That is to say that Enter ~ ~ ~ ~ ~ . terminates an ssh session 5 layers deep and keeps the other 4 intact.

Читайте также:  Команда линукс свой айпи

Источник

Как мне выйти из SSH-соединения?

Я подключаюсь к серверу через SSH, чтобы отправить сообщение серверу сокетов с помощью команды вроде:

После того, как соединение установлено, и я пишу сообщение и отправляю его, я не могу выйти из текстового режима. Мне только разрешено вводить больше текста и все. Есть ли команда или комбинация клавиш, которая позволяет мне вернуться в командный режим?

7 ответов 7

Escape-символ SSH и последовательность отключения

В большинстве реализаций SSH для интерактивных сессий используется escape-символ, аналогичный комбинации Ctrl-] . Экранирующий символ SSH по умолчанию — ~ , введенный в начале строки. Если вы хотите завершить интерактивный сеанс OpenSSH, который застрял и не может быть завершен с помощью ввода exit или Ctrl D в оболочке на удаленной стороне, вы можете ввести ~ а затем точку . , Чтобы быть уверенным, что нужно вводить escape-символ в начале строки ввода, сначала нужно нажать Enter. Таким образом, следующая последовательность завершит сеанс SSH в большинстве случаев: Введите ~ .

Другие последовательности побега

  • ~ следование Ctrl-Z приостанавливает сеанс,
  • ~& помещает это прямо в фон,
  • ~# дает список переадресованных соединений в этом сеансе.
  • Если вы хотите просто ввести тильду в начале строки, вы должны удвоить ее: ~~ .

Экранирующий символ можно изменить с помощью параметра командной строки -e . Если вы установите специальное значение -e none , экранирование будет отключено, и сеанс будет полностью прозрачным.

См. Также справочную страницу OpenBSD по ssh (на которую ссылается www.openssh.org) в параметре командной строки -e

Как мне выйти из SSH-соединения?

  • закрытие сеанса оболочки, например, с exit после которого следует Enter , или Ctrl — d обычно позволяет вам нормально выйти из сеанса ssh ,
  • если у вас плохое соединение и оболочка не отвечает, нажмите клавишу Enter , затем введите ~. и ssh должен немедленно закрыться и вернуть вас в командную строку.

Первый вариант должен быть интуитивно понятным, но как мы узнаем последний вариант?

Мы могли бы узнать эту информацию из внимательного прочтения справочной страницы.

дает нам документацию по SSH, в которой есть следующий раздел о escape-символах:

ESCAPE CHARACTERS When a pseudo-terminal has been requested, ssh supports a number of functions through the use of an escape character. A single tilde character can be sent as ~~ or by following the tilde by a character other than those described below. The escape character must always follow a newline to be interpreted as special. The escape character can be changed in configuration files using the EscapeChar configuration directive or on the command line by the -e option. The supported escapes (assuming the default ‘~’) are: ~. Disconnect. ~^Z Background ssh. ~# List forwarded connections. ~& Background ssh at logout when waiting for forwarded connection / X11 sessions to terminate. ~? Display a list of escape characters. ~B Send a BREAK to the remote system (only useful if the peer sup‐ ports it). ~C Open command line. Currently this allows the addition of port forwardings using the -L, -R and -D options (see above). It also allows the cancellation of existing port-forwardings with -KL[bind_address:]port for local, -KR[bind_address:]port for remote and -KD[bind_address:]port for dynamic port-forwardings. !command allows the user to execute a local command if the PermitLocalCommand option is enabled in ssh_config(5). Basic help is available, using the -h option. ~R Request rekeying of the connection (only useful if the peer supports it). ~V Decrease the verbosity (LogLevel) when errors are being written to stderr. ~v Increase the verbosity (LogLevel) when errors are being written to stderr. 

Источник

Читайте также:  Соединить сеть linux windows

Как выкинуть из системы пользователя по SSH в Linux

Favorite

Добавить в избранное

Главное меню » Linux » Как выкинуть из системы пользователя по SSH в Linux

Как выкинуть из системы пользователя по SSH в Linux

Е сли вы вошли в удаленную систему Linux через SSH, вам просто нужно использовать команду exit для выхода из SSH.

Отлично. Но что, если вы хотите отключить какого-либо другого пользователя с помощью SSH-соединения?

В этой быстрой подсказке мы покажем вам, как вы можете выгнать любого пользователя из системы.

Выкинуть пользователя из сеанса SSH

Сначала проверьте список пользователей, вошедших в систему на вашем сервере Linux. Это можно сделать разными способами. Мы будем использовать команду who с опцией -u. Этот параметр отображает идентификатор процесса сеанса оболочки входа пользователей.

root@localhost:~# who -u andreyex pts/0 2021-04-06 16:19 00:01 27382 (217.043.088.107) alex pts/1 2021-04-06 16:20 . 27583 (217.043.088.107) root pts/2 2021-04-06 16:21 . 27654 (217.043.088.107)

Теперь представьте, что мы хотим прекратить использование сеанса alex в SSH. Идентификатор процесса его сеанса оболочки — 27583. Если вы завершите сеанс оболочки входа в систему, пользователь будет отключен.

Для этого вы можете использовать команду kill для отправки сигнала SIGHUP. Этот сигнал используется для сообщения о том, что терминал пользователя отключен. Он также эффективно отключает все процессы в сеансе от управляющего терминала.

Конечно, чтобы выполнить такое действие, вы должны быть пользователем root или sudo.

Есть несколько вещей, которые вам следует знать и делать.

Отправить сообщение перед завершением сеанса

Это хорошая идея, чтобы проинформировать конечного пользователя, прежде чем вы завершите его/ее сеанс. Вы можете использовать команду записи, чтобы быстро отправить сообщение пользователю следующим образом:

echo "Your session will end in 2 minutes. Save your work!" | write alex pts/2

Принудительно завершить сеанс SSH, если SIGNHUP не работает

Если сигнал SIGHUP не работает, отправьте сигнал SIGKILL.

Читайте также:  Tor browser arch linux

Вы также можете выйти из выбранного сеанса пользователя, если у пользователя более одного сеанса SSH

Если один и тот же пользователь входит в систему из более чем одной системы или терминала, это влияет только на сеанс, который вы убиваете. Это не удалит пользователя из всех сеансов.

Это тот случай, когда ваш сеанс SSH зависает по какой-то причине, например, при отключении сети. Вы можете убить терминал и открыть еще один сеанс SSH с нового терминала, но теперь вы видите, что дважды вошли в систему.

В таком случае вы можете закрыть сеанс, который больше не должен быть активным.

Вы можете определить, какого пользователя начать, по времени входа в журнал, который виден в выходных данных whoкоманды. Не волнуйтесь, в худшем случае вы откажетесь от текущего сеанса. Но тогда вы можете войти снова.

Надеемся, этот быстрый совет помог вам выйти из сеанса SSH в Linux. Ваши вопросы и предложения приветствуются.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Which is the most gentle way to end a ssh session [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.

This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.

  • Bash built-in command exit $ exit
  • Bash built-in command logout $ logout
  • Keyboard shortcut Control + D
  • External command fuser $ fuser -k /dev/pts/[n]
  • Get sshd process id for current user then kill this process

Can anyone explain what’s the difference between these commands? Personally Ctrl + D is my favorite one, because it’s the fastest one.

2 Answers 2

CTRL + d causes a logout . logout causes an exit . exit on its own is different only because it allows you to specify a non-zero exit code in case it’s needed. So the first 3 options are equivalent.

Killing ssh, or the terminal will just break the connection. I’m not sure what you’re going for with «gentle», but that is not it.

Assuming that by gentle you meant closing connections without errors on either side, just keep using CTRL + d

I think there is another «gentle» way to exit. By using escaping character.

In this post shows the way to do it, just dig it.

Please provide additional details in your answer. As it’s currently written, it’s hard to understand your solution.

In my case, it is a router ssh connection, which shows a full screen selective program and no function as exit. Maybe it’s a good time of using escape character?

Источник

Оцените статью
Adblock
detector