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

SSH2 キーベースの認証設定の総合ガイド

以前、openSSH でパスワードを入力せずに SSH と SCP を実行する方法を説明しました。この記事では、SSH2 で鍵ベースの認証をセットアップする方法を説明します。
1. パスワードを入力せずに SSH/SCP を実行します。
1.ローカル ホストとリモート ホストが SSH2 を実行していることを確認します。 以下に示すように、ssh と scp はそれぞれ ssh2 と scp2 へのシンボリック リンクであることに注意してください。

[local-host]$ ls -l /usr/local/bin/ssh /usr/local/bin/scp
lrwxrwxrwx  1 root root 4 Mar 10 22:04 /usr/local/bin/scp -> scp2
lrwxrwxrwx  1 root root 4 Mar 10 22:04 /usr/local/bin/ssh -> ssh2
[local-host]$ ssh -V
ssh: SSH Secure Shell 3.2.9.1 (non-commercial version) on i686-pc-linux-gnu

[remote-host]$ ls -l /usr/local/bin/ssh /usr/local/bin/scp
lrwxrwxrwx  1 root root 4 Mar 10 22:04 /usr/local/bin/scp -> scp2
lrwxrwxrwx  1 root root 4 Mar 10 22:04 /usr/local/bin/ssh -> ssh2
[remote-host]$ ssh -V
ssh: SSH Secure Shell 3.2.9.1 (non-commercial version) on i686-pc-linux-gnu


2. ssh-keygen2 を使用して、ローカル ホストで鍵ペアを生成します。 通常、ssh-keygen は、以下に示すように ssh-keygen2 へのソフトリンクになります。

[local-host]$ ls -l /usr/local/bin/ssh-keygen
lrwxrwxrwx  1 root root 11 Mar 10 22:04 /usr/local/bin/ssh-keygen -> ssh-keygen2

[local-host]$ ssh-keygen
Generating 2048-bit dsa key pair
2 oOo.oOo.oOo.
Key generated.
2048-bit dsa, jsmith@local-host, Sat Jun 21 2008 23:10:20 -0700
Passphrase :<Enter the passphrase>
Again      :
Private key saved to /home/jsmith/.ssh2/id_dsa_2048_b
Public key saved to /home/jsmith/.ssh2/id_dsa_2048_b.pub

公開鍵と秘密鍵は、ホーム ディレクトリの下の .ssh2 フォルダーに格納されます。この例では、/home/jsmith/.ssh2 の下にあります。秘密鍵は誰とも共有しないでください。

デフォルトでは、ssh-keygen2 は DSA キー ペアを生成します。 ssh-keygen -t rsa を使用して RSA キー ペアを生成することもできます。
3. .ssh2 ディレクトリに適切な権限を与える 以下に示すように。

[local-host]$ chmod 755 ~/.ssh2/
[local-host]$ chmod 644 ~/.ssh2/id_dsa_2048_b.pub
[local-host]$ chmod 644 ~/.ssh2/authorization

<強い>4.クライアント マシンで秘密鍵を特定します。 ローカル ホストで、以下に示すように秘密鍵を SSH2 識別ファイルに追加します。識別ファイルが存在しない場合は、新しいファイルを作成します。ファイルが存在する場合は、上記の手順で生成された秘密鍵のファイル名を識別ファイルの「IdKey {private-key file-name}」に追加します。 」の形式を以下に示します。

[local-host]$ cat /home/jsmith/.ssh2/identification
IdKey id_dsa_2048_a
IdKey id_dsa_2048_b

<強い>5.公開鍵をリモート ホストにコピーします。

/home/jsmith/.ssh2/id_dsa_2048_b.pub ファイルをローカル ホストからリモート ホスト /home/jsmith/.ssh2/id_dsa_2048_b.pub にコピーします。リモートホストで vi /home/jsmith/.ssh2/id_dsa_2048_b.pub を実行し、ローカルホストから公開鍵の内容をコピーできます。

[remote-host]$ cat /home/jsmith/.ssh2/id_dsa_2048_b.pub
---- BEGIN SSH2 PUBLIC KEY ----
Subject: jsmith
Comment: "2048-bit dsa, jsmith@local-host, Sat Jun 21 2008 23:10:\
20 -0700"
BCDEB3NzaC1kc3MAAAEBAMNH6MnHGNzNcuXWuQrGljZsObQq5SknOpLOreXq2GVeSIspX0
S1q7W63VGVDBD9ZVvZzg3UhzsPp6m/WPS53QAxlpQvTLCepipl1LILeOZRnYw+xXzEGgqa
HggXhTy7Z1BMtB1dSlXT2Q1gdvRkvZ0hmlMXH0ktj7U81lKEkzYj8E/E1PZIJsBHAXbYms
q7ftNTd7Gf1mSfbWIG7NIyOZ4i2qSZpQayuvB3MFQXy8lz25NGVq18zoFV4THtzV6ABvHL
IJXEObZUgdUXJXQg49oeXvE6tyaqSUU7tUbp06ZgI/BcFGmbk9FDoC5gy30S5RBPpAJ5II
vsfksnJRt+8R0AAAAVAJcTY6u2Em0Eo5I7X6yL1W+Di+rpAAABAELiJqtn2flgjA926TQk

3af14zSGFHut5kZjsMKUf+3Jj3p5MTiWVglgwWYLXcrG258l5GVPzdgF2d7Z9Bu1RUsdBo
rU5LURvF1cZqC5V+9PD6hlH1iYuULUIbAaIfH6SXuk2KwQ/pEh1Q+lXUj6cCfLwe+yLcvZ
YKLGdi2MvurUKmVRik3RpaB9wcuKbLjkp1rFZGr9skDAc2hYfpM0uF+6UEz6LXWKIvLJeO
Iro6VL3MkJTxXb/Xu5/77TrT+Iz8+5cbALM3EdBOlJa1HcpPXnSKakB3Wo/Ljzf41GZPc/
Y6u09soNsnAHdv9y9gMhj1054sPwNCEJAy4eaWWsqkMAAAEBAL6eolWH4AGuB2/lPu79B0
ufgaU6BQfxED7rItf/lDhtsfHl77u6URxwQzvSV2CNJJ17WkdQoJmGfTVoSduNXOAgkQJU
woB1ALzUfugbzLVxMXWUlmoQjvyoo4G9LMDdyP5qCbFXKsqkpY16N9xcUap5PgmcoF+dCv
+hTjcC6f8j+BOy7zHYfyBnPGgSjKph9gjHyBEZiujPNkNmDXM+Mz7YeEd5HCtt1p55SBv6
wyePMAjf40ty7xcakj0Gk8c52W5yFwQjJw5EvruYW2s/1eNDXIY1IJOQKlUgOEQfon99a/
8NO0BWLNiSCNdr3uHFkr68jeusASRWWvfxYU6uZ9c=
---- END SSH2 PUBLIC KEY ----

<強い>6.リモートホストに認証ファイルを作成 以下に示すように。この承認ファイルには、前の手順で説明したように、ローカル ホストからリモート ホストにコピーされた公開キーの名前が含まれている必要があります。このファイルの形式は「キー {公開鍵ファイル名}」であることに注意してください。 「.

[remote-host]$ cat /home/jsmith/.ssh2/authorization
Key id_dsa_2048_b.pub

7. SSH2 キー認証を使用してローカル ホストからリモート ホストにログインし、正常に動作するかどうかを確認します。

[local-host]$ ssh -l jsmith remote-host <You are on local-host here>
Passphrase for key "/home/jsmith/.ssh2/id_dsa_2048_b" with comment "2048-bit dsa, jsmith@local-host, Sat Jun 21 2008 23:10:20 -0700": <Enter your passphrase here>
Last login: Sat Jun 21 2008 23:13:00 -0700 from 192.168.1.102
No mail.
[remote-host]$ <You are on remote-host here>

パスワードを入力せずに ssh と scp を実行するには、2 つの方法があります:

<オール>
  • パスフレーズなし。 キー ペアの作成中は、パスフレーズを空のままにします。このオプションは、自動バッチ処理に使用します。例えばマシン間でファイルをコピーするために cron ジョブを実行している場合、これは適切なオプションです。このメソッドの次のステップはスキップできます。
  • パスフレーズと SSH エージェントを使用する。 コマンドラインから対話的に ssh と scp を使用していて、ssh または scp を実行するたびにパスワードを使用したくない場合は、前のオプション (パスフレーズなし) はお勧めしません。 ssh 鍵ベースの認証におけるセキュリティの強化。代わりに、キー ペアの作成時にパスフレーズを使用し、SSH エージェントを使用して ssh と scp を実行します。以下の手順で説明するように、パスワードを毎回入力する必要はありません。
  • <強い>8.ローカル ホストで SSH エージェントを起動して、パスフレーズを何度も入力せずに ssh と scp を実行します。

    [local-host]$ ssh-agent $SHELL

    9.ローカル ホスト上の SSH エージェントに秘密鍵を読み込みます。

    [local-host]$ ssh-add
    Adding identity: /home/jsmith/.ssh2/id_dsa_2048_b.pub
    Need passphrase for /home/jsmith/.ssh2/id_dsa_2048_b (2048-bit dsa, jsmith@local-host, Sat Jun 22 2008 23:10:20 -0700).
    Enter passphrase: <Enter your passphrase here>

    <強い>10.パスワードを入力せずに、ローカル ホストからリモート ホームへの SSH または SCP を実行します。

    [local-host]$<You are on local-host here>
    
    [local-host]$ ssh -l jsmith remote-host
    Last login: Sat Jun 07 2008 23:03:04 -0700 from 192.168.1.102
    No mail.
    <ssh did not ask for passphrase this time>
    [remote-host]$ <You are on remote-host here>

    この記事に関するご意見やご感想をお寄せください。この投稿が気に入ったら、The Geek Stuff を購読していただければ幸いです。


    Linux
    1. プライバシーのためにSSHを構成する3つの方法

    2. Gnu-screenの「コマンド文字」を定義するための包括的な可能性のセットを作成するにはどうすればよいですか?

    3. ルートアクセスとSshキーベースの認証にSudoを必要とするシステムでSftpを使用するにはどうすればよいですか?

    1. openssh秘密鍵をSsh2秘密鍵に変換しますか?

    2. Ssh認証に使用するGpgサブキーとしてSshキーをインポートしますか?

    3. SSL キーのアクセス許可?

    1. BashForループガイドと例

    2. Cron Job:初心者向けの包括的なガイド2022

    3. ユーザーごとにパスワードベースの SSH アクセスを制限しますが、キー認証は許可します