これで、自宅で作業しながら自宅のコンピュータでいくつかのタスクを実行し(vnc接続が遅すぎるため)、タスクコンピュータでいくつかのタスクを実行します(vnc接続が遅すぎるため)。
だから、両方のコンピュータに私の仕事(そしてすべての内容)が保存されているフォルダのコピーがあります。私はrsyncを使用して最新の状態に保ちます(Sshゲートウェイサーバーを介したSSHトンネルを介しても)。すべての方向に更新する必要があることが多いため、時々混乱することがあります。したがって、私は誤って別のコンピュータ上のファイルを修正して、あるコンピュータの新しいタスクを上書きしないように、または他の可能性のある競合を避けるためにテストを実行するのが好きです。
ただし、これはそのオプションを使用して一度、使用せずに一度、コマンドを2回実行する必要があることを意味します-n
。スクリプトを書くと簡単に回避できますが、問題はリモートで接続するにはパスワードを2回入力する必要があることです。
パスワードを一度だけ入力すればよいコマンドを実行できるようにしたいです。このコマンドは練習を実行し、「enter」または「y」または他の項目(またはキャンセル)を押して確認を待ってから、次の操作を行います。本物の同期。可能ですか?
編集する追加の指示:
私がやろうとしていることは次のとおりです。まず、ゲートウェイサーバーを介してSSHトンネルを確立します。 (ssh -N -L 2222:workcomputer:22 me@gatewayserver
パスワードを要求しますme@gatewayserver
。)その後、それを使用してrsync -ruve "ssh -p 2222" me@localhost:~/folder ~/folder
パスワードを要求しますが、パスワードme@workcomputer
を何度も入力したくありません。
答え1
エンドシステムへの初期SSH接続を作成し、ゲートウェイを次のように指定することで、ゲートウェイを介して接続を確立できます。ジャンプホストそして-J
。追加すると、-N -M
この接続は開いたままになり、最終システムに送信される将来のSSHコマンドが最初の接続を介して多重化される可能性があります。
ファイルの先頭に配置します~/.ssh/config
。
ControlPath ~/.ssh/master-%r@%h:%p
その後、一度接続してください。
$ ssh -J me@gatewayserver -N -M me@workcomputer
ゲートウェイのパスワードを入力してから、コンピューターのパスワードを入力するように求められます。一度接続すると、パスワードなしでコマンドを実行できます。
$ ssh me@workcomputer hostname
$ rsync -nv myfile me@workcomputer:/tmp
最初のSSHに加えて、-v
何が起こっているのかを確認することもできます。詳細出力には、作成-v
中のソケットが表示されます~/.ssh
。
debug1: setting up multiplex master socket
debug1: channel 0: new [/home/me/.ssh/master-me@workcomputer:22]
これで、同じターゲットに異なるSSHが必要な場合は、既存のSSHを使用します。
$ ssh me@workcomputer pwd
詳細な出力を提供します。
debug1: multiplexing control connection
debug1: channel 1: new [mux-control]
debug1: channel 2: new [client-session]
debug1: Sending command: pwd
debug1: channel 2: free: client-session, nchannels 3
debug1: channel 1: free: mux-control, nchannels 2
rsyncコマンドも同様です。
$ rsync -nv myfile me@workcomputer:/tmp
sent 43 bytes received 19 bytes 124.00 bytes/sec
total size is 173 speedup is 2.79 (DRY RUN)
出力:
debug1: multiplexing control connection
...
debug1: Sending command: rsync --server -vne.LsfxC . /tmp