web-dev-qa-db-ja.com

SSH上のWindows FTP

Windowsで提供されているftp.exeを使用して、インターネット上のベンダーとファイルをアップロードおよびダウンロードするために使用されるスクリプトは多数あります。これはSideWinder経由でプロキシされ、ベンダーにFTPで送信されますが、SFTPをサポートしています。

ftp -s:filename which FTPコマンドを含むテキストファイルを指定します。コマンドはFTPの起動後に自動的に実行されます。

ftp -n -s:dir\filename.ftp proxy.example.com

私たちがしたいことは、Windows提供のssh.exeを介してこれをトンネリングすることです。これにより、SideWinderプロキシを削除し、FTPコマンドに既存のfilenameファイルを引き続き使用できます。

これは、Windows提供のssh.exeおよびftp.exeを使用して可能ですか?

私は無料でSFTPプログラムがあることを知っています。既存のシステムへの最小限の変更でこれを達成しようとしています。うまくいけば、FTP接続と操作の前のスクリプトでは、SSH接続と同じくらい簡単です。

5
AbraCadaver

これがあなたの望む答えではないことはわかっていますが、SFTPに切り替えることを強くお勧めします。

まず、SFTPは別のプロトコルであり、SSHトンネルを介したFTPだけではありません。したがって、SSHトンネルの背後にあるFTPサーバーにアクセスする場合を除き、ssh.exeを介したftp.exeのプロキシは機能しません。

個人的には、私は WinSCP に切り替えることをお勧めします。無料です Powershellのサポートが非常に優れています ので、現在のファイルを解析して実行するPowerShellスクリプトを簡単に記述できます。代わりにWinSCPを使用する必要なコマンド。

7
Stuggi

[〜#〜] sftp [〜#〜] は、SSH内でFTPをトンネリングすることとはまったく同じではなく、実際にはSSHへの拡張子ですプロトコル。

理論では、ホストへのFTP接続は別の SSHトンネル を介してトンネリングできます。これを行うには、最初にssh.exeを使用してサーバーへのトンネルネットワーク接続を確立し、次にftp.exeの既存のコマンドを使用してファイル転送を実行する必要があります。ただし、システムがかなり複雑になります。

代わりにSFTPクライアントを使用することをお勧めします。このようにして、安全なファイル転送を単一のコマンドで実行できます。ただし、すべてのFTPコマンドがSFTPで同じであるとは限らないため、FTPコマンドの既存のテキストファイルを更新する必要がある場合があります。

いくつかのサードパーティのSFTPクライアントが利用可能で、最近のWindowsバージョンには オプションの機能 としてOpenSSHクライアントさえあります。

認証に SSHキー を使用してもかまわない場合は、組み込みのOpenSSHSFTPクライアントを使用します。

sftp.exe -b sftp-commands.txt example.com

SSHキーの使用がオプションでない場合、別の一般的なクライアントはWinSCPであり、パスワード認証もサポートしています。 WinSCPとSFTPの古いftp.exeバッチコマンドを変換するための ガイド もあります。

また、ベンダーのサーバーが[〜#〜] sftp [〜#〜]をサポートしていても、必ずしもすべてがサポートされているとは限りません[ 〜#〜] ssh [〜#〜]機能。 SFTPは基本プロトコルとしてSSHを使用しますが、多くのSFTPプロバイダーは セキュリティ上の理由 のために、SSHをSFTPの使用のみに制限しています。これにより、FTPに個別のSSHトンネリングの使用を事実上除外できます。

5
muurain