Автоматизировать вход по SSH под Windows

1

Я хочу, чтобы иметь возможность запуска openssh с некоторыми пользовательскими аргументами, а затем иметь возможность автоматически войти на сервер. Я хочу, чтобы мой script вводил пароль при необходимости и вводил "да", если мне было предложено добавить отпечаток пальца к известным хостам.

Я нашел SharpSsh для С#, который это делает, но мне также нужно использовать параметр -D и использовать ProxyCommand, который я определяю в SSH, и для библиотеки этого недостаточно.

Еще одна вещь, которую я нашел, была Pexon, которая должна была сделать трюк, но я не мог найти, где ее скачать, на официальной странице меня перенаправляют из sourceforge на некорректную ссылку.

Любая помощь будет оценена,

Билл.

Теги:
ssh

7 ответов

9

Если вы используете OpenSSH, а затем script, чтобы ввести пароль в ясный (это означает, что вы сохранили пароль незашифрованным), он побеждает цель безопасной оболочки.

Пожалуйста, решите использовать механизмы открытого ключа, которые можно легко и безопасно автоматизировать.

3

Я рекомендую использовать аутентификацию с открытым ключом. Вместо того, чтобы ожидать от вас ожидания, вы можете рассмотреть Paramiko - это собственный SSH-клиент для Python, который значительно упростит процесс связи, особенно если вам когда-либо нужно взаимодействовать с удаленным сервером, и он поддерживает такие функции, как встроенный SFTP.

  • 0
    Я также собирался предложить Paramiko, но Крис опередил меня.
  • 0
    Жаль, что нет встроенного scp.
Показать ещё 1 комментарий
2

Я использую pexpect для аналогичной цели и загружаю также работу? http://sourceforge.net/project/downloading.php?group_id=59762&filename=pexpect-2.3.tar.gz

вот часть моего ssh automate script, вы можете настроить его для использования это может не закончиться из коробки

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
1

Существует отличная документация при использовании Putty с генерируемой аутентификацией ключа SSH. Это простой и безопасный способ достижения ваших целей. Putty имеет большой набор функций для приложения SSH для Windows. Еще лучше, если учесть, что вы можете получить его бесплатно.

0

Другой способ - использовать openssh и установить доверенный ключ; если оба клиента и учетная запись пользователя на сервере имеют этот ключ, то openssh не запрашивает пароль.

У меня есть script, который автоматизирует настройку этого - он работает под cygwin,

http://mosermichael.github.io/cstuff/all/projects/2011/07/14/ssh-friends.html

0

pexpect не может импортироваться в Windows. Таким образом, я использую plink.exe с подпроцессом Python для подключения к серверу ssh.

-2

Я надеюсь, Net::SSH::Expect Модуль Perl поможет вам.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню