システム起動時にsshリバーストンネルを起動したいのですが。次の行では、トンネルを正常に確立できますが、特にinitスクリプトからではなく、不要なserver
にログインすることになります。
/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...
に変更すると機能しないように見えることです。私はこれをinitスクリプトの一部として試しました。これは次のようになります。
#! /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オプションが機能しない場合、どうすればよいですか?
あなたが探しているのは-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:
を使用するローカルポートに置き換えます。