2009-09-22 5 views
6

まず、このトピックに関する多くの質問があることをよく認識しています。私はそれらを読んだが、それでも私の状況に適切な答えを見つけることができた。シェルスクリプトでSCPを使用する際のパスワードプロンプトにどのように応答するのですか?

scp全部~/cs###/assign1シェルスクリプトを使用してローカルから学校のホームディレクトリに移動します。私の質問は、パスワードのプロンプトを待ってから、キーボードのイベントをシミュレートして自分のパスワードに「入力」する方法です。


hereキー

+0

この質問はあなたの状況とまったく同じように聞こえます:http://stackoverflow.com/questions/50096/how-to-pass-password-to-scp – innaM

+0

推定上の重複した質問への回答は 'sshキーBZに言及されているように。 –

+0

シンプルなシェルコマンドまたはunixコマンドだけを使って解決策ができることを期待していました。 – derrdji

答えて

10

を設定する方法の詳細は本当にガイドで許可されていないSSHキーはありますか?それがより良い解決策になるでしょう。

+2

ええ、それが鍵です。 :-) –

2

私はあなたが簡単にそれを行うことはできないと思います。あなたはになります。は、代わりに公開鍵認証を使用しています。これらの線に沿って

何か

ssh-keygen -t rsa 
ssh school mkdir .ssh/ 
cat ~/.ssh/id_rsa.pub | ssh school "cat >>.ssh/authorized_keys" 

(又はdsa)。

でも、サーバーフォールトではありませんか? ;-)

+0

サーバーとすべてが学校で設定されていましたが、私はその設定で制御できません – derrdji

+2

これらの設定はホームディレクトリにあります。 –

3

キーまたは外部ライブラリの使用を検討してください。

私はそれが違う可能性はないと思います(私は間違ってはいけないと思います)。これはパスワードの自動ブルートフォース侵入とスニッフィングを課すためです。

libsshなど、SFTPプロトコルを使用してSFTPプロトコルを使用するライブラリがあります。

また、キーをお勧めします。

+0

でも、ライブラリを使ってブルートフォース攻撃を自動化することができます;-) –

0

私の大学のWindowsラボで行われているAFS、NFS、SMBなどのWindowsマシンからディレクトリをマウントできる場合は、pscpを-pwスイッチとともに使用できます。

-1

"-r"オプションを使用して再帰的にコピーするだけではどうですか?代わりにrsyncを使用しますか?

実際のユーザーアカウントを持っている限り、公開鍵認証を使用することもできます。 this

0

あなたは自宅や学校でどのプラットフォームを使用しているかは言わないでください。Linuxでは、Cygwinのか、OS/Xを仮定すると、あなたは、いくつかのオプションがあります:それは がサーバー

  • のssh-agentとssh-追加ごとに一度、あなたのパスワードを入力するようにオフにされていない場合

    1. 公開鍵認証をオプションのセッション

    (1)、あなた

    1. が上のパスフレーズなしで のssh-keygenのを使用して自宅で鍵ペアを生成します秘密鍵。パスフレーズを省略すると、他の人が同じコンピュータを使用していてもパスワードを入力しなくて済むようにするのは良い考えではないでしょう。
    2. は、あなたの学校 アカウントに公開鍵をアップロードしIdentityFileには、あなたの秘密鍵への フルパスである「-i IdentityFileに」 オプションで の〜/ .ssh/authorized_keysに
    3. 使用SCPに配置します。または、.ssh/configにエントリを追加してください(マニュアルページを参照)

    2番目のオプションとして、ssh-agentを使用すると、セッションごとに1回ローカルプロセスでパスワードをキャッシュできます。有効期限を設定しました

  • 1

    キーを使用することに同意します。しかし、expectはプレーンテキストのスクリプトファイルでパスワードをハードコードする場合、プロセスの対話的な側面を自動化できます。

    10

    「sshpass」を使用してください。

    #!/bin/bash 
    sshpass -p "password" scp -r /some/local/path [email protected]:/some/remote/path 
    
    +0

    'sshpass'は面白そうです。 SSHキーでうまく動作しないシステムで作業してください。ありがとう! – JakeGould

    0

    すでに多くの人がsshキーを使用することが最も安全かつ最良の方法だと述べています。 誰かがまだ困っていて助けを求めている場合、Ubuntuのヘルプでは、早速、wayがsshキーを使用しています。

    0

    hereを説明するように、あなたがssh-keygenを設定するとid_rsassh-keygenセットアップ中に生成されたローカルの鍵であり、あなたが

    scp -i ~/.ssh/id_rsa /local/path/to/file [email protected]:/path/in/remote/server/

    を行うことができます。あなたは毎回入力する軽減したい場合は、あなたがあなたの.bash_profileファイルを変更して、端末から次に

    alias remote_scp='scp -i ~/.ssh/id_rsa /local/path/to/file [email protected]:/path/in/remote/server/ 
    

    を置くことができます

    source ~/.bash_profileを行います。その後、端末にremote_scpと入力すると、パスワードなしでscpコマンドを実行する必要があります。