システム起動時に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: