セキュリティ上の理由から、Telnet や rsh/rcp/rlogin ではなく、Secure Shell (SSH) を使用するように常に言われています。
SSHとrshはどちらもリモートシェルです。telnetもそうでしょうか?リモートシェル? はいの場合、なぜリモート シェルなのでしょうか。または、リモート シェルであることをどのように理解すればよいのでしょうか。
リモート シェル (rsh) は、別のユーザーとして、またコンピュータ ネットワーク上の別のコンピュータ上でシェル コマンドを実行できるコマンド ライン コンピュータ プログラムです。
telnetの使い方を調べてみました。私が見つけたのはtelnetクライアントは、telnetサーバー(telnetポートに接続する場合)または別のプロセス(telnetポート以外のポートに接続する場合)に接続できます。すでにサーバーマシン上で実行されているtelnetはできないようですサーバーマシン上でシェルコマンドを実行する(起動する)これはリモート シェルの定義の一部です。
UDPベースのtelnetの代替品を探していたところ、代替プログラムnetcat
として、nc
もし私が正しいなら、netcat
そしてnc
両方ともマシン上で既に実行中のプロセスに接続する、しかし、マシン上でプロセスを実行する(起動する)telnetが使用されることも示唆していますマシン上で既に実行中のプロセスに接続する、しかし、マシン上でプロセスを実行する(起動する)?
もしTelnetがマシン上で既に実行中のプロセスに接続する、しかし、マシン上でプロセスを実行する(起動する)SSH と telnet は異なることを行っているのに、なぜ SSH と比較されるのでしょうか?
ありがとう。
追伸
私は気がついたリモートシェルに関するWikipediaの記事特定のプログラム用であると思われrsh
ますrshd
。
「リモートシェル私の投稿で言及されている「 」は、リモート マシンに接続し、リモート上でシェルを起動し、シェル内でコマンドまたはプログラムを起動するために使用できるプログラムまたはプロトコルの一種です。
答え1
telnet
は、ネットワークに接続された UNIX マシン上でリモート シェルを取得する従来の方法でした。 rsh
は、もう 1 つの方法です。 は、 ssh
比較すると比較的新しいものです。
telnet
通常はリモートtelnetと通信しますデーモン(または「サーバー」プロセス)。その時点で、ユーザー名とパスワードで認証してログインし、シェルを取得します。つまり、これはリモート シェルを取得する方法です。
クライアントtelnet
は、別のポートを指定することにより、他の接続にも使用できます (たとえば、 Web サーバーと通信します)。これはリモート シェルではありません。リモート シェルを提供するのは、通信と認証telnet host 80
の組み合わせです。telnet
telnetd
telnet
ユーザー名とパスワードは通常、ネットワーク上でプレーンテキストで渡されるため、リモート シェルには推奨されません。ネットワーク スニファまたは「中間者」攻撃によってパスワードが盗まれる可能性があります。これは良くありません。 ssh
トラフィックを暗号化して、これを防ぎます。
リモート シェルを提供する telnet の例:
% telnet server.name
Trying 192.168.100.100...
Connected to server.name
Escape character is '^]'.
NetBSD/i386 (server.name) (pts/51)
login: fred
Password:
Last login: Fri Jun 24 21:45:29 2016 from 192.168.1.1 on pts/23
No mail.
$ whoami
fred
$ pwd
/home/fred
$ logout
Connection closed by foreign host.