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

SSHは、安全な伝送プロトコルであるSecure Shellを指します。Ubuntuクライアントは、SSHを介してリモートサーバーにアクセスできます。

SSHの導入と動作メカニズム

SSHの概要

ftp、POP、telnetなどの従来のネットワークサービスプログラムは、パスワードとデータをプレーンテキストでネットワーク上に送信するため、本質的に安全ではありません。また、下心のある人は、これらのパスワードとデータを簡単に傍受できます。さらに、これらのサービスプログラムのセキュリティ検証方法にも弱点があります。つまり、「man-in-the-middle」攻撃に対して脆弱です。いわゆる「真ん中の男」攻撃方法は、「真ん中の男」がサーバーに送信したデータを受信するために実サーバーのふりをしてから、あなたのふりをしてデータを実サーバーに送信することです。サーバーとあなたの間のデータ転送が「仲介者」によって手と足を変えられた後、深刻な問題が発生します。

昔々、TatuYlönenという名前のフィンランドのプログラマーがSSH(Secure SHellの略)と呼ばれるネットワークプロトコルとサービスソフトウェアを開発しました。 SSHを使用すると、送信されるすべてのデータを暗号化できるため、「真ん中の男」の攻撃を防ぐことができます。また、DNSとIPのなりすましを防ぐこともできます。送信データが圧縮されるという追加の利点があるため、送信速度を加速できます。 SSHには多くの機能があります。多くの人がSecureShellをTelnetの代わりと見なしていますが、それを使用してネットワーク接続を保護することができます。ローカルシステムまたはリモートシステムのセキュアシェルを介して、POP、X、PPP、FTPなどの他のネットワーク通信を転送できます。 CVSやその他のTCP通信など、他の種類のネットワーク通信を転送することもできます。さらに、TCPラッパーを備えたSecure Shellを使用して、接続のセキュリティを強化できます。さらに、Secure Shellには、Oracleなどのアプリケーションに使用できるその他の便利な機能がいくつかあります。また、リモートバックアップやSecurIDカードなどの追加の認証にも使用できます。

SSHの動作メカニズム

SSHは、クライアント部分とサーバー部分の2つの部分に分かれています。

サーバーはデーモン(デーモン)であり、バックグラウンドで実行され、クライアントからの接続要求に応答します。サーバーは通常、sshdプロセスであり、リモート接続の処理を提供します。これには、通常、公開キー認証、キー交換、対称キー暗号化、および非セキュア接続が含まれます。

クライアントには、sshプログラムと、scp(リモートコピー)、slogin(リモートログイン)、sftp(セキュアファイル転送)などの他のアプリケーションが含まれます。

それらの動作メカニズムは、ローカルクライアントがリモートサーバーに接続要求を送信し、サーバーが適用されたパケットとIPアドレスをチェックしてから、キーをSSHクライアントに送信し、ローカルがキーをサーバーに送り返すというものです。それ以来、接続が確立されました。今お話ししたのは、SSH接続の一般的なプロセスです。SSH1.xとSSH 2.xでは、接続プロトコルにいくつかの違いがあります。

SSHは、スーパーサーバー(inetd)を使用せずに独自に動作するように設計されています。SSHプロセスはinetdのtcpdを介して実行できますが、完全に不要です。 SSHサーバーの起動後、sshdはデフォルトのポート22で実行およびリッスンします(#ps -waux | grep sshdを使用して、sshdが正しく実行されているかどうかを確認できます)inetdによって起動されていない場合、SSHは接続要求を待っています。要求が来ると、SSHデーモンはこの接続を処理する子プロセスを生成します。

ただし、著作権と暗号化アルゴリズムの制限により、多くの人がOpenSSHに切り替えています。 OpenSSHはSSHの代替手段であり、無料です。

SSHは、クライアントソフトウェアとサーバーソフトウェアで構成されています。互換性のないバージョンは、1.xと2.xの2つです。 SSH 2.xを使用するクライアントプログラムは、SSH1.xのサービスプログラムに接続できません。 OpenSSH 2.xは、SSH1.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-インストールsshまたはsudoaptを取得します-get installopenssh-client
ssh-keygen 

( Enterキーを押してデフォルト値を設定します)

デフォルトでは、id_rsaファイルとid_rsa.pubファイルを生成します。これらは、それぞれ秘密鍵と公開鍵です。

注:sudo apt-get insall sshが失敗してインストールできない場合は、sudo apt-get installopenssh-clientを使用してインストールしてください。

サーバーIPが192.168.1.1、sshサービスのポート番号が22、サーバー上のユーザーがrootであると想定します。

sshを使用してサーバーにログインするコマンドは次のとおりです。

> ssh –p 22 [email protected]>rootユーザーのパスワードを入力します

2つ目は、サーバーをインストールする

UbuntuはデフォルトではSSHサーバーをインストールしません。次のコマンドを使用してインストールします。

sudo apt-get install openssh-server

次に、sshserverが開始されているかどうかを確認します(または「netstat-tlp」コマンドを使用します)

ps -e|grep ssh

ssh-agentしかない場合は、ssh-serverが起動されていません。/etc/init.d/sshstartが必要です。sshdが表示されている場合は、ssh-serverが起動されています。

そうでない場合は、次のように開始できます。

sudo/etc/init.d/ssh start

実際、特別な要件がない場合は、OpenSSHサーバーがここにインストールされます。ただし、さらに設定を行うと、OpenSSHのログイン時間が短くなり、安全性が高まります。これはすべて、opensshの構成ファイルsshd_configを変更することで実現されます。

3、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.original
sudochmod a-w /etc/ssh/sshd_config.original

構成ファイルを編集します。

gedit /etc/ssh/sshd_config

#Port 22を見つけ、コメントを削除して、5桁のポートに変更します: Port 22333

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

構成後に再起動します。

sudo/etc/init.d/ssh restart

4、SSHサービスコマンド

サービスを停止します:sudo /etc/init.d/ssh stop

サービスを開始します:sudo /etc/init.d/ssh start

サービスを再起動します:sudo /etc/init.d/sshresart

切断:終了

ログイン:[email protected]

ルートは192.168.0.100マシンのユーザーであり、パスワードを入力する必要があります。

5、SSHログインコマンド

一般的な形式: ssh [-llogin_name] [-p port] [user @] hostname

より詳細な情報は、ssh-hで表示できます。

例えば

ユーザー指定なし: ssh 192.168.0.1

指定ユーザー:

ssh -l root 192.168.0.1
ssh [email protected]

sshログインポートを変更した場合は、次のことができます。

ssh -p 22333192.168.0.111
ssh -l root -p 22333216.230.230.105
ssh -p 22333 [email protected]

6、ログイン速度を向上させる

リモートでログインする場合、ユーザー名を入力した後、パスワードの入力を求められるまでに長時間待つ必要がある場合があります。実際、これはsshdがクライアントのdns情報をチェックする必要があるためです。この機能を無効にすると、ログイン速度を大幅に上げることができます。まず、sshd_configファイルを開きます。

sudo nano /etc/ssh/sshd_config

セクションGSSAPIオプションを見つけて、次の2行をコメントアウトします。

GSSAPIAuthentication yes #GSSAPIDelegateCredentials no次に、sshサービスを再起動します。

sudo /etc/init.d/ssh restart

もう一度ログインしてみてください。非常に高速です。

7つ目は、PuTTyを使用して、証明書認証を介してサーバーにログインする

SSHサービスでは、すべてのコンテンツが暗号化されて送信され、セキュリティは基本的に保証されています。ただし、証明書認証が利用できる場合はセキュリティが向上し、一定の設定を行うと、証明書認証による自動ログインの効果も実現できます。

まず、sshd_configファイルを変更して、証明書認証オプションを有効にします。

RSAAuthentication yes PubkeyAuthentication yesAuthorizedKeysFile%h / .ssh / authorized_keys変更が完了したら、sshサービスを再起動します。

次のステップでは、SSHユーザーの秘密鍵と公開鍵を確立する必要があります。まず、キーを設定する必要のあるアカウントにログインします。ここで、rootユーザーからログアウトしてください。必要に応じて、suコマンドを使用して別のユーザーに切り替えてください。次に、以下を実行します。

ssh-keygen

ここで、生成されたキーをデフォルトのディレクトリに保存できます。確立プロセス中に、パスフレーズの入力を求められます。これは、証明書にパスワードを追加するのと同じです。これは、セキュリティを向上させるための手段でもあり、証明書が誤ってコピーされた場合でも恐れることはありません。もちろん、これを空白のままにすると、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]-> [認証]の下の[参照]ボタンをクリックして、生成された秘密鍵を選択します。次に、[接続]オプションに戻り、自動ログインユーザー名に証明書のユーザー名を入力します。 [セッション]タブに戻り、名前を入力し、[保存]をクリックしてセッションを保存します。下部にある[開く]をクリックすると、証明書認証を介してサーバーにログインできるようになります。パスフレーズがある場合は、ログインプロセス中にパスフレーズを入力するように求められます。それ以外の場合は、サーバーに直接ログインするため、非常に便利です。

以上が本稿の内容ですので、皆様のご勉強に役立てていただければ幸いです。

Recommended Posts

Ubuntu環境でのSSHのインストールと使用の詳細な説明
Ubuntu環境でのSSHのインストールと使用
Pythonでのpipの使用に関する詳細な説明|サードパーティライブラリのインストールの概要
UbuntuでのPythonでのGDALのインストールと使用
ubuntu環境でのMySQLのインストールと簡単な実践(1)
Ubuntu環境でのNginxのインストールと展開
Win10サブシステムUbuntuのインストールと使用
Ubuntuシステムの使用と開発における一般的な例外と解決策
UbuntuでのSubversion(SVN)のクイックインストールと構成の詳細な説明
Ubuntuの基本設定:openssh-serverのインストールと使用の概要
ubuntuでのHanlpの使用の概要
Ubuntu19.1でのGitLabのインストール、構成、およびアンインストール
Ubuntuでの静的DNS構成方法の詳細な説明
UbuntuでのAnacondaの使用
centOS7でのSparkのインストールと構成のチュートリアルの詳細な説明
ubuntuで仮想環境を構築する過程で遭遇
ubuntuでのJenkinsのハッピーインストール
gpg2を使用したubuntuの詳細な説明
CentOS8でのnmcliの詳細な使用
Ubuntu19.1のインストールと構成中国の環境
CentOSでのMysqlのインストールと使用
Centos-6.5LNMP環境のインストールと展開
Ubuntu16.04でのCUDAのインストールとアンインストール
Ubuntu18.04サーバーバージョンのインストールと使用(グラフィック)
Ubuntu18.04インストールPycharmチュートリアルの実装
Centos7のインストールとAirflowの展開の詳細
Ubuntu環境でそれらのものをDockerする
Ubuntu20.04インストールPython3仮想環境チュートリアル詳細な説明
CentOS7システムでのJDKのインストールと構成
Python super()メソッドの原理の詳細な説明
UbuntuでTensorFlow使用環境を構成する方法
Ubuntu12.04でのpulseaudioとAPIの使用法のインストール
Ubuntuの基本的な構成とインターフェースの美化
pythonでのリストの意味と使用法
Centos7によるPHPのインストールとNginxのチュートリアルの詳細
仮想マシンでUbuntuとWindowsシステムを使用する
Pythondecimalモジュールの使用法の詳細な説明
ubuntuのスケジュールされたタスクにcrontabを使用する
ubuntuでpythonをアンインストールした結果、非常に
VMwareWorkstationでのCentOS7のインストールと構成
ubuntuのファイアウォールをオフにしてからオンにします
CentOS6.5でのHadoop環境の構築に関する詳細な説明
apt-get install of ubuntu(transfer)のデフォルトのインストールパス
Python関数パラメータ分類の原理の詳細な説明
Pythonタイマースレッドプールの原理の詳細な説明
Pythonインターフェース開発の実装手順の詳細な説明
ubuntuでスーパーバイザーを使用する
Ubuntuシステムでの静的DNS構成の詳細な説明
Ubuntuの紹介とインストール
LinuxシステムにおけるCentOSとUbuntuの違い
Pythonオブジェクトの属性アクセスプロセスの詳細な説明
pythonに基づく残りの問題の詳細な説明(%)
仮想マシンへのCentOS6.4システムの詳細なインストール手順
1つは、ピットにドッキングする(win10とUbuntuのインストール)
vmwareでのCentOS7ネットワーク設定チュートリアルの詳細な説明
ubuntuでのrz / szコマンドのインストールと使用方法
ubuntuの下のLinux環境で発生した問題を解決します
[共有] Ubuntu16.04へのVitis2019.2のインストール失敗の問題を解決します
sshを介してwin10でubuntuシステムを制御する方法
CentOS環境でのMySQLインポートファイルの失敗の問題
ubuntu16.04で行番号を自動的に設定するための詳細な手順