テクノロジー LINUX Linux サーバー間でパスワードなしの認証のために SSH キーを交換するにはどうすればよいですか?

Linux サーバー間でパスワードなしの認証のために SSH キーを交換するにはどうすればよいですか?

Linux に SSH キーベースの認証を実装する

SSH (Secured Shell) は、SSH クライアントとリモート サーバーの間に暗号で保護された接続を作成するプロトコルです。

SSH を使用すると、リモート サーバーを安全に管理および管理できます。これはさまざまな面で役立ちます。

  • マルチサーバー展開
  • サービスをリモートで停止/開始する
  • オートメーション

そしてあなたの創造性のすべてを(できれば)…

システム管理者として、これは知っておくべき基本事項です。

その方法を学びましょう…

秘密鍵と公開鍵を生成します。秘密キーは ssh クライアント マシンに保存し、安全に保管する必要があります。パスワードを必要とせずに SSH クライアント マシンからリモート サーバーにログインするには、公開キーをリモート サーバーにコピーする必要があります。

以下のことを学びます。

  • SSH をインストールします (すでにインストールされている場合は必要ありません)
  • SSHキーを生成する
  • SSHキーをリモートサーバーにコピーします
  • SSHを使用してリモートサーバーにログインします

デモンストレーションの目的で、以下の IP アドレスを持つ 2 つのサーバーがあり、1 つのシステムはクライアント、もう 1 つはクライアント マシンから ssh 経由でログインするサーバーです。

  • クライアント (ユーザー -> ) : 192.168.56.102
  • リモート (ユーザー -> ubuntu) : 192.168.56.101
Linux サーバー間でパスワードなしの認証のために SSH キーを交換するにはどうすればよいですか?
Linux サーバー間でパスワードなしの認証のために SSH キーを交換するにはどうすればよいですか?

SSHのインストール

この記事で説明されている手順に従う前に、 openssh-server サーバーにインストールされていることを確認してください。インストールされていない場合は、以下のコマンドを実行してインストールします。

 sudo apt-get install openssh-server

sudo systemctl enable ssh

sudo systemctl start ssh

ssh コマンドを実行して、システムにインストールされているかどうかを確認できます。

 @:~$ ssh

usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]

           [-b bind_address] [-c cipher_spec] [-D [bind_address:]port]

           [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]

           [-i identity_file] [-J [user@]host[:port]] [-L address]

           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]

           [-Q query_option] [-R address] [-S ctl_path] [-W host:port]

           [-w local_tun[:remote_tun]] destination [command]
Linux サーバー間でパスワードなしの認証のために SSH キーを交換するにはどうすればよいですか?
Linux サーバー間でパスワードなしの認証のために SSH キーを交換するにはどうすればよいですか?

SSHキーを生成する

これはクライアント サーバーで行う必要があります。

ssh-keygen コマンドを実行して SSH キーを生成します。ファイル、パスフレーズ、同じパスフレーズを要求されたら Enter キーを押すだけです。デフォルトでは、~/.ssh ディレクトリにキーのペアが生成されます。 Id_rsa は秘密キー、id_rsa.pub は関連公開キーです。

 @:~$ ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/home//.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home//.ssh/id_rsa.

Your public key has been saved in /home//.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:3XDm62tzJegGm8oAmFYCyeFZovJOuU42zNgyn9GzH30 @

The key's randomart image is:

+---[RSA 2048]----+

|o+..             |

|+o+              |

|oo. .     . o    |

|.. *     . *     |

|  B .   S . o.   |

| O o . .  . ... .|

|+ @ o o . E=.  o |

| B + o + .o.= .  |

|  + ... o. oo+   |

+----[SHA256]-----+

~/.ssh ディレクトリに 2 つの新しいファイルが生成されます。

Linux サーバー間でパスワードなしの認証のために SSH キーを交換するにはどうすればよいですか?
Linux サーバー間でパスワードなしの認証のために SSH キーを交換するにはどうすればよいですか?

SSHキーをリモートサーバーにコピー

秘密キーはリモート サーバー上の ~/.ssh フォルダーにコピーする必要があります。ほとんどのサーバーにはこのフォルダーがすでに存在するはずです。存在しない場合は、フォルダーを作成する必要があります。

そして、そのためには:

  • 接続したいユーザーでリモートサーバーにログインします。私の場合は ubuntu です
  • 現在の作業ディレクトリがユーザーのホーム ディレクトリであることを確認し、.ssh フォルダーを作成します。次の 1 つのコマンドを使用して、次のコマンドを作成することもできます。
 mkdir -p ~/.ssh

すでに .ssh フォルダーがある場合は、そのバックアップを作成します。

次に、クライアント サーバーから公開キーをプッシュしましょう。

クライアント マシン (192.168.56.102) で以下のコマンドを実行して、リモート サーバーの .ssh ディレクトリ内の authorized_keys ファイル内の公開キーをコピーします。

 @:~$ cat .ssh/id_rsa.pub | ssh ubuntu@192.168.56.101 'cat >> .ssh/authorized_keys'

ubuntu@192.168.56.101's password:

以下のコマンドを実行して、リモートサーバー上のauthorized_keysファイルにアクセス許可を設定します。

 @:~$ ssh ubuntu@192.168.56.101 "chmod 700 .ssh; chmod 640 .ssh/authorized_keys"

これでキーが交換され、許可がすべて設定されました。

Linux サーバー間でパスワードなしの認証のために SSH キーを交換するにはどうすればよいですか?
Linux サーバー間でパスワードなしの認証のために SSH キーを交換するにはどうすればよいですか?

SSHを使用してリモートサーバーにログインします

動作するかどうかテストしてみましょう!

クライアントマシン (192.168.56.102) からリモートサーバー (192.168.56.101) に ユーザーとしてログインしてみましょう。

以下のコマンドを実行してテストします。今回はパスワードを要求されません。

 @:~$ ssh ubuntu@192.168.56.101

Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.4.0-151-generic i686)

 * Documentation:  https://help.ubuntu.com

 * Management:     https://landscape.canonical.com

 * Support:        https://ubuntu.com/advantage

346 packages can be updated.

11 updates are security updates.

Last login: Mon Jun 17 00:10:32 2019 from 192.168.56.101

どうぞ…

リモートサーバーに正常にログインしました。以下のコマンドを実行すると、リモート マシンの IP の詳細が表示されます。

 ubuntu@ubuntu:~$ ifconfig

enp0s3    Link encap:Ethernet  HWaddr 08:00:27:9b:47:86 

          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0

          inet6 addr: fe80::5c62:3267:b752:fe5d/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:20239 errors:0 dropped:0 overruns:0 frame:0

          TX packets:5406 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:22678039 (22.6 MB)  TX bytes:701710 (701.7 KB)

enp0s8    Link encap:Ethernet  HWaddr 08:00:27:a9:4a:6b 

          inet addr:192.168.56.101  Bcast:192.168.56.255  Mask:255.255.255.0

          inet6 addr: fe80::54a9:761c:9034:21a2/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:330 errors:0 dropped:0 overruns:0 frame:0

          TX packets:197 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:42847 (42.8 KB)  TX bytes:32774 (32.7 KB)

lo        Link encap:Local Loopback 

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:65536  Metric:1

          RX packets:997 errors:0 dropped:0 overruns:0 frame:0

          TX packets:997 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1

          RX bytes:79654 (79.6 KB)  TX bytes:79654 (79.6 KB)

結論

ご覧のとおり、SSH キー交換のセットアップは非常に簡単です。これがあなたのお役に立てば幸いです。Linux 管理とトラブルシューティングの学習に興味がある場合は、この Udemy コース をチェックしてください。

Linux サーバー間でパスワードなしの認証のために SSH キーを交換するにはどうすればよいですか?
Linux サーバー間でパスワードなしの認証のために SSH キーを交換するにはどうすればよいですか?

「 Linux サーバー間でパスワードなしの認証のために SSH キーを交換するにはどうすればよいですか?」についてわかりやすく解説!絶対に観るべきベスト2動画

公開鍵認証でwindowsからlinuxにSSHしよう!【インフラエンジニア】【セキュリティエンジニア】【ハッカー】
sshキーの作成 & githubとssh接続する方法

Linux に SSH キーベースの認証を実装する

SSH (Secured Shell) は、SSH クライアントとリモート サーバーの間に暗号で保護された接続を作成するプロトコルです。

SSH を使用すると、リモート サーバーを安全に管理および管理できます。これはさまざまな面で役立ちます。

  • マルチサーバー展開
  • サービスをリモートで停止/開始する
  • オートメーション

そしてあなたの創造性のすべてを(できれば)…

システム管理者として、これは知っておくべき基本事項です。

その方法を学びましょう…

秘密鍵と公開鍵を生成します。秘密キーは ssh クライアント マシンに保存し、安全に保管する必要があります。パスワードを必要とせずに SSH クライアント マシンからリモート サーバーにログインするには、公開キーをリモート サーバーにコピーする必要があります。

以下のことを学びます。

  • SSH をインストールします (すでにインストールされている場合は必要ありません)
  • SSHキーを生成する
  • SSHキーをリモートサーバーにコピーします
  • SSHを使用してリモートサーバーにログインします

デモンストレーションの目的で、以下の IP アドレスを持つ 2 つのサーバーがあり、1 つのシステムはクライアント、もう 1 つはクライアント マシンから ssh 経由でログインするサーバーです。

  • クライアント (ユーザー -> ) : 192.168.56.102
  • リモート (ユーザー -> ubuntu) : 192.168.56.101
Linux サーバー間でパスワードなしの認証のために SSH キーを交換するにはどうすればよいですか?
Linux サーバー間でパスワードなしの認証のために SSH キーを交換するにはどうすればよいですか?

SSHのインストール

この記事で説明されている手順に従う前に、 openssh-server サーバーにインストールされていることを確認してください。インストールされていない場合は、以下のコマンドを実行してインストールします。

 sudo apt-get install openssh-server

sudo systemctl enable ssh

sudo systemctl start ssh

ssh コマンドを実行して、システムにインストールされているかどうかを確認できます。

 @:~$ ssh

usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]

           [-b bind_address] [-c cipher_spec] [-D [bind_address:]port]

           [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]

           [-i identity_file] [-J [user@]host[:port]] [-L address]

           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]

           [-Q query_option] [-R address] [-S ctl_path] [-W host:port]

           [-w local_tun[:remote_tun]] destination [command]
Linux サーバー間でパスワードなしの認証のために SSH キーを交換するにはどうすればよいですか?
Linux サーバー間でパスワードなしの認証のために SSH キーを交換するにはどうすればよいですか?

SSHキーを生成する

これはクライアント サーバーで行う必要があります。

ssh-keygen コマンドを実行して SSH キーを生成します。ファイル、パスフレーズ、同じパスフレーズを要求されたら Enter キーを押すだけです。デフォルトでは、~/.ssh ディレクトリにキーのペアが生成されます。 Id_rsa は秘密キー、id_rsa.pub は関連公開キーです。

 @:~$ ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/home//.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home//.ssh/id_rsa.

Your public key has been saved in /home//.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:3XDm62tzJegGm8oAmFYCyeFZovJOuU42zNgyn9GzH30 @

The key's randomart image is:

+---[RSA 2048]----+

|o+..             |

|+o+              |

|oo. .     . o    |

|.. *     . *     |

|  B .   S . o.   |

| O o . .  . ... .|

|+ @ o o . E=.  o |

| B + o + .o.= .  |

|  + ... o. oo+   |

+----[SHA256]-----+

~/.ssh ディレクトリに 2 つの新しいファイルが生成されます。

Linux サーバー間でパスワードなしの認証のために SSH キーを交換するにはどうすればよいですか?
Linux サーバー間でパスワードなしの認証のために SSH キーを交換するにはどうすればよいですか?

SSHキーをリモートサーバーにコピー

秘密キーはリモート サーバー上の ~/.ssh フォルダーにコピーする必要があります。ほとんどのサーバーにはこのフォルダーがすでに存在するはずです。存在しない場合は、フォルダーを作成する必要があります。

そして、そのためには:

  • 接続したいユーザーでリモートサーバーにログインします。私の場合は ubuntu です
  • 現在の作業ディレクトリがユーザーのホーム ディレクトリであることを確認し、.ssh フォルダーを作成します。次の 1 つのコマンドを使用して、次のコマンドを作成することもできます。
 mkdir -p ~/.ssh

すでに .ssh フォルダーがある場合は、そのバックアップを作成します。

次に、クライアント サーバーから公開キーをプッシュしましょう。

クライアント マシン (192.168.56.102) で以下のコマンドを実行して、リモート サーバーの .ssh ディレクトリ内の authorized_keys ファイル内の公開キーをコピーします。

 @:~$ cat .ssh/id_rsa.pub | ssh ubuntu@192.168.56.101 'cat >> .ssh/authorized_keys'

ubuntu@192.168.56.101's password:

以下のコマンドを実行して、リモートサーバー上のauthorized_keysファイルにアクセス許可を設定します。

 @:~$ ssh ubuntu@192.168.56.101 "chmod 700 .ssh; chmod 640 .ssh/authorized_keys"

これでキーが交換され、許可がすべて設定されました。

Linux サーバー間でパスワードなしの認証のために SSH キーを交換するにはどうすればよいですか?
Linux サーバー間でパスワードなしの認証のために SSH キーを交換するにはどうすればよいですか?

SSHを使用してリモートサーバーにログインします

動作するかどうかテストしてみましょう!

クライアントマシン (192.168.56.102) からリモートサーバー (192.168.56.101) に ユーザーとしてログインしてみましょう。

以下のコマンドを実行してテストします。今回はパスワードを要求されません。

 @:~$ ssh ubuntu@192.168.56.101

Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.4.0-151-generic i686)

 * Documentation:  https://help.ubuntu.com

 * Management:     https://landscape.canonical.com

 * Support:        https://ubuntu.com/advantage

346 packages can be updated.

11 updates are security updates.

Last login: Mon Jun 17 00:10:32 2019 from 192.168.56.101

どうぞ…

リモートサーバーに正常にログインしました。以下のコマンドを実行すると、リモート マシンの IP の詳細が表示されます。

 ubuntu@ubuntu:~$ ifconfig

enp0s3    Link encap:Ethernet  HWaddr 08:00:27:9b:47:86 

          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0

          inet6 addr: fe80::5c62:3267:b752:fe5d/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:20239 errors:0 dropped:0 overruns:0 frame:0

          TX packets:5406 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:22678039 (22.6 MB)  TX bytes:701710 (701.7 KB)

enp0s8    Link encap:Ethernet  HWaddr 08:00:27:a9:4a:6b 

          inet addr:192.168.56.101  Bcast:192.168.56.255  Mask:255.255.255.0

          inet6 addr: fe80::54a9:761c:9034:21a2/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:330 errors:0 dropped:0 overruns:0 frame:0

          TX packets:197 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:42847 (42.8 KB)  TX bytes:32774 (32.7 KB)

lo        Link encap:Local Loopback 

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:65536  Metric:1

          RX packets:997 errors:0 dropped:0 overruns:0 frame:0

          TX packets:997 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1

          RX bytes:79654 (79.6 KB)  TX bytes:79654 (79.6 KB)

結論

ご覧のとおり、SSH キー交換のセットアップは非常に簡単です。これがあなたのお役に立てば幸いです。Linux 管理とトラブルシューティングの学習に興味がある場合は、この Udemy コース をチェックしてください。

Linux サーバー間でパスワードなしの認証のために SSH キーを交換するにはどうすればよいですか?
Linux サーバー間でパスワードなしの認証のために SSH キーを交換するにはどうすればよいですか?

「 Linux サーバー間でパスワードなしの認証のために SSH キーを交換するにはどうすればよいですか?」についてわかりやすく解説!絶対に観るべきベスト2動画

公開鍵認証でwindowsからlinuxにSSHしよう!【インフラエンジニア】【セキュリティエンジニア】【ハッカー】
sshキーの作成 & githubとssh接続する方法