用語はわかりませんが、基本的に私たちの会社の環境はジャンプホストを使用して設定されているため、SSHトンネルを作成するのは非常に遅いです。それで、私は単一のSSHコマンドで次の3つのステップを実行する方法があることを望みました。
$ scp localfile.jar user@server:~/path/ # upload executable
$ ssh user@server java -jar path/localfile.jar some argument >path/output.bin # run it
$ scp user@server:~/path/output.bin . # download output
それはすべてです。どのような方法がありますか? (サーバーは私のローカルコンピュータにアクセスできませんが、おそらくそうです。)ありがとう!
ベストアンサー1
特に無効にしない限り、多重化を試すことができます。これはまだいくつかのコマンドですが、認証には最初の基本接続のみを使用し、残りのコマンドは事前認証されたチャネルで実行されるため、より速く実行されます。
# Set up master connection to target system
ssh -S "$HOME/.ssh.sock" -M -o ControlPersist=yes -fN user@server
# Perform the commands using the master connection
scp -o ControlPath="$HOME/.ssh.sock" localfile.jar user@server:path/
ssh -S "$HOME/.ssh.sock" user@server java -jar path/localfile.jar some argument >path/output.bin
# Tear down the master connection when you have finished
ssh -S "$HOME/.ssh.sock" -O exit user@server
コマンドはssh
すでに出力地元の文書path/output.bin
。
使用を中止して閉じることを忘れた場合は、デフォルトセッションが自動的に終了するように(たとえば、1分タイムアウトではなくControlPersist=60
)、デフォルトセッションのタイムアウトを指定できます。ControlPersist=yes
~/.ssh/ssh_config
これらのタスクを頻繁に実行する場合は、ターゲットのデフォルト設定を再定義することをお勧めしますserver
。