Ubuntuで起動時にautosshを使用してリバーストンネルを起動する

Ubuntuで起動時にautosshを使用してリバーストンネルを起動する

システム起動時にSSHリバーストンネルを起動したいです。下の行はトンネルをうまく設定します。しかし、最終的にはserver望ましくない方法でログインします。特にinitスクリプトではログインしません。

/usr/bin/autossh -M 22222 -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i /path/to/my/key.key -R 9999:localhost:22 ubuntu@server

man autossh-fこのオプションは私の要件に合うべきであると言います。

SSHを実行する前にautosshがバックグラウンドに移動するようにします。

しかし、問題は、コマンドを変更しても機能しないようですusr/bin/autossh -f -M...。また、次のように初期化スクリプトの一部としてこれを試しました。

#! /bin/sh
### BEGIN INIT INFO
### END INIT INFO
case "$1" in
    start)
        echo "Starting autossh"
        /usr/bin/autossh -M 22222 -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i /path/to/the.key -R pppp:localhost:22 user@server
    ;;
    stop)
        echo -n "Shutting down utossk"
        /usr/bin/killall -KILL autossh
    ;;
    *)
        echo "Usage: $0 {start|stop}"
        exit 1
esac
exit 0

ただし、これをバックグラウンドに配置するオプションが必要です。 -fオプションが機能しない場合はどうすればよいですか?

答え1

あなたが探しているのは-Nオプションです。 SSHのマニュアルページから:

-N リモートコマンドを実行しません。これはポート転送に役立ちます。

完全なコマンドは次のとおりです。

/usr/bin/autossh -M 22222 -f -N -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i /path/to/my/key.key -R pppp:localhost:22 user@server

これも私が(cronで@reboot)うまく使用していることです。使用したいローカルポートに
置き換えます。pppp:

関連情報