SSH は、異なるマシン間でデータを安全に転送するためのプロトコルです。 SSH プロトコルは公開鍵暗号化を使用して、クライアントがサーバーを認証できるようにし、必要に応じてパスワードをやり取りすることなくサーバーがクライアントを認証できるようにします。
公開鍵暗号化では、公開鍵と秘密鍵のペアが使用されます。秘密鍵は秘密にされ、ネットワーク経由で転送されることはありません。公開鍵はすべてのピアに配布できます。公開鍵を使用して暗号化されたメッセージは、秘密鍵でのみ復号化できます。
SSH 接続時に、クライアントはサーバーの公開鍵を受け取り、これが $HOME/.ssh/known_hosts に保存されている公開鍵と一致するかどうかを確認します .このテストが成功し、サーバーがクライアントの公開鍵を持っていない場合は、パスワードが必要です。それ以外の場合、サーバーはクライアントの公開鍵で暗号化されたメッセージを送信し、クライアントが秘密鍵を使用してメッセージを正常に復号化できた場合、接続が確立されます。
SSH プロトコルには、バージョン 1 と 2 の 2 つのバージョンがあります。暗号化はプロトコル バージョンに関連付けられています。バージョン 1 にはセキュリティ上の脆弱性があります。可能な限り、バージョン 2 を使用する必要があります。ほとんどの SSH サーバーは、バージョン 1 の制限により、プロトコルのバージョン 2 を使用します。
公開鍵と秘密鍵のペアの暗号化には、RSA の 2 つのアルゴリズムがあります。 とDSA .
クライアントのセットアップ
プロトコル | タイプ | コマンドライン |
---|---|---|
バージョン 1 | RSA1 | -t rsa1 |
バージョン 2 | RSA | -t rsa |
バージョン 2 | DSA | -t dsa |
必要な ID タイプを決定した後、最初のステップは公開秘密鍵のペアを生成し、公開部分をサーバー側の適切な場所にコピーすることです。クライアント マシンのユーザーのホーム ディレクトリで、次のコマンドを実行します (作成しない場合は、ディレクトリ $HOME/.ssh が必要です)。
# ssh-keygen -t dsa -f ~/.ssh/id_dsa Generating public/private dsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_dsa. Your public key has been saved in /root/.ssh/id_dsa.pub. The key fingerprint is: SHA256:Qmd9iBOzx02n4DvDiBwRoGbGGC12X9i41QtbBxznHZc root@geeklab The key's randomart image is: +---[DSA 1024]----+ |.. ..*.=o+......| |.=.o o * %o*.ooE | |o.B . * X O.+. | | + = * * o | | + S = | | . o | | | | | | | +----[SHA256]-----+
ここで、
-t – は暗号化のタイプに使用されます。
-f – 公開鍵と秘密鍵のペアを保管する場所。この場合、ユーザー ホームの .ssh ディレクトリです。
上記のコマンドを実行すると、パスフレーズが求められます。接続のたびにこのパスフレーズを入力したくない場合は、この部分を空白のままにして [Enter] を押します。または、パスフレーズを処理する ssh-agent を設定することもできます。
上記のコマンドは ~/.ssh に 2 つのファイルを作成します:
# ls -lrt ~/.ssh/id_dsa* -rw-r--r--. 1 root root 602 Apr 12 14:45 /root/.ssh/id_dsa.pub -rw-------. 1 root root 668 Apr 12 14:45 /root/.ssh/id_dsa
サーバーのセットアップ
ファイル id_dsa.pub には、ファイル $HOME/.ssh/authorized_keys に追加する必要があるクライアント公開鍵が含まれています サーバー上:
1. id_dsa.pub ファイルをサーバーにコピーします:
client$ scp ~/.ssh/id_dsa.pub user@server:~/.ssh/id_dsa.pub
もちろん、今回はユーザーのパスワードを入力する必要があります。
2. サーバー マシンにログオンし、サーバー側の .ssh ディレクトリに移動します
client$ ssh user@server server$ cd .ssh
3. ここで、クライアントの公開鍵をサーバー上の既知の公開鍵リストに追加します。
server$ cat id_dsa.pub >> authorized_keys server$ chmod 640 authorized_keys server$ rm id_dsa.pub server$ exit
以上です。
テスト
パスワードなしの ssh が機能するかどうかをテストするには、次の構文を使用します:
$ ssh -l [user] [server] Last login: Tue Apr 12 15:20:07 2007 from 192.168.0.100
または代わりに
$ ssh [user]@[server] Last login: Tue Oct 12 15:20:07 2007 from 192.168.0.100
システムがパスワードを問い合わせなかった場合、すべてが正常に機能しています。
警告
秘密鍵 (~/.ssh/id_dsa) を秘密にしておいてください!あなたの公開鍵 (~/.ssh/id_dsa.pub) を世界に渡しても安全ですが、他の人があなたの秘密鍵 (~/.ssh/id_dsa) を読み取れないように細心の注意を払う必要があります。秘密鍵にアクセスできる人は誰でも、一致する公開鍵がインストールされている任意のマシンにログインできます。