Debian autossh 起動スクリプトが正しく動作しません。

Debian autossh 起動スクリプトが正しく動作しません。

私はこの質問の下部に起動スクリプトを書いて、私のデバイスの1つがVPSの起動時に複数のリモート転送ポートを自動的に生成するようにしました。 (フォーカスを維持するためにLSBラベルを削除しましたが有効です。)スクリプトを実行してもエラーは発生しません。 autosshプロセスを作成しますが、VPSへの接続を確立しません。 (クライアントはDebian Wheezyを実行しているRaspberry Piで、VPSはUbuntu Server 14.10です。)ssh個別に使用されるコマンドするうまくいきますが、なぜ起動スクリプトが機能しないのかわかりません。私が気づいたことの1つは、(以下を見ると)-fスクリプトを使用するとフラグがプロセスから完全に削除されますが、ssh.PuTTYを呼び出すと、-f残りのテキストとは異なり、緑色でフラグが立てられることです。なぜこれが起こるのか、問題に関連しているのか教えてはいけません。 (注:すべてのポート番号が変更されましたが、まだ互いに正しく接続されています。)

私の公開鍵は正確で、リモートホストはにありますknown_hosts。パラメータをエスケープしてエスケープしようとしませんでしたが、違いはなく、フラグの周りに引用符をエスケープ/使用しても違いはありません。userroot-o-f

修正するssh exited with error status 255; restarting sshssh(autosshではない)などの個々のコマンドを実行しても、syslogにはすべてのautossh行が表示されます。このエラーは、スクリプトが実行されているか、スクリプトの行が bash で直接実行されているかに関係なく返されます。

スクリプトの関連部分init.d

case "$1" in
  start)
    echo "Creating SSH tunnels"
    autossh -M 0 -f -N -o \"ServerAliveInterval 60\" -o \"ServerAliveCountMax 3\" -R 11111:localhost:22222 -i /home/username/.ssh/id_rsa -p 3333 user@server_ip
    #same command repeated twice more, everything exactly the same but with different ports
    ;;
  stop)
    echo "Stopping SSH tunnels..."
    ps axf | grep autossh | grep -v grep | awk '{print "kill -9 " $1}' | sh
    ;;
  *)
    echo "Usage: /etc/init.d/autossh-gen.sh {start|stop}"
    exit 1
    ;;
esac

ps aux | grep autossh実行すると3行が生成されますが、簡潔にするためにここに1つだけ入れます。リモートサーバーへの実際の接続は確立されません。ポートは閉じたままです。-fスクリプトのコマンドが存在しません。

root     14137  0.0  0.1   1700   976 ?        Ss   01:37   0:00 /usr/lib/autossh/autossh -M 0    -N -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 11111:localhost:22222 -i /home/username/.ssh/id_rsa -p 3333 user@server_ip

このsshコマンドを実行すると...

ssh -f -N -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 11111:localhost:22222 -i /home/username/.ssh/id_rsa -p 3333 user@server_ip

...これがps auxポートに出力されます。はい正常に配信されました。

root     14124  0.0  0.1   5728  1720 ?        Ss   01:31   0:00 ssh -f -N -o ServerAliveInterval 60 -o ServerAliveCountMax 3 -R 11111:localhost:22222 -i /home/username/.ssh/id_rsa -p 3333 user@server_ip

ベストアンサー1

ssh exited with error status 255通常、認証または接続の問題を示します。オプションautosshなしでコマンドを実行すると、-f出力を表示できます。

autossh -M 0 -N -o \"ServerAliveInterval 60\" -o \"ServerAliveCountMax 3\" -R 11111:localhost:22222 -i /home/username/.ssh/id_rsa -p 3333 user@server_ip

autosshマニュアルを超えて:

-fautosshを使用することとsshを使用することには重要な違いがあります-fautossh sshはパスワードやパスフレーズを求めません。

-vデバッグに役立つ転送または-vvオプションを試すこともできますssh

autossh -M 0 -N -vv -o \"ServerAliveInterval 60\" -o \"ServerAliveCountMax 3\" -R 11111:localhost:22222 -i /home/username/.ssh/id_rsa -p 3333 user@server_ip

また、この/usr/lib/autossh/autosshプロセスはセッションを監視し、ssh必要に応じて再起動します。コマンドが機能したら、以下を表示してautossh処理できる必要があります。autosshssh

$ps -eo user,pid,args | grep ssh
----------
someuser    16384  /usr/lib/autossh/autossh -M 33332    -N -R 11111:127.0.0.1:22222 serverip
someuser    16385  /usr/bin/ssh -L 33332:127.0.0.1:33332 -R 33332:127.0.0.1:33333 -N -R 11111:127.0.0.1:22222 serverip

-fしかし、そのオプションをに渡す必要はありませんsshautosshデフォルトではバックグラウンドで実行されます。

おすすめ記事