【问题标题】:simple code to connect to remote linux without python library无需python库即可连接到远程linux的简单代码
【发布时间】:2021-02-24 14:17:32
【问题描述】:

代码有效,但它仍然要求在 cmd 中输入密码:

import subprocess
import os, sys
password='password'
    
args = ['ssh', '-p', 'ssh', 'user@<ip>', 'ls']
proc = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
    
proc.stdin.write('password\n')
proc.stdin.flush()
proc.stdin.close()
stdout, stderr = proc.communicate()
    
print (stdout)

【问题讨论】:

  • 任何帮助将不胜感激
  • ssh 直接从终端读取其密码,而不是标准输入。
  • @nitz:有什么问题,如何将密码传递给 ssh ?
  • 设置基于密钥的身份验证..
  • @rasjani tbh 我宁愿使用密码连接远程机器,也不愿使用无密码私钥。

标签: python linux subprocess


【解决方案1】:

SSH 客户端实用程序不会从标准输入中读取密码。可能是为了阻止人们做你想做的事。

您真的应该考虑为此使用 ssh 库。但是如果你真的坚持不使用外部库的话,你至少得用standard pty module来钩住SSH的控制终端。

来自官方文档:

pty.spawn(argv[, master_read[, stdin_read]])

生成一个进程,并将其控制终端与当前进程的标准 io 连接。这通常用于阻碍坚持从控制终端读取的程序。

另外,在源代码中硬编码密码是一个非常糟糕的主意,请查看standard getpass module

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-05
    • 2011-12-26
    • 1970-01-01
    • 2022-09-28
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    相关资源
    最近更新 更多