web-dev-qa-db-ja.com

PuTTYのpsftpを介してファイルのプルを自動化するにはどうすればよいですか?

Windows Server 2003ボックスがあり、psftpを使用してリモートLinuxマシンに接続し、1時間ごとにファイルをダウンロードしています。

Picture 1.png

このマシンには2つの主な課題があります。

最初

スケジュールされたタスクは現在、このボックスでユーザーとして実行するように設定されています。これには、ユーザーのパスワードをタスクスケジューラに保存する必要がある必要があると思います。ただし、ユーザーのパスワードが変更されると、タスクの実行に失敗します。このタスクを常に実行してもらいたいのですが。

  • 最初の問題の解決策は、スケジュールされたタスクをSYSTEMとして実行することだと思います。あれは正しいですか?もしそうなら、どうすればこれを設定できますか? [名前を付けて実行]ボックスにSYSTEMと入力するだけですか?また、SYSTEMにパスワードを設定する必要がありますか。パスワードなしで試したところ、パスワードが正しくないためにジョブが実行されなかったとのことです。おそらく私はこれを間違ってやっています。

PuTTYでは、サーバーの信頼性を検証するために、サーバーのリモートキーがレジストリに保存されている必要があります。ただし、これはユーザーごとに保存されているようです。そのため、スクリプトを別のユーザーとして実行するように切り替えると、キーがレジストリに保存されるように、ユーザーは最初にスクリプトをインタラクティブに実行する必要があるようです。

  • PuTTY Webサイトの説明には、キーを次のレジストリの場所に追加する必要があると記載されています。

    HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
    

しかし、「HKEY_CURRENT_USER」から判断すると、それはSYSTEMユーザーには当てはまらないと思います。このタスクをSYSTEMとして実行するように設定した場合、適切なキーがホストのレジストリに保存されていることを確認するにはどうすればよいですか?手動で追加してもかまいません(known_hostsファイルを変換するPerlスクリプトがあります)が、どこに行くべきですか?

ps:myscript.batは、psftp.exeを使用してリモートサーバーからファイルをプルするだけです。特にない。許可されたホストのチェックをスキップするフラグはありません。PuTTYの人々は、これはとにかく悪い考えだと述べています。

1
cwd

この質問に対する回答はすでに受け入れられていることに気付きましたが、SYSTEMアカウントのユーザーレジストリHiveが配置されている場所への回答を投入すると思いました。実際にはHKEY_USERS\.DEFAULTにあり、ほとんどの人は、新しく作成されたアカウントのデフォルトのユーザーHiveであると誤って想定しています。キーの履歴と背景の詳細​​については、RaymondChenのMSDNブログをご覧ください。

。Defaultユーザーはデフォルトユーザーではありません

2
Ryan Bolger

最初の問題の解決策は、スケジュールされたタスクをSYSTEMとして実行することだと思います。あれは正しいですか?

通常、その絶対レベルの特権が実際に必要な場合にのみ、SYSTEMとして何かを実行する必要があります。このタスクのためだけにサービスアカウントを設定することをお勧めします。次に、アカウントのパスワードの有効期限を無効にするか、通知スケジュールを設定して、サービスアカウントのパスワードとタスクの詳細を更新するように通知することができます。

もちろん、このサービスアカウントに一時的にログインして、SSHキーを初めて受け入れることができます。

4
Zoredache

コマンドラインでpscp.exe -batch -load PROFILEを使用します。そのプロファイルのssh-key-pairを使用して接続のプロファイルを設定してから、そのプロファイルを使用します。

これに使用するユーザーアカウントはローカルである必要がありますが、特別な特権は必要ありません(キーの読み取りとファイルの書き込みのみ)。

すべてのコマンドスイッチでpscp -hを試してください。

3
Nils

これが古い投稿であることは知っていますが、同じ問題を抱えている他のユーザーを支援するために、この回答をここに入れています。

ユーティリティのPuTTYスイート(plink、pscp、psftpなど)には-hostkeyオプションがあります。これにより、regkeyを他のアカウント(SYSTEMなど)にコピーする手間をかけずに、ターゲットサーバーのホストキーを含めることができます。

pscp.exe /?適切な構文が表示されます。

-ホストキーxx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx

通常のユーザーアカウントでターゲットサーバーとのPuTTYセッションを1回開始することで、ホストキーを取得できます。

コマンドラインからは、次のようになります。

The server's rsa2 key fingerprint is:
ssh-rsa 2048 7b:e5:6f:a7:f4:f9:81:62:5c:e3:1f:bf:8b:57:6c:5a

使用法:

pscp.exe -hostkey 7b:e5:6f:a7:f4:f9:81:62:5c:e3:1f:bf:8b:57:6c:5a -batch -i your-private-key.ppk C:\source.file [email protected]:/var/www/html/

これは、SYSTEMアカウントとして実行されているスケジュールされたタスクとして実行された場合に機能します。

これが誰かに役立つことを願っています。

0
LedHed

私はこのようなシステムは使いません。 puttyserviceという新しいユーザーを作成し、期限切れにならないように設定するだけです。明らかに、この新しいユーザープロファイルを使用します。

Cygwin のようなより堅牢なソリューションをインストールし、PuTTYの代わりにOpenSSHバージョンのsshを使用することも検討します。これは、そこにあるすべてのLinuxシステムの標準バージョンであり、PuTTYよりも堅牢で操作が簡単な場合があります。もちろん、GUIは失われますが、スクリプトの観点からは問題ではありません。

0
DrZaiusApeLord