GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでのキーベースの認証にssh-keygenと共有を使用する

システム管理者として働いたことがある場合(または将来的に働きたい場合)は、SSHを十分に理解する必要があります。ここでEnableSysadminですでにハッシュ化されているため、一般的な概念については説明しません。しかし、私はそれを使用するための潜在的により良い方法を見たいと思います。 SSHは、世界で最も使用されている単一のリモートアクセスプロトコルです。したがって、可能な限りその使用を改善するよう努めるべきであることが理にかなっています。

私はサポートエンジニアとして、SSHを使用して何千もの顧客のマシンにリモート接続しましたが、他の人も同様の経験をしたと確信しています。従来のSSH認証では、システムにアクセスするたびに、ログインするアカウントのユーザー名とパスワードが必要です。そんなに悪く聞こえませんか?しかし、システム間を定期的に行き来する必要がある場合はどうなりますか?または、ヘルスチェックのために1日を通して同じ100台のシステムへのリモートセッションが責任に含まれている場合はどうなりますか?ログインを完了する別の方法があり、少しの先行投資で、全体的にはるかに効率的になる可能性があります。

プロセス硬化

暗号化されたキーは、悪意のあるユーザーのユーザー名やパスワードよりもはるかに難しいターゲットであることは客観的に真実です。少し学習する必要がありますが、SSHキーベースの認証を作成して使用することは、すべてのシステム管理者にとって投資する価値があります。

仕組みは次のとおりです。公開鍵とそれに対応する秘密鍵を生成します。秘密鍵ファイルはパスワードとして機能します 安全に保管する必要があります。ただし、公開鍵は、定期的に接続するターゲットシステムにコピーされます。ターゲットサーバーのアカウントホームディレクトリに公開鍵を配置します。ログインしようとすると、キーが確認され、アクセスが許可されます。

さて、これを行うには2つの方法があります。 1つはより便利で、もう1つは少し面倒ですが、保護が強化されています。便利な方法は、秘密鍵と一緒にパスワードを指定しないことです。その結果、認証に秘密鍵を使用するときにパスワードを入力する必要がなくなります。これは、誰かがあなたの秘密鍵を手に入れたら、それを使って認証することもできることを意味します。もう1つの方法は、秘密鍵をパスワードで保護して、認証時にパスワードの入力を求められるようにすることです(秘密鍵とパスワードの両方を使用した2要素認証を考えてください)。

パスワードなしのssh-keygen

SSHキーペアを生成するには、次のコマンドを使用します。

[user@host ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): Enter
Created directory '/home/user/.ssh'.
Enter passphrase (empty for no passphrase): Enter
Enter same passphrase again: Enter
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:veutUNPio3QDCyvkYm1oIx35hmMrHpPKWFdIYu3HV+w [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|   .     .       |
|  o o     o      |
| . = o   o .     |
|  o + = S E .    |
| ..O o + * +     |
|.+% O . + B .    |
|=*oO . . + *     |
|++.     . +.     |
+----[SHA256]-----+ 

デフォルトでは、秘密鍵と公開鍵は~/.ssh/id_rsaに保存されます および~/.ssh/id_rsa.pub それぞれファイル。

パスワード付きのssh-keygen

パスワードで保護されたキーの作成は次のようになります:

[user@host ~]$ ssh-keygen -f .ssh/key-with-password
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in .ssh/key-with-password.
Your public key has been saved in .ssh/key-with-password.pub.
The key fingerprint is:
SHA256:s7GGB7EyHUry4aOcNPKmhNKS7dl1YsMVLvFZJ77VxAo [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|    . + =.o ...  |
|     = B XEo o.  |
|  . o O X =....  |
| = = = B = o.    |
|= + * * S .      |
|.+ = o + .       |
|  + .            |
|                 |
|                 |
+----[SHA256]-----+

-fを使用します キーが保存されるファイルを指定するオプション。上記の例では、秘密鍵と公開鍵は/home/user/.ssh/key-with-passに保存されています。 および/home/user/.ssh/key-with-pass.pub それぞれファイル。

警告

さらにSSHキーペアを生成するときに、一意のファイル名を指定しない場合は、既存のid_rsaを上書きするためのアクセス許可を求められます。 およびid_rsa.pub ファイル。既存のid_rsaを上書きする場合 およびid_rsa.pub ファイルの場合は、 ALLで古い公開鍵を新しい公開鍵に置き換える必要があります 古い公開鍵を持つSSHサーバーの数。

キーを生成すると、それらは/user/home/.ssh/に保存されます。 次の権限を持つディレクトリ:

  • 秘密鍵-600
  • 公開鍵-644

まだ終わっていません。 SSHキーベースの認証を成功させるための最後のステップを見てみましょう。

キーの共有

これらすべてを機能させるには、SSHで接続しようとしているリモートマシンと公開鍵を共有する必要があります。 ssh-copy-idを使用します 公開鍵を宛先システムにコピーするコマンド。デフォルトでは、ファイルパスは/home/user/.ssh/id_rsa.pubです。 。コマンドを発行し、共有しているファイルを指定してから、共有しているユーザー/ホストを指定します。次のようになります:

[user@host ~] $ ssh-copy-id -i .ssh/key-with-pass.pub user@destination
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/user/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
user@destination password: changeme
Number of key(s) added: 1

公開鍵を宛先ホストと共有したので、一致する秘密鍵を渡すことにより、リモートサーバーに対して認証できます。秘密鍵のファイルパスを指定した場合は、ここで指定する必要があります。それ以外の場合は、デフォルトで/home/_user_/.ssh/id_rsa

ここで見られる:

[user@host ~]$ ssh -i .ssh/key-with-password user@desination 
Enter passphrase for key '.ssh/key-with-password' : password here if you set one
[user@destination ~] $

利点と要約

SSHキーベースの認証を使用する利点は明らかです。パスワードは、主に人為的ミスが原因で、また攻撃者のスキルと決意が原因で、毎日盗まれています。暗号化されたキー、より具体的にはパスワードで保護された暗号化されたキーは、SSH認証の攻撃をさらに困難にします。可用性とセキュリティのバランスをとる必要がありますが、それは環境ごとに異なる方法で処理されます。

[無料のオンラインコース:Red HatEnterpriseLinuxの技術概要。 ]


Linux
  1. cronを使用してタスクをスケジュールするためのLinuxのヒント

  2. Linux で kbhit() と getch() を使用する

  3. 認証/承認に AD/Kerberos を使用する Linux サーバーにはコンピューター アカウントが必要ですか?

  1. Linuxパッケージ管理のためのAppImageの使用

  2. 初心者と専門家のための10のLinuxコマンドチュートリアル

  3. Linuxユーザーと権限のチートシート

  1. Linuxでの印刷にCUPSを使用するためのヒントとコツ

  2. LinuxでのGPGを使用したファイルの暗号化と復号化[初心者向けハンズオン]

  3. LinuxでSSHキーベースの認証を構成する方法