Bash脚本在两台服务器之间传输文件

时间:2020-01-14 17:50:08

标签: bash file ssh remote-access

我正在编写bash脚本来执行以下操作:将特定文件传输到跳转服务器,然后将相同文件从跳转服务器传输到最终服务器。我最初的想法是先将文件放入SCP,然后再SSH进入跳转服务器,然后再将SCP再次进入文件,但是当我通过SSH进入跳转服务器时,bash脚本终止。我对bash经验不足,想知道如何执行此两段式文件传输,或者是否有比我目前使用的方法更好的方法?

2 个答案:

答案 0 :(得分:2)

scp已经可以处理通过跳转服务器连接到目标的详细信息。无需其他脚本。

scp -o ProxyJump user@jumphost /path/to/local_file final_server:/destination/path

答案 1 :(得分:0)

使用ssh ProxyJump。在〜/ .ssh中创建\编辑配置文件

nano ~/.ssh/config

如果您的主目录中没有〜/ .ssh文件夹,请创建它

mkdir -p ~/.ssh; chmod 700 ~/.ssh

配置必须为600

chmod 600 ~/.ssh/config

在此文件中,您可以像这样为服务器创建ssh别名

Host server1 # ssh-alias name
HostName 192.168.0.1 # server name or ip address
User user # user to login

假设有两个(或更多)服务器,但是只能从server1到达它们。

Host server2 # ssh-alias name
HostName 192.168.0.2 # server name or ip address
User user # user to login
ProxyJump server1 # jump server

仅来自server2的server3

Host server3 # ssh-alias name
HostName 192.168.0.3 # server name or ip address
User user # user to login
ProxyJump server3 # jump server

此配置将创建服务器“链”以访问具有简单名称的远程主机

ssh server3

或在它们之间复制文件\目录

scp some_file server3:/home/user/

但是此方法最好用于RSA密钥强化