我已经使用 keygen 与远程服务器建立了 ssh 连接并建立了端口转发,代码如下:
ssh-keygen -t rsa
和ssh-copy-id -i ~/.ssh/id_rsa.pub root@IP
ssh -N -R 0.0.0.0:53407:localhost:53407 root@IP
现在我需要结束这个,但我的端口 53407 仍然被 ssh 使用,我该如何结束这个连接?
lsof -i -P -n | grep LISTEN 的返回
我删除了端口转发服务,但什么也没改变
答案1
- 在您启动的“死”终端中,
ssh -N ...
您只需按下即可Ctrlc取消该ssh
过程。 - 如果您将其发送到后台,请将作业返回到前台以向其发送
^C
。
# At the client system:
# To find it:
jobs
[1]+ Running ssh -N -R53407:localhost:53407 user@server &
# To bring to foreground:
fg 1
# To cancel:
^c
- 否则,在任务列表中找到 ssh 进程,获取其进程 id (PID) 并执行:
kill <PID>
像这样使用kill
不是刺客在行动但更像是一个好心的邮递员,把信息传递ssh
给正确地退出。——因此给 ssh 几秒钟时间来完成退出工作。
最好通过以下方式检查开放端口ss
:
# At the remote system:
sudo ss -tanp | grep "sshd"
当您在本地服务器终止 ssh 连接时,这也会有所帮助:
# Alternatively at the server:
sudo ss -tanp | grep ":53407"
LISTEN 0 128 127.0.0.1:53407 0.0.0.0:* users:(("sshd",pid=247750,fd=9))
LISTEN 0 128 [::1]:53407 [::]:* users:(("sshd",pid=247750,fd=8))
# Get the PID from the output and send the kill command:
kill 247750
注意:其他 sshd 连接不会退出,因为sshd
每个连接都会分叉,因此每个连接都使用不同的 PID。