- Which is the most gentle way to end a ssh session [closed]
- 2 Answers 2
- Как выкинуть из системы пользователя по SSH в Linux
- Выкинуть пользователя из сеанса SSH
- Отправить сообщение перед завершением сеанса
- Принудительно завершить сеанс SSH, если SIGNHUP не работает
- Вы также можете выйти из выбранного сеанса пользователя, если у пользователя более одного сеанса SSH
- How to log off an user from SSH? [duplicate]
- 2 Answers 2
- How to Log Out a User Off SSH in Linux
- Log out a user from SSH session
- Send a message before terminating the session
- Force kill a SSH session if SIGNHUP doesn’t work
- You can also log out a user from selected session if the user has more than one SSH session
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?
Как выкинуть из системы пользователя по SSH в Linux
Добавить в избранное
Главное меню » 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.
Вы также можете выйти из выбранного сеанса пользователя, если у пользователя более одного сеанса SSH
Если один и тот же пользователь входит в систему из более чем одной системы или терминала, это влияет только на сеанс, который вы убиваете. Это не удалит пользователя из всех сеансов.
Читать Docker/Docker Compose/Docker Run host network vs bridge network (как настроить режим моста/хоста для docker, с помощью команды run или docker compose)
Это тот случай, когда ваш сеанс SSH зависает по какой-то причине, например, при отключении сети. Вы можете убить терминал и открыть еще один сеанс SSH с нового терминала, но теперь вы видите, что дважды вошли в систему.
В таком случае вы можете закрыть сеанс, который больше не должен быть активным.
Вы можете определить, какого пользователя начать, по времени входа в журнал, который виден в выходных данных whoкоманды. Не волнуйтесь, в худшем случае вы откажетесь от текущего сеанса. Но тогда вы можете войти снова.
Надеемся, этот быстрый совет помог вам выйти из сеанса SSH в Linux. Ваши вопросы и предложения приветствуются.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
How to log off an user from SSH? [duplicate]
I am able to see logged-in users via the who or last command. How can I log off a particular user who login through SSH?
2 Answers 2
kill its ssh session. Check them by
Second column gives you the PID. Then,
ps: using the -9 flag will prevent things from stopping «graciously».
Since the signal is being sent only to the sshd, the -9 will only prevent it from cleaning up properly, which may involve killing jobs the user was running in the ssh session, so should be avoided.
Are you sure? When a I talked about the -9 I was referring to the graciously stop of the SSHD terminal process. The running apps will be injured no matter the flag used. For example, try something like killing a user session when he is editing some file in Vim or Vi. No matter what flag, or even if any flag was used, the swap file will remain on FS and the user will be noticed about it whenever he tries to edit the file again.
@psusi BTW, I assumed that the OP was aware that is harmful to drop someones session, as some essential tasks may be interrupted or completely prevented from running.
you mean backup file, not swap file, and yes, no matter how you kill the process, files on disk are not affected, and most editors frequently write a backup file just in case. Anything typed since the last backup was saved will be lost if killed with -9, but not otherwise since the editor has a chance to save. Killing sshd with -9 is not a good idea since it prevents it from doing important cleanup tasks, like removing the login entry from wtmp so they disappear from w[ho].
@psusi No, no, I mean swap files. This is how Vim and Vi call them. Nevertheless, in fault tolerance area, we call «gracious stop» or «gracious halt» when a system has the opportunity to execute all its cleanup routines, like the ones you enumerated for sshd.
How to Log Out a User Off SSH in Linux
A few quick tips about logging out yourself or some other user from SSH session.
If you are logged into a remote Linux system via SSH, you just need to use the exit command to log out of SSH.
That’s fine. But what if you want to log out some other user from the SSH connection?
In this quick tip, I’ll show you how you can kick any user off the system.
Log out a user from SSH session
First, check the list of logged-in users to your Linux server. There are various ways to do that. I’ll use the who command with option -u . This option displays the process ID of the login shell session of the users.
[email protected]:~# who -u abhishek pts/0 2021-04-05 09:25 00:01 31970 (223.180.180.107) prakash pts/1 2021-04-05 09:26 . 32004 (223.180.180.107) root pts/2 2021-04-05 09:26 . 32039 (223.180.180.107)
Now imagine that I want to kick use prakash from the SSH session. The process ID of its shell session is 32004. If you kill the login shell session, the user will be disconnected.
To do that, you can use kill command to send a SIGHUP signal. This signal is used to report that the user’s terminal is disconnected. It also effectively disconnects all processes in the session from the controlling terminal.
Of course, to perform such an action, you need to be either root or a sudo user.
There are a few things you should know and do.
Send a message before terminating the session
It’s a good idea to inform the end-user before you terminate his/her session. You can use the write command to quickly drop a message to the user in this manner:
echo "Your session will end in 2 minutes. Save your work!" | write prakash pts/2
Force kill a SSH session if SIGNHUP doesn’t work
If the SIGHUP signal does not work, then send SIGKILL signal.
You can also log out a user from selected session if the user has more than one SSH session
If the same user is logged in from more than one system or terminal, only the session that you are killing is impacted. It won’t kick the user from all the sessions.
This is the case when your SSH session hangs up for some reason like network disconnection. You can kill the terminal and open another SSH session from a new terminal but now you see yourself logged into the system twice.
In such case, you can close the session which should not be active anymore.
You can identify which user to kick off from the timing of the log in which is visible in the output of the who command. Don’t worry, the worst case would be that you kick off yourself from your current session. But then you can log in again.
I hope this quick tip helped you to log out a user from SSH session in Linux. Your questions and suggestions are welcome.