2009-06-16 5 views
1

私はいくつかのカスタム引数でopensshを実行し、サーバーに自動的にログインできるようにします。必要に応じてスクリプトにパスワードを入力し、既知のホストに指紋を追加するように求められたら「はい」を入力します。ウィンドウ下のSSHログインを自動化

私はSharpSshをC#で実行していますが、-Dパラメータを使用してSSHで定義したProxyCommandも使用する必要があります。

私が見つけたもう一つのことは、トリックを行う必要があるPythonのpexceptでしたが、私はsourceforgeからいくつかの壊れたリンクにリダイレクトされています。

助けてください、

ビル。

答えて

-1

私はNet::SSH::Expectあなたが助けてくれることを願っています。

9

OpenSSHを使用してパスワードをクリアにするスクリプトがある場合(つまり、暗号化されていないパスワードが保存されている場合)、セキュアシェルの目的を無効にします。

簡単に安全に自動化できるpublic key mechanismsの使用を強く検討してください。

2

私は同様の目的のためにpexpectを使用し、ダウンロード作業もできますか?ここ http://sourceforge.net/project/downloading.php?group_id=59762&filename=pexpect-2.3.tar.gz

それは箱から出して

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 
3

を実行することはできません私のsshのあちこちの部分はスクリプトを自動化し、あなたの使用 のためにそれをカスタマイズすることができている私は、公開鍵認証を使用する2番目の勧告よ。期待通りにハックするのではなく、Paramikoを考慮する必要があるかもしれません。これはPython用のネイティブSSHクライアントであり、通信プロセスを大幅に簡素化します。特に、リモートサーバーと対話する必要があり、SFTPビルド、に。

+0

私もParamikoを提案するつもりだったが、クリスはそれに私を打ちます。 – ShawnMilo

+0

scpが組み込まれていないと悪いです。 – g33kz0r

+0

Noah:scp「プロトコル」がアドホックであるため、可能な限りSFTPを使用したいと考えています。 SFTPクライアントはずっと一貫して相互運用する傾向があります - あなたがどこでもOpenSSHを使用している場合は問題ではありませんが、商用SSHサーバーではさまざまな問題が発生しています –

1

Puttyを使用して生成されたSSH鍵認証では、excellent documentationがあります。これはあなたの目標を達成するための簡単で安全な方法です。 Puttyには、Windows SSHアプリケーション用の優れた機能があります。あなたができると思うときはさらに良いget it on the free

0

pexpect Windowsではインポートできません。したがって、私はplink.exeをPythonのサブプロセスとともに使用してsshサーバに接続します。

0

別の方法は、opensshを使用して信頼できる鍵を確立することです。サーバー上のクライアントとユーザーアカウントの両方にこのキーがある場合、opensshはパスワードを要求しません。

私はこれのセットアップを自動化するスクリプトを持っている - それはcygwinの下に動作し、

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

関連する問題