これと非常によく似た質問に対する多くの回答を読んでいますが、実際に私の問題に合ったものが見つかりませんでした。状況はこんな感じです。アドレスが「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つの方法は、address
sshdが実行されていると仮定し、コンピュータでscpを実行するか、mycomputer
sshコマンドを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にアクセスできます。