コンピューターA(ipが44.44.44.44であると想定)は、ホスト130.89.148.12をFTPで転送できます。

ftp 130.89.148.12 Connected to 130.89.148.12. 220 ftp.debian.org FTP server Name (130.89.148.12:debian8): anonymous 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. 

コンピューターB(私のローカルPC)はホスト130.89.148.12をftpできません。この方法でsshコマンドを使用してsshトンネルを構築しましょう:

ssh -L -f -N localhost:2121:130.89.148.12:21 [email protected] 

ローカルPCとコンピューターA(44.44.44.44)の間のsshトンネルは44.44.44.44にログインするためのパスワード。
次に、ローカルPCコンソールでコマンドを入力します。

ftp localhost:2121 ftp: localhost:2121: Name or service not known 

sshトンネルの問題は何ですか?

chexumを考えてみてください、正しいftpコマンドはftp localhost 2121ですが、新しい問題です。 ここに画像の説明を入力してください

コメント

  • ポートの指定方法については、ftp(1)のマンページを確認してください。 'は通常、スペース(コロンではない)で区切るか、-pオプションとして指定します。'パッシブftpも使用する必要があるため、最初にマニュアルを確認してください。
  • テキストを画像として配置しないでください。

回答

あなたのアプローチはそれを考慮していません他の一般的なプロトコルとは異なり、FTPはデフォルトでポート20とポート21の両方をTCP経由で使用します。

パッシブという用語は、プロトコルが最初の実装よりもわずかに適切に動作することを意味します。

リンクは次のとおりです:

http://www.slacksite.com/other/ftp.html

ポート20 / TCPはデータに使用され、ポート21 / TCPはコマンドに使用されます。

Unixでは、特権ポート< 1024も、rootでのみバインドできます。

つまり、次のいずれかを実行します。

sudo ssh -f -N -L 20:130.89.148.12:20 -L 21:130.89.148.12:21 [email protected] 

この方法では、追加のポートを指定せず、

ftp -p localhost 

またはルートがない場合:

ssh -f -N -L 2120:130.89.148.12:20 -L 2121:130.89.148.12:21 [email protected] 

次に使用します:

ftp -p -P 2121 localhost 

From man ftp http://linux.die.net/man/1/ftp

-pパッシブモード
-Pポート

または、-Pをサポートしないバージョンのftpの場合(Debian 9 / Ubuntu 16.04):

ftp -p localhost 2121 

「SSHトンネルのローカルおよびリモートポート転送の説明」へのリンクも残します

http://blog.trackets.com/2014/05/17/ssh-tunnel-local-and-remote-port-forwarding-explained-with-examples.html

最後に、ssh接続にリモートシステムのrootを使用しないことをお勧めします。 rootは非常に強力なアカウントであり、システム管理用にのみ予約する必要があります。

さらに、最近の多くのLinuxでは、rootがデフォルトで無効になっているためsshリモートログインが無効になっています。

SSH経由のrootログインが非常に悪いのはなぜですか誰もがそれを無効にすることをお勧めしますか?

コメント

  • 何ですか?データ接続はポート20を使用しません。ランダムポート> 1024を使用します。また、少なくともUbuntu 16.04では、ftp-Pオプションがないようです。したがって、'データ接続が確立されたときにどのランダムポートが選択されるかわからないため、sshでftpを転送することはできません(転送されたファイルごとに、または転送されたファイルごとに異なるポートを取得します) ls)。
  • いいえ、サーバーはエフェメラルポートでもリッスンします。複数のクライアントにサービスを提供できるため、各クライアントにポート20を使用した場合、どのクライアントがどの制御セッションに対応しているかわかりません。
  • ドットにFTPRFCを印刷しました。マトリックスプリンターを使用して、16歳のときに調べました。一方のサーバーにPASVコマンドを発行し、次にもう一方のサーバーからのPASV応答からのIPアドレスとポート番号を使用して他のサーバーにPORTコマンドを発行して取得できることがわかりました。 28.8kbpsのモデムを介して自分でファイルをダウンロードしてアップロードする代わりに、あるサーバーから別のサーバーにファイルを直接送信します。その後、FXPと呼ばれるプログラムが登場し、それが可能になりました。また、WinNT用に独自のFTPサーバーソフトウェアを作成しました。自分でPASVの返信を見てください。
  • 混乱しています。 20ではなくポート21でリッスンします。ポート21でサーバーに接続し、接続するIPとポート番号をサーバーに指示するPORTコマンドを発行するか、PASVコマンドを発行します。この場合、リッスンを開始します。エフェメラルポートでのデータ接続。応答に含まれるポートを指定します。 quote pasvコマンドからftp.gnu.orgへ:" 227パッシブモードに入る(208,118,235,20,96,222)"。サーバーはポート96,222または24,798でリッスンしていることに注意してください。
  • 正しくなるように編集してみませんか?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です