Telnetの:(A)の[復刻] SSHの原理と応用

HTTP://はwww.ruanyifeng.com/blog/2011/12/ssh_remote_login.html 

何かを理解するだけのシンプルな...自分の利益を書きます..

 

SSHは、すべてのLinuxコンピュータ上の標準です。

徐々に携帯電話、周辺機器や家電製品へのコンピュータから展開Linuxデバイスでは、SSHは、より広く及ぶ使用しています。プログラマだけではないが、それなしで行うことはできませんが、多くの普通のユーザーが毎日使用しています。

SSHは、さまざまな機能を持っている、それは多くの行事のために使用することができます。いくつかのものは、ないそれが達成いません。この記事では、私の研究ノートは、要約およびSSHの一般的な使用を説明し、便利になりたいです。

この記事では、唯一の主要なアプリケーションをカバーしていますが簡単ですが、読者が「公開鍵暗号」の最も基本的な「シェル知識」と理解の概念を持っている必要があり。あなたがそれらに精通していない場合、私はあなたが読んでお勧め「UNIX / Linuxの初心者ガイド」をし、どのような「デジタル署名?"

=======================================

原則と使用SSH

著者:ルアンYifeng

まず、SSHは何ですか?

簡単に言えば、SSHは、コンピュータ間でログインを暗号化するために使用されるネットワークプロトコルです。

ローカルコンピュータからのユーザーは、SSHプロトコルを使用して別のリモートコンピュータにログオンした場合、我々は、彼らが傍受されている場合でも、パスワードが漏洩しないだろう、このログインが安全であることを信じることができます。

最初の時間は、インターネット通信が明示通信され、露出したコンテンツに、一度インターセプト。1995年、フィンランドの研究者タトゥYlonenとは、SSHプロトコル、すべての暗号化のログイン情報を設計し、インターネットセキュリティは、急速に世界にプロモーションを獲得し、解決するための根本的な解決になってきた今、Linuxシステムの標準的な構成となっています。

実装の様々な、両方の商用の実装があり、SSHは単なるプロトコルであることに留意すべきであるオープンソースの実装があります。記事がためである実装のOpenSSH、それはそれは広く使用されている、フリーソフトウェアです。

また、この記事では、中のLinuxシェルでSSHの使用のみを論じています。あなたがWindowsシステム上でSSHを使用している場合、我々は別のソフトウェアを使用しますPuTTYの別の紙を必要とし、。

第二に、最も基本的な使い方

SSHは、主にリモートログインするために使用されています。ユーザー名のユーザーは、リモートホストのホストへのログイン限り、その上に簡単なコマンドを望んでいたとします。

  $ sshのユーザ@ホスト

同じリモートユーザ名を持つローカルユーザー名と、ログインユーザー名を省略することができます。

  $ sshをホスト

デフォルトのSSHポートはつまり、あなたのログイン要求は、リモートホストのポート22に送信されます、22です。pパラメーターを使用して、あなたはポートを変更することができます。

  $のssh -p 2222ユーザ@ホスト

上記のコマンド表現は、SSHポート2222がリモート・ホストに直接接続されています。

middle攻撃で第三に、男

それは、公開鍵暗号を使用しているため、SSHは、セキュリティを確保することができました。

次のように全体のプロセスは次のとおりです。(1)リモートホストは、ユーザのログイン要求、ユーザーに自分の公開鍵を受け取ります。(2)ログインパスワードを暗号化するために、公開鍵を使用するユーザーは、それを送り返します。(3)パスワードが正しければ、パスワードを解読するための独自の秘密鍵を使用して、リモートホストは、ユーザのログインに同意しました。

プロセス自体は安全ですが、実装のリスクがあります:誰かがリモートホストを装った、ログイン要求を傍受した場合は、ユーザーに偽の公開鍵は、ユーザが信憑性を区別することは困難です。公開鍵は、HTTPSとは異なりプロトコルは、SSHプロトコルは公証認証局(CA)ではないので、すなわち、自身が発行されています。

これは、想定される攻撃者がユーザーのログインパスワードを取得し、偽造公開鍵で、ユーザーと(たとえば、公共エリアでの無線LANなど)、リモートホストとの間に挿入されている場合。そして、このパスワードは、リモートホスト、中空の後、SSHのセキュリティ・メカニズムをログに記録します。このリスクはとして知られている「中間者攻撃」(マン・イン・ミドル攻撃で)。

SSHプロトコルは、それに対処する方法ですか?

第四に、ログインパスワード

あなたが最初に他のホストにログインした場合、次のヒントを参考にして表示されます。

  $ sshのユーザ@ホスト

  ホストのホスト(12.18.429.21) "の信憑性を確立することはできません。

  2E:D7:E0:デ:9F:AC:RSAキーフィンガープリントは98であり、67:28:C2:42:2D:37:16:58:4D。

  あなたは(はい/いいえ)接続を続行しないようにしてもよろしいですか?

これらの言葉は意味、あなたが接続し続けたい尋ね、それは公開鍵の指紋だだけで、ホストホストの信憑性を確認することができませんでしたか?

いわゆる「公開鍵フィンガープリント」は、より長い長さの公開鍵(1024まで、ここで使用されるRSAアルゴリズム)を指し、そのMD5計算には、128ビットの指紋となり、一致することは困難です。2E:D7:E0:デ:9F:AC:67:28:C2:42:2D:37:16:58:例98で4D、その後、はるかに容易に比べ。

自然な質問は、ユーザーがリモートホストの公開鍵の指紋がどのくらいであるべきかを知っている、ありますか?答えは、ユーザーが独自にチェックするようにリモート、彼らのウェブサイトに掲載されている必要があり、公開鍵の指紋をホストする良い方法はありません。

後で仮定リスク測定した後、ユーザーはリモートホストの公開鍵を受け入れることにしました。

  あなたは(はい/いいえ)接続を続行しないようにしてもよろしいですか?はい

システムは、ホスト、ホストが認識されたことを示すプロンプトになります。

  警告:永久既知のホストのリストに「ホスト、12.18.429.21」(RSA)を加えました。

その後、それはパスワードが必要になります。

  パスワード:(パスワードを入力してください)

パスワードが正しい場合は、ログインすることができます。

リモートホストの公開鍵が受け入れられると、それはファイル$ HOME /の.ssh / known_hostsファイルに保存されます。あなたがホストを接続する次回は、システムは、その公開鍵がローカルに保存されている認識し、ひいては部分で警告をスキップし、直接パスワードの入力を求めるプロンプトが表示されます。

各ユーザーは、システムに加えて、このようなファイルは、通常は/ etc / sshを/たssh_known_hostsは、すべてのユーザーのためのいくつかは、リモートホストの公開鍵を信頼し続ける必要があり、自分自身のSSH known_hostsファイルを持っています。

第五に、公開鍵ログイン

パスワードは非常に面倒、毎回入力する必要があり、パスワードを使用してください。幸いなことに、SSHは、パスワードの工程を省略することができる、公共のログインを提供します。

いわゆる「公開鍵ログオン」、原則は、ユーザーがリモートホストに保存されている公開鍵を所有することを、非常に簡単です。ログイン時には、リモートホストは、自分の秘密鍵の暗号化とユーザーの後に、ユーザーにランダムな文字列を送信し、返信され。リモートホストパスワードが必要ですもはや、直接ログインシェルを許可し、ユーザーが本物であることを証明するために、成功した場合には、事前に保存されている復号化するための公開鍵を使用していません。

この方法は、自分の公開鍵を提供するために、ユーザーが必要です。容易に入手できない場合は、直接のssh-keygenのを生成するために使用することができます。

  $ sshを-keygenは

上記のコマンドを実行した後、システムは、一連のプロンプトは、あなたがすべての道に入ることができるでしょう。質問の1つは、1を設定することができ民間警備、心配ならば、秘密鍵(パスフレーズ)用のパスワードを設定するか否かです。

id_rsa.pubとid_rsaと:実行の終了後に、$ HOME /の.ssh /ディレクトリの下に、それは2つの新しいファイルが生成されます。前者は自分の秘密鍵である公開鍵、です。

その後、再び次のコマンドを入力し、ホストは、上記のリモートホストに公開鍵を送信します:

  $ sshのコピー-IDのユーザ@ホスト

あなたがサインインするのでまあ、あなたはパスワードを入力する必要はありません。

それでも解決しない場合は、リモートホストの/ etc / ssh / sshd_configファイルを開いて、「#」のコメントの前に以下の数行をチェックするかどうかを削除します。

  はいRSAAuthentication
  PubkeyAuthenticationはい
  AuthorizedKeysFileの.ssh / authorized_keysに

次に、リモートホストのSSHサービスを再起動します。

  // Ubuntuのシステム
  サービスのsshの再起動

  // Debianシステムの
  /etc/init.d/sshの再起動

六、authorized_keysファイルに

ログインユーザのホームディレクトリ/ authorized_keysファイルの後に$ HOME /の.sshに保存されているリモートホストのユーザの公開鍵、。公開鍵は、それがライン上のauthorized_keysファイルの末尾に追加される限り、文字列です。

上記の保管、公開鍵の間に次のコマンド、解釈を使用し、ここでのssh-コピー-idコマンドを使用していません。

  $ sshのユーザ@ホスト 'ます。mkdir -pの.ssh &&猫>>の.ssh / authorized_keysに' <の〜/ .ssh / id_rsa.pub

(2)MKDIRの.ssh単一引用符&&猫>>の.ssh / authorized_keysに、(1)「の$ sshのユーザ@ホスト」は、リモートホストへのログインを表します。このコマンドは、ビューのアンバンドル今度は、いくつかのステートメントが含まれていますloginコマンドは、リモートシェル上で実行した後、言った:「$ MKDIR -pの.ssh」の(3)役割ユーザのホームディレクトリの.sshディレクトリが存在しない場合は、それを作成することであるが、(4)「猫>>アクションの.ssh / authorized_keysに<の〜/ .ssh / id_rsa.pub、ローカルの公開鍵ファイルの〜/ .ssh / id_rsa.pubでリモートauthorized_keysファイルの最後に追加リダイレクトします。

authorized_keysにファイルを書き込んだ後、公開鍵ログインの設定は完了です。

==============================================

ここに書き込むためのシェルリモートログインのセクションは、次の導入「の遠隔操作やポートフォワーディングを」

(終わり)

おすすめ

転載: www.cnblogs.com/jinanxiaolaohu/p/11249998.html