4

セキュリティの問題に関係なく、パスワードを(プレーンテキストの形式で)スクリプトファイルに入れることでsshログインを自動化したいです。たとえば、私はフォローしようとしましたが、成功しませんでした...

echo "mypassword" | ssh -X root @ remote_node_address

それでもパスワード入力を求めるプロンプトが表示されます...

編集:私はパスフレーズのないsshを設定することを知っています(そして実際にこれを行いました)。私の質問は、パスフレーズのないsshを設定するプロセスを自動化する方法です...

4

3 に答える 3

9

Expectで自動化

Expectを使用して、SSHでパスワード認証を駆動できます。例えば:

#!/usr/bin/expect -f
set timeout -1
spawn ssh -o PubkeyAuthentication=no host.example.com
expect -exact "Password: "
send -- "secret\r"
expect {\$\s*} { interact }

このスクリプトは非常に基本的な例であり、障害が発生した場合や、 GNU screenなどの非標準のリモートTERMで実行している場合は特に堅牢ではありませんが、一般的なケースでは機能します。また、expect-devパッケージの/ usr / bin / autoexpectを使用して、手動セッションに基づいて独自のカスタムスクリプトを生成することもできます。

于 2012-09-02T16:27:14.900 に答える
2

公開鍵認証を使用する必要があります。を参照してください。

http://www.ece.uci.edu/~chou/ssh-key.html

既存のホストに新しいキーを追加するには、リモートマシンの〜/ .ssh/authorized_keysにある公開キーの更新を自動化する必要があります

簡単にできます

ssh-keygen -t rsa -b 1024 -f ~/.ssh/new-key -P ""
cat ~/.ssh/new-key.pub | ssh root@target-host 'cat >> ~/.ssh/authorized_keys'

次に、新しいキーを使用してホストにアクセスできます。

ssh -i ~/.ssh/new-key root@remote-host
于 2012-09-02T15:22:05.110 に答える
0

最近空っぽになりました。「sshの自動化方法」などの問題が発生したときに話題になることはめったにないので、あまり知られていないようです。

私はopenwrtでそれを使用します、それは依存関係のないサイズで約7KBのパッケージを持っていますが、tclパッケージは約440KBです。また、シェルで直接使用できます。

「emptyは、疑似端末セッション(PTY)でプロセスを実行および/または対話するためのインターフェイスを提供するユーティリティです。このツールは、telnet、ssh、ftpなどの対話型プログラムと通信するように設計されたシェルスクリプトのプログラミングに非常に役立ちます。 。場合によっては、空がTCL/expectまたは他の同様のプログラミングツールの最も簡単な代替品になることがあります。

例えば:

#!/bin/sh

empty -f -i in -o out telnet foo.bar.com
empty -w -i out -o in "ogin:" "luser\n"
empty -w -i out -o in "assword:" "TopSecret\n"
empty -s -o in "who am i\n"
empty -s -o in "exit\n"
于 2014-05-07T15:09:16.847 に答える