SSH は Secure Shell の略で、安全な伝送プロトコルです。Ubuntu クライアントは SSH を介してリモート サーバーにアクセスできます。 SSHの紹介と動作メカニズム SSH の紹介 ftp、POP、telnet などの従来のネットワーク サービス プログラムは、パスワードやデータをネットワーク上でプレーン テキストで送信するため、悪意のある人物によって簡単に傍受される可能性があり、本質的に安全ではありません。さらに、これらのサービス プログラムのセキュリティ検証方法にも弱点があり、中間者攻撃によって簡単に攻撃されてしまいます。いわゆる「中間者」攻撃手法では、「中間者」が実際のサーバーを装ってサーバーに送信されたデータを受信し、次にユーザーを装って実際のサーバーにデータを送信するというものです。サーバーとユーザー間のデータ転送が「仲介者」によって改ざんされると、深刻な問題が発生します。 昔々、Tatu Yl?nen というフィンランドのプログラマーが、SSH (Secure SHell の略) と呼ばれるネットワーク プロトコルとサービス ソフトウェアを開発しました。 SSH を使用すると、送信されるすべてのデータを暗号化できるため、「中間者」攻撃が不可能になり、DNS および IP スプーフィングも防止できます。さらなる利点としては、送信されるデータが圧縮されるため、送信速度を高速化できることが挙げられます。 SSH には多くの機能があり、多くの人が Secure Shell を単なる Telnet の代替品と考えているものの、ネットワーク接続を保護するために使用できます。 POP、X、PPP、FTP などの他のネットワーク通信を、ローカル システムまたはリモート システム上の Secure Shell を介して転送できます。 CVS やその他の TCP トラフィックなど、他の種類のネットワーク トラフィックを転送することもできます。さらに、TCP ラッパーを使用した Secure Shell を使用して、接続のセキュリティを強化することもできます。さらに、Secure Shell には、Oracle などのアプリケーションに使用できる便利な機能がいくつかあり、SecurID カードのようなリモート バックアップや追加認証にも使用できます。 SSHの仕組み SSH はクライアント部分とサーバー部分の 2 つの部分に分かれています。 サーバーはバックグラウンドで実行され、クライアントからの接続要求に応答するデーモン プロセスです。サーバーは通常、sshd プロセスであり、一般に公開キー認証、キー交換、対称キー暗号化、安全でない接続などのリモート接続の処理を提供します。 クライアントには、ssh プログラムと、scp (リモート コピー)、slogin (リモート ログイン)、sftp (セキュア ファイル転送) などのその他のアプリケーションが含まれています。 その動作メカニズムは、おおよそ、ローカル クライアントがリモート サーバーに接続要求を送信するというものです。サーバーは要求パッケージと IP アドレスを確認し、キーを SSH クライアントに送信します。次に、ローカル クライアントがキーをサーバーに送り返し、接続が確立されます。今お話ししたのは、SSH 接続の一般的なプロセスです。SSH 1.x と SSH 2.x では接続プロトコルに若干の違いがあります。 SSH はスーパーサーバー (inetd) を使用せずに独自に動作するように設計されています。inetd 上の tcpd を介して SSH プロセスを実行することは可能ですが、まったく必要ありません。 SSH サーバーを起動すると、sshd が実行され、デフォルトのポート 22 でリッスンします (# ps -waux | grep sshd を使用して、sshd が正しく実行されているかどうかを確認できます)。SSH が inetd 経由で起動されていない場合、SSH は接続要求を待機し続けます。リクエストが届くと、SSH デーモンは接続を処理する子プロセスを生成します。 しかし、著作権や暗号化アルゴリズムの制限により、現在では多くの人が OpenSSH に切り替えています。 OpenSSH は SSH の無料の代替手段です。 SSH はクライアント ソフトウェアとサーバー ソフトウェアで構成されており、互換性のない 2 つのバージョン (1.x と 2.x) があります。 SSH 2.x クライアント プログラムを使用して SSH 1.x サーバー プログラムに接続することはできません。 OpenSSH 2.x は SSH 1.x と 2.x の両方をサポートします。 SSH クライアント openssh-client および openssh-server 別のマシンの SSH にログインするだけの場合は、openssh-client をインストールするだけで済みます (Ubuntu ではデフォルトでインストールされていますが、インストールされていない場合は sudoapt-get install openssh-client を実行します)。このマシンで SSH サービスを開きたい場合は、openssh-server をインストールする必要があります。 1. クライアントをインストールする Ubuntu にはデフォルトで ssh クライアントがインストールされています。 sudo apt-get install ssh または sudo apt-get install openssh-client sshキー生成 (デフォルト値を設定するにはEnterキーを押します) デフォルトでは、それぞれ秘密鍵と公開鍵である id_rsa ファイルと id_rsa.pub ファイルが生成されます。 注: sudo apt-get installsall ssh コマンドの実行中にエラーが発生し、インストールが失敗した場合は、sudo apt-get install openssh-client を使用してインストールできます。 サーバーの IP が 192.168.1.1、ssh サービスのポート番号が 22、サーバーに root という名前のユーザーが存在するとします。 ssh を使用してサーバーにログインするコマンドは次のとおりです。 >ssh –p 22 ルート@192.168.1.1 >ルートユーザーのパスワードを入力してください 2. サーバーをインストールする Ubuntu にはデフォルトで SSH サーバーがインストールされていません。次のコマンドを使用してインストールします。 sudo apt-get で openssh-server をインストールします 次に、sshserver が起動しているかどうかを確認します (または、「netstat -tlp」コマンドを使用します)。 ps -e|grep ssh ssh-agent だけがある場合は、ssh-server はまだ起動していません。/etc/init.d/ssh start を実行する必要があります。sshd が表示されている場合は、ssh-server が起動しています。 そうでない場合は、次のように開始できます。 sudo /etc/init.d/ssh を起動します 実際、特別な要件がない場合は、OpenSSH サーバーはここにインストールされます。しかし、さらに設定することで、OpenSSH のログイン時間を短縮し、より安全にすることができます。これらはすべて、openssh 構成ファイル sshd_config を変更することによって実現されます。 SSH 設定 ssh-server 構成ファイルは /etc/ssh/sshd_config にあり、ここで SSH サービス ポートを定義できます。デフォルトのポートは 22 ですが、222 などの他のポート番号に定義することもできます。次に、SSH サービスを再起動します。 sudo /etc/init.d/sshresart 設定ファイル /etc/ssh/sshd_config を変更することで、ssh ログイン ポートを変更し、root ログインを禁止することができます。ポートを変更すると、ポートスキャンを防ぐことができます。 sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.オリジナル sudochmod aw /etc/ssh/sshd_config.original 設定ファイルを編集します。 /etc/ssh/sshd_config を編集する #Port 22 を見つけてコメントを解除し、5桁のポート番号に変更します: #PermitRootLogin yes を見つけてコメントを解除し、次のように変更します: 設定が完了したら、再起動します。 sudo /etc/init.d/sshを再起動します 4. SSHサービスコマンド サービスを停止します: sudo /etc/init.d/ssh stop サービスを開始します: sudo /etc/init.d/ssh start サービスを再起動します: sudo /etc/init.d/sshresart 切断: 終了 ログイン: [email protected] root は 192.168.0.100 マシン上のユーザーであり、パスワードを入力する必要があります。 5. SSHログインコマンド 一般的な形式: 詳細を表示するには、ssh -h を使用できます。 例 ユーザーを指定しない場合: 指定されたユーザー: ssh -l ルート 192.168.0.1 SSH ルート@192.168.0.1 SSH ログイン ポートを変更した場合: ssh -p 22333 192.168.0.111 ssh -l ルート -p 22333 216.230.230.105 ssh -p 22333 ルート@216.230.230.105 6. ログイン速度の向上 リモートでログインする場合、ユーザー名を入力した後、パスワードの入力を求められるまで長い時間待たなければならないことがあります。実際、これは sshd がクライアントの DNS 情報を逆クエリする必要があるためです。この機能を無効にすると、ログイン速度が大幅に向上します。まず、sshd_config ファイルを開きます。 sudo ナノ /etc/ssh/sshd_config GSSAPI オプション セクションを見つけて、次の 2 行をコメント アウトします。 #GSSAPIAuthentication yes #GSSAPIDelegateCredentials no 次に、ssh サービスを再起動します。 sudo /etc/init.d/sshを再起動します もう一度ログインしてみてください。非常に高速になるはずです。 7. PuTTyを使用して証明書認証でサーバーにログインする SSH サービスでは、すべてのコンテンツが暗号化された形式で送信され、セキュリティは基本的に保証されます。ただし、証明書認証が利用できる場合は、セキュリティがさらに向上し、一定の設定を行うことで、証明書認証による自動ログインの効果も得られます。 まず、sshd_config ファイルを変更し、証明書認証オプションを有効にします。 RSAAuthentication yes PubkeyAuthentication yesAuthorizedKeysFile %h/.ssh/authorized_keys変更が完了したら、ssh サービスを再起動します。 次に、SSH ユーザーの秘密鍵と公開鍵を作成する必要があります。まず、キーを作成する必要があるアカウントにログインします。必要に応じて、必ず root ユーザーを終了し、su コマンドを使用して別のユーザーに切り替えてください。次に以下を実行します: sshキー生成 ここでは、生成されたキーをデフォルトのディレクトリに保存するだけです。作成の過程でパスフレーズの入力が求められますが、これは証明書にパスワードを追加することと同等です。これはセキュリティを向上させるための措置でもあり、証明書が誤って誰かにコピーされても心配する必要はありません。もちろん、これを空白のままにしておくと、後で PuTTy は証明書認証を介して自動的にログインできます。 ssh-keygen コマンドは 2 つのキーを生成します。まず、公開キーの名前を変更してサーバー上に残しておく必要があります。 cd ~/.ssh mv id_rsa.pub authorized_keys 次に、サーバーから秘密鍵 id_rsa をコピーし、サーバー上の id_rsa ファイルを削除します。 サーバー側の設定は完了です。クライアント コンピューターで次の手順を実行する必要があります。まず、id_rsa ファイルを PuTTy でサポートされている形式に変換する必要があります。ここでは、PuTTyGEN ツールを使用する必要があります。 PuTTyGen インターフェースの [ロード] ボタンをクリックし、id_rsa ファイルを選択して、パスフレーズ (ある場合) を入力し、[秘密鍵を保存] ボタンをクリックします。これで、PuTTy が受け入れる秘密鍵の準備が整いました。 PuTTy を開き、セッションにサーバーの IP アドレスを入力し、接続 -> SSH -> 認証の下の参照ボタンをクリックして、生成した秘密キーを選択します。次に、「接続」オプションに戻り、「自動ログイン ユーザー名」に証明書が属するユーザー名を入力します。 「セッション」タブに戻り、名前を入力して「保存」をクリックし、セッションを保存します。下部の「開く」をクリックすると、証明書認証を通じてサーバーにログインできるようになります。パスフレーズがある場合は、ログインプロセス中にパスフレーズの入力を求められます。そうでない場合は、サーバーに直接ログインするため、非常に便利です。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Linuxはバイナリモードを使用してmysqlをインストールします
目次複数の変数を同時に宣言する場合は、1 行に短縮できます。分割代入は複数の変数に同時に値を割り当て...
1. CSS3アニメーション☺CSS3 アニメーションは、JavaScript を介して要素のスタイ...
前回の Docker に関する記事では、MAC システムでの構築について説明しました。この記事では、...
コードをコピーコードは次のとおりです。 <前> <div> <sele...
目次Vueのレスポンシブシステムの基本原則1. Object.definePropertyの使い方を...
目次ルーティングプラグインをモジュール方式で使用するルートの使用宣言型ナビゲーションプログラムによる...
この記事では、ユーザーのログイン切り替えを実現するためのVueの具体的なコードを例として紹介します。...
目次グローバル登録部分登録ローカル自動登録さまざまなソリューションの比較コンポーネント名について参照...
マウスが画像上にあるときにズームインおよびズームアウトするには、JS を使用します。具体的なコードは...
説明するこのインターフェースを呼び出すときは、次の点に注意する必要があります。パブリック IP アド...
1 / Webプロジェクトファイルをwebappsディレクトリに直接コピーするこれは最も一般的に使...
分割線はウェブページでよく使われるデザインです。例えば、Zhihuのその他の回答をご覧ください。 こ...
この実験では、空のデータベース、オフライン、オンラインの 3 つのモードで、1 つのマスターと 2 ...
1. mysql-5.7.17-winx64.zip インストール パッケージをダウンロードします ...
よく使われる4つのMySQLエンジンの紹介(1):MyISAMストレージエンジン:トランザクションや...