クラスタを使用してSSHを構築する役割とこれらのコマンドの意味

6140 ワード

本文を読むと次の問題があります。
1.あなたは$ssh user@host'mkdir-p.sshの役割を知っていますか?
2.cat>.ssh/authorized_keys'/.ssh/id_rsa.pubの役割は何ですか?
3.SSHとは?
4.リモートホストディレクトリの下にあるすべてのファイルを、ユーザの現在のディレクトリにコピーするにはどうすればいいですか?
authorized_keysファイル
リモートホストは、ユーザの公開鍵を登録後のホームディレクトリに保存する$keysファイルにあります。公開鍵は文字列です。authorized_に追加すればいいです。keysファイルの末尾でいいです。
ここでは上のssh-copy-indコマンドを使用しないで、公開鍵の保存過程を説明します。

$ ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
このコマンドは複数の文から構成されており、(1)「$ssh user@host」はリモートホストに登録することを示している。
(2)シングル引用符のmkdir.ssh&&cat>.ssh/authorized_keysは、ログイン後にリモートshellで実行するコマンドを表します。
(3)「$mkdir-p.ssh」の役割は、ユーザのホームディレクトリにある.sshディレクトリが存在しない場合、一つを作成することである。
(4)'cat>.ssh/authorized_keys'/.ssh/id_rsa.pubの役割は、ローカルの公開鍵ファイルを~/.ssh/id_rsa.pb、リダイレクトはリモートファイルauthorized_に追加されます。keysの最後。
authorized_に書き込みますkeysファイルの後、公開鍵登録の設定が完了しました。
以上は本論文で紹介した目的で、私達がクラスタを構築する過程でSSHの役割とこれらのコマンドの意味を理解させます。
SSHをもっと知りたいなら、下記の内容を見ることができます。
一、SSHとは?
簡単に言えば、SSHはコンピュータ間の暗号化登録のためのネットワークプロトコルである。
もしユーザーがローカルコンピュータから、SSHプロトコルを使って別のリモートコンピュータにログインすれば、この登録は安全であり、途中で傍受されても、パスワードは漏れないと考えられます。
SSHは一つのプロトコルであり、様々な実装があり、ビジネスの実現もあれば、オープンソースの実現もあると指摘したい。本論文ではOpenSSHの実現に向けて,自由ソフトウェアであり,応用が非常に広い。
さらに,本論文では,SSHのLinux Shellにおける使用法についてのみ議論する。WindowsシステムでSSHを使うなら、別のソフトウェアPuttiYを使います。ここでは紹介しません。
二、基本的な使い方
SSHは主にリモートログイン用です。ユーザー名をuserとして、リモートホストホストホストホストホストホストホストに登録するとします。簡単なコマンドがあれば大丈夫です。

$ ssh user@host
SSHのデフォルトポートは22です。つまり、あなたのログイン要求はリモートホストの22ポートに送ります。pパラメータを使って、このポートを変更できます。

$ ssh -p 2222 user@host
上のこのコマンドは、sshが直接リモートホストの2222ポートに接続されていることを示しています。
三、中間者攻撃
SSHが安全を保証できるのは、公開鍵を使って暗号化されているからです。
全体のプロセスは、(1)リモートホストがユーザのログイン要求を受信し、自分の公開鍵をユーザに送信する(2)ユーザはこの公開鍵を使用してログインパスワードを暗号化し、返送する(3)リモートホストは自分の秘密鍵でログインパスワードを解読し、もしパスワードが正しいなら、ユーザー登録に同意します。
このプロセス自体は安全ですが、登録要求を取得し、リモートホストと偽って偽造の公開鍵をユーザーに送るというリスクがあります。httpsプロトコルと違って、SSHプロトコルの公開鍵は証明書センター(CA)が公証していないので、つまり、自分で発行したものです。
攻撃者がユーザと遠隔ホストとの間に挿し込んだ場合(例えば、共通のWi-Fi領域)には、偽造された公開鍵を用いてユーザのログインパスワードを取得することが想定される。このパスワードでリモートホストに登録すると、SSHのセキュリティ機構がなくなります。このリスクは有名な「中間者攻撃」です。
SSH協議はどのように対応しますか?
四、パスワード登録
もしあなたが相手のホストにログインするのが初めてなら、次のようなメッセージが表示されます。

$ ssh user@host
  The authenticity of host 'host (12.18.429.21)' can't be established.
  RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.
  Are you sure you want to continue connecting (yes/no)?
この話の意味は、ホストの真正性が確認できず、公開鍵の指紋しか知らないということです。まだ接続したいですか?
公開鍵のフィンガープリントとは、公開鍵の長さが長い(ここではRSAアルゴリズムを採用し、1024ビットまでの)ことで、比較が難しいので、MD 5計算を行い、128ビットのフィンガープリントに変更する。上記の例では98:2 e:d 7:e 0:de:9 f:ac:67:28:c 2:42:2 d:37:16:58:4 dと比較すれば、多くなりやすいです。
自然な問題の一つは、ユーザーがどうやってリモートホストの公開鍵の指紋を知っていますか?答えは良い方法ではないです。リモートホストは自分のウェブサイトに公開鍵の指紋を貼って、ユーザー自身で確認する必要があります。
リスク測定を行ったと仮定して、ユーザはこの遠隔ホストの公開鍵を承認することを決定した。
Aree you want to continue connecting(yes/no)?yes
システムはホストが既に承認されているというメッセージが表示されます。
Warning:Permanently added'host、12.18.429.21'(RSA)to the list of known hosts.
そして、パスワードの入力を要求します。
Password:(enter password)
パスワードが正しいなら、ログインできます。
リモートホストの公開鍵が承認されると、ファイルに保存されます。ホームの中。今度このホストに接続すると、システムはその公開鍵がすでにローカルに保存されていることを認識し、警告部分をスキップして、直接にパスワードを入力するように指示します。
各SSHユーザーは自分のknown_を持っています。hostsファイルは、他のシステムにもこのようなファイルがあります。known_Hostsは、すべてのユーザに信頼できるリモートホストの公開鍵を保存する。
(上に大きな串を言いました。このような登録方式はあまり安全ではないという意味です)
五、公開鍵登録
パスワードでログインして、毎回パスワードを入力しないといけないので、大変です。幸いにもSSHは公開鍵登録を提供しており、パスワードを入力するステップを省略することができる。
「公開鍵登録」とは、原理が簡単であり、ユーザーが自分の公開鍵をリモートホストに保存することである。ログイン時、リモートホストはユーザーに乱数文字列を送信します。ユーザは自分の秘密鍵で暗号化して、また返送します。リモートホストは事前に保存された公開鍵で復号し、成功すれば、ユーザが信頼されていることを証明し、直接にshellに登録を許可し、パスワードを要求しなくなります。
この方法は、ユーザが自分の公開鍵を提供しなければならないことを要求する。既成のものがない場合は、直接にssh-keygenで一つを生成できます。

 $ ssh-keygen
上の命令を実行したら、システムに一連の注意があります。一緒に車を返すことができます。問題の一つは、秘密鍵にパスワードを設定するかどうかです。秘密鍵の安全が心配なら、ここで設定できます。
運行が終わったら、$HOME/.ssh/ディレクトリの下で、二つのファイルを新たに作成します。id_rsa.pubとid_rsa前者はあなたの公開鍵です。後者はあなたの秘密鍵です。
このとき、次のコマンドを入力して、公開鍵をリモートホストホストホストホストホストホストホストホストホストホストの上に転送します。

 $ ssh-copy-id user@host
はい、これからログインしてください。パスワードを入力する必要はありません。
もしまだだめなら、リモートホストの/etc/ssh/sshd_を開けます。configというファイルは、次の行の前にある注釈が取れているかどうかを確認します。

RSAAuthentication yes
 PubkeyAuthentication yes
 AuthorizedKeysFile .ssh/authorized_keys
その後、リモートホストのsshサービスを再開します。

// ubuntu  
 service ssh restart
 // debian  
 /etc/init.d/ssh restart
六、authorized_keysファイル
リモートホストは、ユーザの公開鍵を登録後のホームディレクトリに保存する$keysファイルにあります。公開鍵は文字列です。authorized_に追加すればいいです。keysファイルの末尾でいいです。
ここでは上のssh-copy-indコマンドを使用しないで、公開鍵の保存過程を説明します。

$ ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
このコマンドは複数の語句から構成されており、順次分解してみます。
(1)「$ssh user@host」は、リモートホストに登録することを示す。
(2)シングル引用符のmkdir.ssh&&cat>.ssh/authorized_keysは、ログイン後にリモートshellで実行するコマンドを表します。
(3)「$mkdir-p.ssh」の役割は、ユーザのホームディレクトリにある.sshディレクトリが存在しない場合、一つを作成することである。
(4)'cat>.ssh/authorized_keys'/.ssh/id_rsa.pubの役割は、ローカルの公開鍵ファイルを~/.ssh/id_rsa.pb、リダイレクトはリモートファイルauthorized_に追加されます。keysの最後。
authorized_に書き込みますkeysファイルの後、公開鍵登録の設定が完了しました。
ここで私達のいくつかの遠隔登録の例:
いくつかの例を見ます。
【例1】
$HOME/src/ディレクトリ下のすべてのファイルをリモートホストの$HOME/src/ディレクトリにコピーします。 

$ cd && tar czv src | ssh user@host 'tar xz'
【例2】
リモートホスト$HOME/src/ディレクトリの下のすべてのファイルを、ユーザの現在のディレクトリにコピーします。

$ ssh user@host 'tar cz src' | tar xzv
【例3】
リモートホストが実行中のhttpdを確認します。

  $ ssh user@host 'ps ax | grep [h]ttpd'
以上述べたのは小编が皆さんに绍介したクラスタを使ってSSHの役割とこれらのコマンドの意味です。皆さんに助けてほしいです。もし何か疑问があれば、メッセージをください。小编はすぐに返事します。ここでも私たちのサイトを応援してくれてありがとうございます。