注意:我阅读并尝试了此处的解决方案:如何删除 SSH 转发端口 他们没有为我工作。
注意:我不太明白这是如何工作的,因此如果能提供额外的解释以便我可以学习的话,我将不胜感激
我在远程系统上运行一个 docker 容器,我的端口映射如下:
docker run --it --rm ... -p abcd:wxyz container:tag
其中abcd
和wxyz
是端口(例如2222:8000
)
然后,我想在本地系统上监听远程系统的端口。我可以通过以下方式执行此操作:
ssh -N -f -L localhost:abcd:localhost:abcd user@host
就像魔术一样,一切都奏效了,我很高兴。但是,当我完成它时,它不会自动清除。所以我想知道如何删除特定的监听。
我努力了:
$ ps aux | grep "ssh -N -f -L"
# user 23131 0.0 0.0 4268296 676 s005 S+ 11:35AM 0:00.00 grep --color=auto ssh -N -f -L
$ kill 23131
-bash: kill: (23131) - No such process
所以这不起作用。
然后我尝试了以下许多变体并总是得到:
ssh -O cancel -N -f -L localhost:abcd:localhost:abcd user@host
# No ControlPath specified for "-O" command
那么正确的方法是什么?
答案1
ssh
首先,我将使用以下命令开始寻找您的会话:
ps aux | grep ssh
因为您的搜索没有找到任何东西(您是否在某处放置了多个空格?)。
对于其他命令(使用 -O ssh 选项),您需要控制套接字。请查看手册页中的选项-M
和和。-S
ssh
ControlPath
ControlMaster
ssh_config