我读了很多与此非常相似的问题的答案,但我找不到真正适合我的问题的东西。情况是这样的。我有一台机器,其地址是“machine1@address”,从这台机器我到达“machine2@ different_address”。现在,我必须直接从计算机上向 machine2 发送文件/从 machine2 获取文件,因为我不想“永久”占用 machine1 上的内存。
我的目标是通过编写 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
另一种方法是从address
计算机运行 scp,假设 sshd 正在运行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:/home/用户/文件/本地/目录
答案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 密码。您不应该关闭该终端,因为您将关闭隧道。
现在打开第二个终端,您应该能够从您的计算机连接到 machine2。命令应该是
ssh user2@machine2 -p 8181
这样您就可以从本地计算机通过 ssh 访问 machine2。