2

我使用 paramiko 模块,我可以简单地将文件放入和从远程主机获取文件。有没有办法可以在 2 个远程主机之间复制文件?我的本地主机上有 pem 文件,因此我可以为两台主机建立 ssh。有没有办法我可以在没有(如果可能的话)远程主机上进行额外配置的情况下 - 使用 SSH 密钥并且没有密码?

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
privkey = paramiko.RSAKey.from_private_key_file (path_to_priv_key_file)
ssh.connect(host, username = username,  key_filename=path_to_priv_key_file)

我已经连接到远程主机,但是当我尝试

cmd = "scp –v /usr/local/1.py user1@hos1:/usr/local"
ssh.exec_command(cmd)

我明白了Permission denied (publickey).

4

3 回答 3

3

嘿弗兰切斯卡,

以下 python 伪代码可能会对您有所帮助...将 dest_server、source_file、dest_file 替换为您的适当...它已经过测试并且可以正常工作...

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('dest_server-IP', username='user', password='passwd')

print "connected successfully!"

sftp = ssh.open_sftp() 
sftp.put('source_file', 'dest_file_path_in_dest_server') 
sftp.close() 
print "copied successfully!"

干杯,

苏曼思

于 2013-02-01T06:08:08.103 回答
1

基本上,您希望在两台机器之间建立无密码连接。除非您可以确保没有其他人可以访问客户端计算机,否则这是很危险的。

看看这里如何创建我多年前在我的博客中描述过的无密码连接。它也将解决 scp 问题。

http://greg-n-blog.blogspot.com/2009/10/ssh-and-scp-without-being-asked-for.html

于 2012-10-17T23:38:40.923 回答
0

试试这个将目录和嵌套的子目录从本地复制到远程:

cmd = "sshpass -p {} scp -r {}/* root@{}://{}".format(
    remote_root_pass, 
    local_path, 
    remote_ip, 
    remote_path)
os.system(cmd)

不要忘记导入操作系统,您可以检查返回的退出代码(0表示成功)

此外,您可能需要“yum install sshpass”

并将 /etc/ssh/ssh_config StrictHostKeyChecking ask 更改为: StrictHostKeyChecking no

于 2015-10-15T07:00:53.347 回答