跨两台服务器传输文件的Bash脚本

跨两台服务器传输文件的Bash脚本,bash,file,ssh,remote-access,Bash,File,Ssh,Remote Access,我正在编写一个bash脚本来执行以下操作:将特定文件传输到跳转服务器,然后将同一文件从跳转服务器传输到最终服务器。我最初的想法是先SCP文件,然后SSH到跳转服务器,然后再SCP文件一次,但是bash脚本在我SSH到跳转服务器时终止。我对bash相对缺乏经验,想知道如何执行这种两段式文件传输,或者有没有比我目前使用的更好的方法 scp已经可以处理通过跳转服务器连接到目标的详细信息。不需要额外的脚本编写 scp -o ProxyJump user@jumphost /path/to/local_f

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

scp
已经可以处理通过跳转服务器连接到目标的详细信息。不需要额外的脚本编写

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

scp
已经可以处理通过跳转服务器连接到目标的详细信息。不需要额外的脚本编写

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

使用ssh代理跳转。在~/.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
和服务器3仅来自服务器2

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
或在它们之间复制文件\dir

scp some_file server3:/home/user/

但此方法最好与RSA密钥自动识别一起使用

使用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
和服务器3仅来自服务器2

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
或在它们之间复制文件\dir

scp some_file server3:/home/user/

但这种方法最好与RSA密钥自动识别一起使用

我不知道ProxyJump。我用
ProxyCommand
写了一个答案。我认为
ProxyJump
是一个更新的选项(至少比
ProxyCommand
更新),用来处理
ssh
作为代理命令的常见用法。我不知道ProxyJump。我用
ProxyCommand
写了一个答案。我认为
ProxyJump
是一个更新的选项(至少比
ProxyCommand
更新),可以处理
ssh
作为代理命令的常见用法。