在计算机上运行反向 ssh 客户端。一段时间后收到连接被拒绝的请求,ssh 客户端上的日志表明
10 月 12 日 00:21:19 ipaserver0 reverse-tunnel.sh:debug3:通道 1018:等待连接
10 月 12 日 00:21:19 ipaserver0 reverse-tunnel.sh:debug1:通道 1018:连接失败:连接被拒绝
10 月 12 日 00:21:19 ipaserver0 reverse-tunnel.sh:套接字:打开的文件太多
不确定这里的问题是什么。 ssh 隧道可支持的通道数量是否有限制。
答案1
进程可以打开的文件描述符的数量是有限制的。 ssh 隧道在客户端和服务器端都需要一个用于连接的文件描述符。因此通道的数量是有限的。
在 Linux 上,您可以使用lsof
列出打开的文件。它将列出所有进程的文件。您可以使用-c ssh
命令名称或-p pid
特定进程来限制列出的进程。
答案2
我也遇到同样的情况。
只需注意服务器端和客户端都应设置打开文件限制。
如果有端口转发,转发过程也需要设置。
ssh转发进程
例如,如果 host0 运行
ssh -fNL :1234:host2:1234 host1
然后你就得到了流程
- ssh @host0
//sudo netstat -ltnp | sudo netstat -ltnp | ssh @host0 //sudo netstat -ltnp | ssh @host0正则表达式:1234 - sshd @host1
//sudo netstat -atnp | sshd @host1 //sudo netstat -atnp | sshd @host1 grep :1234 (连接后运行
//pgrep -af "sshd: $USER\s*$"
拓扑结构:
client ----> ssh ===tunnel=== sshd ----> server
ssh (-L,-R)正向运行在应用层,
每个连接需要一个tcp socket fd。
// 对于大量连接来说它的性能很低。
用于运行过程
检查 NOFILE 限制:
$ prlimit -p 1930 -n
RESOURCE DESCRIPTION SOFT HARD UNITS
NOFILE max number of open files 1048576 1048576 files
更改 NOFILE 限制
prlimit -p 1930 -n1048576
对于当前的交互式 bash
查看
$ ulimit -n
1024
改变
ulimit -n 1048576