Ubuntu環境でのSSHの詳細なインストールと使用

Ubuntu環境でのSSHの詳細なインストールと使用

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桁のポート番号に変更します: Port 22333

#PermitRootLogin yes を見つけてコメントを解除し、次のように変更します: PermitRootLogin no

設定が完了したら、再起動します。

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 [-llogin_name] [-p port] [user@]hostname

詳細を表示するには、ssh -h を使用できます。

ユーザーを指定しない場合: ssh 192.168.0.1

指定されたユーザー:

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 を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • bash スクリプトで ssh/scp コマンドにパスワードを渡す方法の詳細な説明
  • Linux で SSH 経由でリモート ファイルシステムをマウントする方法の詳細な説明
  • CentOS のデフォルトの SSH ポート番号を変更する方法の例
  • Jenkins の Publish Over SSH プラグインを使用してプロジェクトをリモート マシンにデプロイする手順
  • CentOS 6.5 の設定 ssh キーフリーログインで pssh コマンドを実行する方法の説明
  • Ubuntuの基本設定: openssh-serverのインストールと使用
  • CentOS VPS に SSH 経由で MySQL をインストールする方法
  • Linux オペレーティング システムで ssh/sftp を構成して権限を設定する方法
  • Linux での SSH 非秘密通信の実装
  • さまざまなターミナルで Mac が SSH 経由でリモート サーバーに接続する方法の説明

<<:  Linuxはバイナリモードを使用してmysqlをインストールします

>>:  JavaScript カラービューア

推薦する

仕事の効率を上げるJS略語スキル20選

目次複数の変数を同時に宣言する場合は、1 行に短縮できます。分割代入は複数の変数に同時に値を割り当て...

CSS3アニメーションとHTML5の新機能の詳しい説明

1. CSS3アニメーション☺CSS3 アニメーションは、JavaScript を介して要素のスタイ...

Windows 7 環境での Docker 高速ビルドと Alibaba Cloud コンテナ高速化構成の詳細な説明

前回の Docker に関する記事では、MAC システムでの構築について説明しました。この記事では、...

新しいウィンドウで開くジャンプメニュー、window.open の使い方の紹介

コードをコピーコードは次のとおりです。 <前> <div> <sele...

Vueのレスポンシブシステムの原理の詳細な説明

目次Vueのレスポンシブシステムの基本原則1. Object.definePropertyの使い方を...

Vueルーティングルーターの詳細な説明

目次ルーティングプラグインをモジュール方式で使用するルートの使用宣言型ナビゲーションプログラムによる...

Vueはユーザーログイン切り替えを実装します

この記事では、ユーザーのログイン切り替えを実現するためのVueの具体的なコードを例として紹介します。...

オンデマンドで Vue コンポーネントを自動的にインポートする方法

目次グローバル登録部分登録ローカル自動登録さまざまなソリューションの比較コンポーネント名について参照...

画像にマウスを置いたときにズームイン/ズームアウトするには JS を使用します

マウスが画像上にあるときにズームインおよびズームアウトするには、JS を使用します。具体的なコードは...

Linux のインスタンスにパブリック IP アドレスを割り当てる方法

説明するこのインターフェースを呼び出すときは、次の点に注意する必要があります。パブリック IP アド...

Tomcat プロジェクトを展開する一般的な方法のいくつか [テスト済み]

1 / Webプロジェクトファイルをwebappsディレクトリに直接コピーするこれは最も一般的に使...

CSS で適応型ディバイダーを巧みに実装する N 通りの方法

分割線はウェブページでよく使われるデザインです。例えば、Zhihuのその他の回答をご覧ください。 こ...

MySQL 8.0 における非同期レプリケーションの 3 つの方法について簡単に説明します。

この実験では、空のデータベース、オフライン、オンラインの 3 つのモードで、1 つのマスターと 2 ...

MySql 5.7.17 無料インストール構成チュートリアルの詳細な説明

1. mysql-5.7.17-winx64.zip インストール パッケージをダウンロードします ...

MySQLでよく使われる4つのストレージエンジンについて簡単に説明します。

よく使われる4つのMySQLエンジンの紹介(1):MyISAMストレージエンジン:トランザクションや...