从受PAM认证管控的Linux服务器A拉取远程服务器B文件的可行方案咨询
从受PAM认证管控的Linux服务器A拉取远程服务器B文件的可行方案咨询
当然有完全适配你场景的解决方案!我来给你梳理几个实操性拉满的方法,完美解决你的痛点:
核心逻辑拆解
你现在的困境是「从B推文件到A需要B持有A的PAM凭证,但你根本没法给B配置这个权限」,那咱们换个思路——从你已经登录的A服务器主动发起连接到B,用你手里的B服务器凭证完成认证,把B上的文件直接拉到A本地,所有限制瞬间就绕开了。
方法一:用scp直接拉取(最通用的基础方案)
当你已经通过PAM认证登录到服务器A之后,直接在A的命令行里执行以下命令:
scp 你的B服务器用户名@服务器B的IP/域名:/B上目标文件的完整路径 /A上要保存的本地路径
举个实际的例子:假设你在B的用户名是bob,B的IP是10.0.0.8,要拉的文件是/home/bob/project_data.tar.gz,想存到A的/data目录下,命令就是:
scp bob@10.0.0.8:/home/bob/project_data.tar.gz /data/
执行后会立刻弹出输入B服务器密码的提示(如果你用密钥登录B,就会自动调用对应的密钥完成认证),输入你持有的B凭证后,文件就会从B传输到A了。
这个方法的优势是零额外配置,只要A能访问B的SSH默认22端口就能用,完全符合你「文件只能从B到A」的网络限制。
方法二:用rsync拉取(大文件/增量更新首选)
如果要传输的是大文件,或者后续需要频繁更新同一份文件,用rsync会高效很多——它只会传输文件中变化的部分,能省不少带宽和时间。命令格式和scp几乎一致:
rsync 你的B服务器用户名@服务器B的IP/域名:/B上目标文件的完整路径 /A上要保存的本地路径
执行后同样会提示你输入B的凭证,完成认证后就会开始传输。
几个要注意的细节
- 请确认服务器A能访问B的SSH默认22端口,如果网络里有防火墙规则,得先确保A到B的22端口是开放的;
- 如果你习惯用密钥登录B,也可以把A服务器当前用户的公钥添加到B对应用户的
~/.ssh/authorized_keys文件里,这样后续拉取文件就不用每次输密码;但如果你希望每次都手动输入凭证,保持B的密码登录配置就好。
备注:内容来源于stack exchange,提问作者Wilfred Muhia
相关产品推荐
相关产品推荐

