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行をコメントアウトします。
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