在windows下自动SSH登录

2024-09-30 00:33:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望能够使用一些自定义参数执行openssh,然后能够自动登录到服务器。我希望我的脚本在需要时输入密码,并在提示我将指纹添加到已知主机时注入“yes”。在

我已经找到了用于C的SharpSsh,可以做到这一点,但是我还需要使用-D参数和在SSH中定义的ProxyCommand,而这个库对于这种用法非常缺乏。在

我发现的另一件事是peexcept for Python,它应该能做到这一点,但我找不到下载它的地方,在官方页面上,我正从sourceforge重定向到某个断开的链接。在

任何帮助都将不胜感激

比尔。在


Tags: 服务器脚本密码用法for参数定义地方
3条回答

我将支持使用公钥身份验证的建议。与其用expect来解决问题,不如考虑一下Paramiko-它是Python的一个本地SSH客户机,它将大大简化通信过程,特别是如果您需要与远程服务器交互,并且它支持诸如SFTP之类的内置功能。在

我用pexpect做类似的用途,下载也行吗? http://sourceforge.net/project/downloading.php?group_id=59762&filename=pexpect-2.3.tar.gz

下面是我的ssh自动脚本的一部分,您可以根据自己的使用情况对其进行自定义 它可能不会用完

import os
import getpass
import pexpect
import glob
import logging
import shutil
import time

class UpdateError(Exception): pass

g_password = None

def runSshCommand(cmd):
    global g_password

    ssh_newkey = 'Are you sure you want to continue connecting'
    # my ssh command line
    p=pexpect.spawn(cmd)

    i=p.expect([ssh_newkey,'password:',pexpect.EOF])
    if i==0:
        print "Saying yes to connection.."
        p.sendline('yes')
        i=p.expect([ssh_newkey,'password:',pexpect.EOF])

    if i==1:
        while True:
            if g_password is None:
                g_password = getpass.getpass("password:")
            p.sendline(g_password)
            i = p.expect(['password:',pexpect.EOF])
            if i==0:
                g_password = None
                print "Wrong password"
            else:
                break
    elif i==2:
        raise UpdateError("Got key or connection timeout")

    return p.before

如果您使用OpenSSH,然后有一个脚本在clear中插入密码(意思是,您未加密地存储了密码),则会破坏secure shell的用途。在

请强烈考虑使用public key mechanisms,它可以轻松安全地自动化。在

相关问题 更多 >

    热门问题