回答:
SSHプロトコルは、ssh
とがsshd
受け入れるものによって定義されます。(標準が定義されていますが、それは事後のものであり、実装の1つが新しい機能を追加する場合、ほとんど無視されます。)それらの実装は複数あるため(OpenSSH、F-Secure、PuTTYなど)。 )そのうちの1つが他のプロトコルと同じプロトコルをサポートしていない場合があります。基本的に、認証ネゴシエーションと多重化データストリームの作成を定義します。このストリームは1つ以上を運ぶことができます(OpenSSHとControlMaster
)端末セッションおよびゼロ以上のトンネル(ローカルまたはリモートから反対側へのソケット接続の転送。X11転送はリモート転送の特殊なケースです)。また、ストリーム上で使用できる「サブシステム」も定義しています。ターミナルセッションは基本的なサブシステムですが、他のサブシステムも定義できます。 sftp
これらの一つです。
ssh
ユーティリティはSSHプロトコルを使用しsshd
て別のマシンと通信します。動作方法はバージョンによって異なります(上記を参照)が、その要点は、使用するSSHプロトコルのバージョンを特定し、sshd
サポートされている認証方法をネゴシエートしてから、使用して認証しようとすることですこれらの方法の1つ(必要に応じてリモートユーザーのパスワード/秘密鍵paasword / S-Keyフレーズを要求)、および認証に成功すると、で多重化ストリームをセットアップしますsshd
。
sshd
、上記のように、SSHプロトコルのサーバー側を実装します。
sftp
ほとんどのsshd
実装で定義されている(現在、唯一の標準)サブシステムです。SFTPサブシステムが要求されると、sshd
接続しているsftp-server
サブシステムのセッションに。sftp
その後、プログラムは同様にftp
通信しますが、のように個別の接続を使用する代わりに、ストリーム上でファイル転送が多重化されますftp
。
su
何の関係もないssh
、sshd
またはsftp
それによってシェルまたはプログラムの実行中に利用可能に多重化ストリームの手配をPAMモジュールがあるかもしれないとして除いて、。
OpenSSHプロジェクトをご覧ください。探している情報がすべて揃っています。
簡単に言うと、SSHプロトコルは2つのホスト間の安全な(暗号化された)接続を許可します。このssh
ユーティリティは、SSHプロトコルを使用してリモートシステムにログインするクライアントプログラムであり、[リバース]トンネリング/ポートフォワーディング/ ...など、他にも多くの用途があります。
sshd
それはサーバーソフトウェアです。着信SSH要求に応答するデーモンを提供します。
su
sshとは関係ありません。アクティブなユーザーを変更するために使用されます(最も頻繁に使用されるようになりますroot
)。