web-dev-qa-db-ja.com

FTPがsshトンネル経由で機能しないのはなぜですか?

コンピューター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ですが、新しい問題です。 enter image description here

5

他の一般的なプロトコルとは異なり、FTPではbothポート20とポート21をTCP デフォルトではで使用しています。

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

ここにリンクがあります:

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

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

Unixでは、特権ポートも1024未満であり、ルートによってのみバインドできます。

だからあなたもする:

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

このようにして、余分なポートを与えずに、

ftp -p localhost

または、rootがない場合:

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

次に使用します:

ftp -p -P 2121 localhost 

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経由のrootログインが非常に悪いので、誰もがそれを無効にするように助言するのですか?

9
Rui F Ribeiro