两个远程主机之间的scp - 没有密码

时间:2012-10-11 12:03:55

标签: python ssh paramiko

我使用paramiko模块,我只需将文件放入远程主机即可。有没有办法在两个远程主机之间复制文件? 我在本地主机上有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).

3 个答案:

答案 0 :(得分:3)

Hey Francheska,

以下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!"

干杯,

萨曼斯

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

尝试将dirs和嵌套子目录从本地复制到远程:

cmd = "sshpass -p {} scp -r {}/* root@{}://{}".format(
    remote_root_pass, 
    local_path, 
    remote_ip, 
    remote_path)
os.system(cmd)
不要忘记导入操作系统,你可以检查返回的exitcode(0表示成功)

此外,您可能需要安装sshpass"

并更改/ etc / ssh / ssh_config StrictHostKeyChecking要求:StrictHostKeyChecking no