SSH経由で接続されているあるコンピュータから別のコンピュータにファイルをコピーしてインポートする

SSH経由で接続されているあるコンピュータから別のコンピュータにファイルをコピーしてインポートする

これと非常によく似た質問に対する多くの回答を読んでいますが、実際に私の問題に合ったものが見つかりませんでした。状況はこんな感じです。アドレスが「machine1@address」のコンピュータがあり、このコンピュータで「machine2@ Different_address」に到達します。これで、machine1のメモリを「永久的に」占有したくないので、自分のコンピュータからmachine2に直接ファイルを送信またはインポートする必要があります。

私の目標は、Pythonスクリプトを作成してこのプロセスを自動化することです。したがって、最善の解決策はmachine1の「ホーム」を開かないことです(実際にどのように呼ぶのかわかりません。理解してください)。なぜなら、Pythonスクリプトは私が閉じるまで実行を停止するからです(少なくともSSHを使うときに何が起こるのかを簡単に説明します)。

ありがとうございます!

答え1

「ホームページ」の用語とユーザー名の「machineX」形式が混同されます。そして私の考えでは、Pythonを使用する必要はまったくないと思います。

私の解決策は次のとおりです

machine2 に SSH トンネルを設定します。

mycomputer$ ssh -L2222:different_address:22 machine1@address

これで、トンネルを介してファイルをコピーしたり、sshfsやrsync、または必要なものをすべて使用できます。

mycomputer$ scp -P 2222 machine2@address:/whatever /target_local_dir

もう1つの方法は、addresssshdが実行されていると仮定し、コンピュータでscpを実行するか、mycomputersshコマンドをcat必要なファイルに関連付けることです。

ssh machine1@address ssh machine2@different_address cat /path_to_the_remote_file > /target_local_file

(必要に応じてSSHキーを配布します)。

答え2

scpを使用できます。

scp ファイル user@machine2:/home/user

あるいはその逆に

scp user@machine2:/ホーム/ユーザー/ファイル/ローカル/ディレクトリ

答え3

machine1からホストまでSSHトンネルを開きます。

ssh user1@machine1-ip-address -p machine1-ssh-port -L local-port:machine2-ip-address:machine2-ssh-port -N

例えば

ssh user1@machine1 -p 22 -L 8181:machine2:22 -N

端末でこれを行うと、machine1パスワードの入力を求められます。トンネルを閉じるので、端末を閉じてはいけません。

2番目の端末を開くと、コンピュータからmachine2に接続できます。コマンドは次のようにする必要があります

ssh user2@machine2 -p 8181

これにより、ローカルコンピュータからSSHを介してmachine2にアクセスできます。

関連情報