Em um servidor Linux, como eu encontraria uma lista de todas as conexões SSH atuais ou desconectaria uma conexão SSH específica?
Em um servidor Linux, como eu encontraria uma lista de todas as conexões SSH atuais ou desconectaria uma conexão SSH específica?
Respostas:
Se você planeja fazer isso de maneira interativa, o mais simples seria simplesmente chamar who
e 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 -u
opção who
, também imprimirá o PID associado ao qual você poderá passar kill
para encerrar uma conexão.
-u
lhe dará o PID.
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.
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
lsof -i tcp:22
e você não precisará do grep.
ssh
e não especificar a -p
opção ..
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 bash
sessão (ou shell equivalente). Matar isso deve deixá-los bem.
Outro recurso: este tópico tem algumas dicas sobre o assunto.
Tente o seguinte:
$ ps aux | grep sshd
Para desconectá-los, você pode kill PID
(onde PID
está o ID do processo na segunda coluna), se você tiver privilégios de root ou o usuário em questão.