コンピュータでリバースSSHクライアントを実行します。しばらくすると、接続拒否要求が受信され、SSH クライアントにログインすると表示されます。
Oct 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 | - 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ソケット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