Windows Server 2003ボックスがあり、psftp
を使用してリモートLinuxマシンに接続し、1時間ごとにファイルをダウンロードしています。
このマシンには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の人々は、これはとにかく悪い考えだと述べています。
この質問に対する回答はすでに受け入れられていることに気付きましたが、SYSTEMアカウントのユーザーレジストリHiveが配置されている場所への回答を投入すると思いました。実際にはHKEY_USERS\.DEFAULT
にあり、ほとんどの人は、新しく作成されたアカウントのデフォルトのユーザーHiveであると誤って想定しています。キーの履歴と背景の詳細については、RaymondChenのMSDNブログをご覧ください。
最初の問題の解決策は、スケジュールされたタスクをSYSTEMとして実行することだと思います。あれは正しいですか?
通常、その絶対レベルの特権が実際に必要な場合にのみ、SYSTEMとして何かを実行する必要があります。このタスクのためだけにサービスアカウントを設定することをお勧めします。次に、アカウントのパスワードの有効期限を無効にするか、通知スケジュールを設定して、サービスアカウントのパスワードとタスクの詳細を更新するように通知することができます。
もちろん、このサービスアカウントに一時的にログインして、SSHキーを初めて受け入れることができます。
コマンドラインでpscp.exe -batch -load PROFILE
を使用します。そのプロファイルのssh-key-pairを使用して接続のプロファイルを設定してから、そのプロファイルを使用します。
これに使用するユーザーアカウントはローカルである必要がありますが、特別な特権は必要ありません(キーの読み取りとファイルの書き込みのみ)。
すべてのコマンドスイッチでpscp -h
を試してください。
これが古い投稿であることは知っていますが、同じ問題を抱えている他のユーザーを支援するために、この回答をここに入れています。
ユーティリティの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アカウントとして実行されているスケジュールされたタスクとして実行された場合に機能します。
これが誰かに役立つことを願っています。
私はこのようなシステムは使いません。 puttyserviceという新しいユーザーを作成し、期限切れにならないように設定するだけです。明らかに、この新しいユーザープロファイルを使用します。
Cygwin のようなより堅牢なソリューションをインストールし、PuTTYの代わりにOpenSSHバージョンのsshを使用することも検討します。これは、そこにあるすべてのLinuxシステムの標準バージョンであり、PuTTYよりも堅牢で操作が簡単な場合があります。もちろん、GUIは失われますが、スクリプトの観点からは問題ではありません。