【问题标题】:Cant edit files in remote VM via Paramiko无法通过 Paramiko 在远程 VM 中编辑文件
【发布时间】:2015-08-15 21:54:51
【问题描述】:

我正在尝试配置具有 Ubuntu 14.04 云映像的远程虚拟机来安装绑定 DNS 服务器。目前我可以使用 SSH 进入它:

ssh.connect( hostname = dns_ip , username = "ec2-user", pkey = k )

我还可以使用以下方法在/tmp 目录中编辑/创建文件:

stdin, stdout, stderr = ssh.exec_command("cat >> /tmp/named.conf.local")
stdin.write('key ' + domain +'. {\n')
stdin.flush()
stdin.write('algorithm "HMAC-MD5";\n')
stdin.channel.shutdown_write()

但是我无法在/etc 目录中执行相同的操作。我试过了:

  1. 使用 : 更改文件权限:

    channel = ssh.invoke_shell() 
    channel.send("sudo chmod 755 /etc/bind/named.conf.local")
    
  2. 在远程 VM 中生成脚本以执行相同的任务

  3. 将文件从服务器复制到远程目录

似乎我无法更改写入它所需的文件权限,并且我正在使用的图像没有密码(我只能通过密钥文件访问它)。请帮帮我,我已经卡了 5 个小时了

【问题讨论】:

  • 如果你有python2,你可以试试fabric,或者看看它的代码并检查fabric如何调用paramiko
  • 或者目标文件是不可变的。仔细检查 lsattr /etc/bind/named.conf.local
  • 目标文件非常可编辑。我可以使用 SSH 直接访问虚拟机并以 root 用户身份对其进行编辑。但是我不能对 python paramiko 库做同样的事情。
  • 就是一个很好的例子:stackoverflow.com/questions/22587855/…
  • 日志说什么? logging.getLogger("paramiko").setLevel(logging.DEBUG)

标签: python file ssh paramiko


【解决方案1】:

使用“root”通过 SSH 连接到虚拟机后,我能够编辑文件。

ssh.connect( hostname = dns_ip , username = "root", pkey = k )

以 root 身份进行 SSH 我按照此链接上的说明进行操作 https://serverfault.com/questions/294892/how-can-i-login-amazon-ec2-with-root-directly-in-putty-or-winscp

【讨论】:

    猜你喜欢
    • 2018-04-25
    • 2015-11-27
    • 1970-01-01
    • 2016-05-31
    • 2017-03-10
    • 1970-01-01
    • 2021-11-14
    • 2010-10-08
    • 1970-01-01
    相关资源
    最近更新 更多