多重化用に設定されたSSHセッションを維持するためにautosshを使用したいと思います。これにより、localhostで継続的なSSH接続を利用するスクリプトを作成できます。 sshとautosshが同じように機能するのに問題があり、誰かが私を助けることができることを願っています。
私の~/.ssh/configファイルの内容...
Host cg*
ServerAliveInterval 300
ServerAliveCountMax 2
ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r
ControlPersist yes
デフォルトのSSH接続を作成しています...
$ ssh -fNn jehudson@cg5
$ ps aux | grep ssh
jehudson 11813 0.0 0.1 5744 628 ? Ss 18:42 0:00 ssh -fNn cg5
接続が再利用されていることを確認してください...
$ ssh -O check cg5
:
Master running (pid=11813)
基本セッションでセッションを開いて閉じる...
$ ssh cg5
$ ...
$ exit
Shared connection to cg5 closed.
これはうまくいくようです。今同じことをしたいのですが、autosshを使いたいです。
基本接続を終了します...
$ ssh -O exit cg5
Exit request sent.
autossh経由で接続を開く...
$ autossh -M 0 -fNn jehudson@cg5
$ ps aux | grep autossh
jehudson 11826 0.0 0.1 3660 772 pts/1 S+ 18:45 0:00 grep --color=auto autossh
(!)うーん、おかしいですね…autosshが起動しないようだったり、起動しても非常に早く終了します。
$ ps aux | grep ssh
jehudson 11823 0.0 0.1 5744 916 ? Ss 18:45 0:00 ssh: /home/jehudson/.ssh/control:cg5:22:jehudson [mux]
(!?)トンネルが開いているようですが、作成後にautosshが維持し続けませんでした!そして、今回のプロセス記述に制御ファイルがリストされているのはなぜですか?
$ ssh -O check cg5
Master running (pid=11823)
明らかに多重化されたSSHセッションが確立されましたが、autosshでは監視されません。
autosshが許可するさまざまなフラグの組み合わせを試しましたが、単純なマルチSSH接続を開き、それをバックグラウンドで送信し、autosshで監視する方法を見つけることができませんでした。私が見逃した可能性があるものを見つけたか、試してみるべき提案があれば教えてください。
答え1
autossh
プレイがうまくいったようではありませんねControlPersist
。有効にしておくと、ControlPersist
その期間が経過すると接続は終了します。だから:
autossh -f -M0 -N -oControlPersist=no $DEST