我使用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).
答案 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