
自動化されたトランザクション用のバッチ ファイルを設定しようとしていますが、これまでのテストは失敗しています。
接続先のサーバーの公開鍵を持っています。これは .pkk ファイルとして保存され、WinSCP にインポートされています。
結果をテキスト ファイルに記録しました。次のようになります。
Username: 4m4nseth (Password: No, Key File: No)
キーファイルは存在しますが、何らかの理由で WinSCP がそれを取得しません。
バッチ ファイルとして実行すると、次のメッセージが表示されます。
セッション名: 4m4nseth@IP アドレス ホスト名: IP アドレス (ポート: 22) ユーザー名: 4m4nseth (パスワード: なし、キーファイル: なし) トンネル: いいえ 転送プロトコル: SFTP (SCP) Ping タイプ: -、Ping 間隔: 30 秒、タイムアウト: 15 秒
しかし、WinSCPで実行している場合は次のようになります
セッション名: 4m4nseth@ipaddress ホスト名: ipaddress (ポート: 22) ユーザー名: 4m4nseth (パスワード: なし、キーファイル: あり) トンネル: いいえ 転送プロトコル: SFTP (SCP)
ご覧のとおり、キー ファイルは保存されていますが、バッチ コマンドとして実行すると認識されません。
答え1
公開鍵と秘密鍵の順序が逆になっていると思われます。
WinSCPを使用してサーバーに情報をコピーする場合、WinSCPを実行しているボックスで公開鍵/秘密鍵を生成し、秘密鍵を使用してWinSCPを設定し、公開鍵をサーバーの適切な場所(Linuxでは~username/.ssh/authorized_keys)に配置する必要があります。
これは最初は直感に反しているように思えましたが(ずいぶん昔のことですが!)、論理的に考えてみると、実際には完全に納得できます。次のように考えてみると役に立つかもしれません。
- 秘密鍵は非公開にしておくべきものであり、つまり、あなただけが知るべきものです。
- サーバーが他のユーザーのものである場合は、自分だけが知っている情報をその人に渡したくない
ので、秘密鍵を渡さないでください。 - 一方、公開鍵を渡して、相手のシステムが侵害され、他の誰かが自分の公開鍵を自分の設定に追加した場合、それは単に相手のシステムにアクセスできることを意味するだけで、何も失うことはありません。一方、秘密鍵を渡さなければならなかった場合は、その鍵に対する制御を失うことになります。