ssh -L(エラー:バインド:すでに使用されているアドレス)


48

とても簡単です。これは以前に私に起こったことを知っています。AUで適切な答えが見つかりませんでした。

ポートをバインドしてsshセッションを実行していました。

ssh -L 3000:<server_name>:22

接続が切れました。同じコマンドを使用して再接続しようとすると、次のエラーが表示されます。

bind: Address already in use
channel_setup_fwd_listener: cannot listen to port: 3000

ポートを再びバインドできるように、マシンのsshをリセットするにはどうすればよいですか?ローカルマシンのリセットは機能します。

回答:


66

そのポートを使用しているものをすべて殺すことはできませんか?

 lsof -ti:5901 | xargs kill -9

lsof -ti:5901portを使用しているものを見つけます5901

kill -9portを使用していたものをすべて殺すために、すべてを渡します5901

再度開きたいポートに置き換えます。


はい、ブロックされているポートにポート番号を変更できます。これを答えとしてマークします。
kbuilds

あなたが私のように用心深く、そして/または物忘れをしているなら、あなたは自分でlsofを実行し、それを殺す前にプロセスが何であるかを知りたいかもしれません。lsof -ti:5901あなたは、その後に渡すプロセス番号、戻りますkill -9
octern

3
ポート5901(または指定したローカルポート)を使用していない場合はどうなりますか?
マイケル

sudoプロセスがlsof
思い付か

2
kill -9プログラムが完全に応答しない限り、理由はありません。プロセスは、すべてが、その他の一時ファイルを、削除、信号#9(SIGKILL)すぐにフラッシュバッファ、近いファイルハンドルとソケットにプロセスにチャンスを与えることなく、それを終了してプロセスを強制終了することができ、使用する場合の対処kill(SIGTERMデフォルトは) 、続いてkill -1(SIGHUP; hangup)およびkill -2(SIGINT; Ctrl + Cが送信するもの)が機能しないkill -9 場合、最後に他に機能しない場合
TheDudeAbides

12

ローカルポート3000にまだ何かが接続されていると思います。

あなたはそれを見つけることができます

netstat -tulpn | grep 3000 

そしてそれを処分します。たとえば、私のマシンでは:

[:~] % netstat -tulpn | grep 5900
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 0.0.0.0:5900            0.0.0.0:*               LISTEN      2547/vino-server
tcp6       0      0 :::5900                 :::*                    LISTEN      2547/vino-server

ポート5900(vncサーバー)で待機および接続されているプロセスを正しく識別します。

別の便利なコマンドは

fuser 3000/tcp 

... sudoポートを開くプロセスを所有していない場合は、すべてを実行する必要があります。


答えてくれてありがとう。問題を再現できるかどうかを確認するために掘り下げる必要があります。ポート3000でリッスンできた唯一の可能なアプリケーションは、切断された古いsshセッションでした。ユーザーがプロセスを所有していたので、私はaを実行しkillall sshて死なせると仮定しました。そうではないと
思います

使用するリマインダーをありがとうsudo-それは私が行方不明でした。
ACV

5

次の操作を行うことで、再作成して修正することができました。

  • プロセスをリストするものを開きます(ps -ae
  • 呼び出されたプロセスを強制終了shkill <proc_number>

次に、ssh接続を再度開きます

あるいは、私は以下で成功しました:

killall ssh

ローカルマシンのターミナルで


2

もう1つの候補: ss

次のように使用できます:ss -ltp | grep 3000ポート3000でリッスンしているプログラムを見つける

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.