我有一台服务器ServerA(user1作为用户ID)。我想连接到同一服务器ServerA,用户ID为user2,然后执行scp从其他服务器获取文件并保留在ServerA服务器中(userid作为user2)。
有人可以请尽快帮助我。
答案 0 :(得分:0)
将scp作为user1,然后将文件chown到user2会不会更容易?如果您需要将它们存储在只有user2可访问的位置,您可以转到user2并移动它们。
答案 1 :(得分:0)
假设您在hostC(客户端)上,并且您希望将文件从userX @ hostA复制到userY @ hostB。
您可以在hostC上发出scp命令:
scp userX@hostA:file-to-copy userY@hostB:destination-folder/
但是,您需要进行身份验证。如果为userX @ hostA设置了ssh密钥,则密钥验证将正常工作。
但是scp
会调用ssh
选项来禁用代理转发或清除转发密钥,这样即使你有一个用户名@ hostB的密钥,它也不会被hostB和你用系统会提示输入密码。
对此的一个解决方案是使用包装器脚本将-S <ssh-command>
传递给scp
上hostC
的调用,以去除阻止代理转发的选项,可能必须明确启用它
e.g。
ssh-wrapper.py
#!/usr/bin/python
import sys, os
def is_exe(fpath):
return os.path.exists(fpath) and os.access(fpath, os.X_OK)
def which(program):
fpath, fname = os.path.split(program)
if fpath:
if is_exe(program):
return program
else:
for path in os.environ["PATH"].split(os.pathsep):
exe_file = os.path.join(path, program)
if is_exe(exe_file):
return exe_file
return None
if __name__ == '__main__':
ssh = which('ssh')
assert ssh is not None
args = [ssh] + sys.argv[1:]
for x in ('-a','-oClearAllForwardings yes'):
if x in args:
args.remove(x)
if '-oForwardAgent yes' not in args:
args.insert(1,'-oForwardAgent yes')
os.execl(ssh,*args)
调用scp
:
scp -S ssh-wrapper.py userX@hostA:file-to-copy userY@hostB:destination-folder/