/etc/inittabのautossh

/etc/inittabのautossh

NATの背後にあるターゲットコンピュータに接続できるようにSSHトンネルを設定しました。私のコンピュータの/etc/inittabに以下を置きました。

tu:2345:respawn:/usr/bin/autossh -M 20000 -f -n -N -T -R 6790:localhost:22 [email protected]

動作します。つまり、ssh -p 6790 me@localhost を実行して接続できます。ただし、場合によっては、ターゲット コンピューターに次のメッセージが表示されます。

INIT: Id "tu" respawning too fast, disabled for 5 minutes

サーバーの/var/log/secureに次のものがあります。

Oct 29 03:11:15 vm sshd[19725]: Accepted publickey for me from 90.179.155.74 port 37416 ssh2
Oct 29 03:11:15 vm sshd[19727]: Received disconnect from 90.179.155.74: 11: disconnected by user
Oct 29 03:17:04 vm sshd[20892]: Accepted publickey for me from 90.179.155.74 port 40116 ssh2
Oct 29 03:17:15 vm sshd[20896]: error: bind: Address already in use
Oct 29 03:17:19 vm sshd[20896]: error: channel_setup_fwd_listener: cannot listen to port: 20000

このような状況が続いています。何が間違っているのか知っていますか?

答え1

わかりました。答えを見つけました。 -f オプションを使用して autossh を呼び出すと、それ自体がデーモンプロセスにフォークされ、親プロセスが終了します。だからinitはそれを再生成します...そして続けて...

私はautosshを使うべきだとは思わず、sshだけを使うべきだと思います。 respawnはinitによって実行されるため、autosshによる別の自動respawnは必要ありません。私はその行を次のように変更しました。 tu:2345:respawn:/usr/bin/ssh -n -N -T -R 6791:localhost:22 [email protected]

私も追加しました

ServerAliveInterval 15
ServerAliveCountMax 2

接続を維持するには、/etc/ssh/ssh_configに移動します。

私の考えでは、この設定は大丈夫だと思います。

答え2

ssh自分の答えで述べたように、代わりにgood oldを使用するのがautossh効果的であれば、それは良いことであり、読みを中止することができます。

私はssh / sshd設定調整がまったく機能せず、時には信頼できるトンネルが動作する状況に何度もありました。保留とにかく善意で衝突するよりも。これらすべての場合、autosshそれは魅力のように動作します。

したがって、最終的にこれに戻ると、autossh私が使用する方法は次のようになります。inittabセッション内で実行するのではなく、screenセッション内で実行します。簡単なスクリプトを作成し、次のように呼び出してみましょうautossh.sh

#!/bin/sh
tunnelsite=autossh-host1
if ! screen -ls | grep -F .$tunnelsite >/dev/null; then
    screen -d -m -S $tunnelsite autossh -N $tunnelsite
fi

スクリプトは、すでに実行されている指定された名前のスクリーンセッションがあることを確認し、それを終了し、そうでなければ作成します。

定期的に実行するようにクローンジョブをスケジュールします。

*/15 * * * * AUTOSSH_PORT=0 /path/to/autossh.sh

これはAUTOSSH_PORT=0、Mac OS Xで経験している奇妙な問題を解決するためのものです。無視しても構いませんが、私はLinuxでもこの方法を問題なく使用しています。

最後に、セキュリティのヒント:まだこれを行わない限り、専用SSHキーを使用してautosshを介してトンネルを認証し、次のオプションにキー.ssh/authorized_keys認証を制限します。

command="/bin/false",no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAA...

これにより、キーが破損してもトンネルを作成するためにのみ使用できます。

実際、GitHubにはこの設定を簡単にするスクリプトプロジェクトがあります。https://github.com/janosgyerik/autossh-tunnel

関連情報