Gerenciando conexões SSH


9

Em um servidor Linux, como eu encontraria uma lista de todas as conexões SSH atuais ou desconectaria uma conexão SSH específica?


Você está interessado em conexões SSH recebidas ou enviadas? ou ambos?
— Shawn Chin

2
Esta questão é mais relevante para superusuário

Estou interessado apenas em conexões de entrada.
— Cerin

Respostas:


13

Se você planeja fazer isso de maneira interativa, o mais simples seria simplesmente chamar whoe ver se há usuários de um host remoto.

[you@host]$ who
user1      :0           Feb  8 09:45
user1      pts/1        Feb 14 17:56 (:0.0)
malcolm    pts/3        Feb 15 17:50 (cockpit.serenity.com)
reynold    pts/2        Feb 15 17:48 (host123.firefly.co.uk)

Obviamente, isso não é infalível, mas é extremamente simples de digitar sob demanda e processar facilmente com o olho humano.

Como o @gravyface apontou, se você incluir uma -uopção who, também imprimirá o PID associado ao qual você poderá passar killpara encerrar uma conexão.


1
-ulhe dará o PID.
— Gravyface

este não mostra os IPs se houver várias conexões em um usuário
— Alguém

Por alguma razão, isso não funcionou. Em uma máquina remota, entrei na minha máquina usando ssh e, na minha máquina, executei a who -u. Matar o pid não encerrou a conexão na minha máquina remota. No entanto, depois que fiz uma lsof -i | grep ":ssh" sugestão na resposta do @kce, recebi um pid diferente; matar esse processo encerrou a conexão. Talvez haja vários processos iniciados por causa de uma conexão ssh e matarem o exibido por quem não encerra a conexão; essa é a minha explicação.
— Neo M Hacker

8

Que tal usar lsof?

# lsof -i |grep ":ssh"

sshd    1943      root    3u  IPv6   5698       TCP *:ssh (LISTEN)
sshd    1943      root    4u  IPv4   5700       TCP *:ssh (LISTEN)
sshd    3217      root    3r  IPv4   9687       TCP www.example.com:ssh->192.168.61.11:7341 (ESTABLISHED)
sshd    3220      user1   3u  IPv4   9687       TCP www.example.com:ssh->192.168.61.11:7341 (ESTABLISHED)
sshd    3327      root    3r  IPv4  10595       TCP www.example.com:ssh->192.168.61.11:7385 (ESTABLISHED)
sshd    3330      user2   3u  IPv4  10595       TCP www.example.com:ssh->192.168.61.11:7385 (ESTABLISHED)

Você deve ser capaz de eliminar a conexão incorreta (por exemplo, desconectar o usuário2):

# kill -9 3330

3
Use lsof -i tcp:22e você não precisará do grep.
— Shawn Chin

Somente se você executar o sshe não especificar a -popção ..
— Jindra Helcl 24/04

1

Para visualizar as conexões ssh, você pode fazer um netstat -atn | grep ':22'. Ele mostra todas as conexões na porta 22.

Para interromper a conexão, você pode tentar encontrar o PID do sshd (SSH Daemon) com ps-ax.

Edit: Eu acho que você pode encontrar o PID de sua bashsessão (ou shell equivalente). Matar isso deve deixá-los bem.

Outro recurso: este tópico tem algumas dicas sobre o assunto.


Não tenho conexões ativas na minha máquina atual, mas o netstat ainda lista uma conexão tcp e tcp6. O que eu faria com o PID do sshd? Você está sugerindo que eu deveria matar o servidor SSH inteiro apenas para interromper uma única conexão?
— Cerin

@Cerin Essas duas conexões mostram que ele está escutando essas portas (somente)

Você não especificou, mas eu tenho que pensar nisso. Desculpe: /
— Por favor, trate seus mods bem.

0

Tente o seguinte:

$ ps aux | grep sshd

Para desconectá-los, você pode kill PID(onde PIDestá o ID do processo na segunda coluna), se você tiver privilégios de root ou o usuário em questão.


Este sshd só mostra está sendo executado e o usuário a conexão foi estabelecida com (não o número de conexões, o IP é de)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.