1. ホーム
  2. リナックス

Linux の ssh 公開鍵の追加

2022-01-24 22:20:42

1. サーバーAの公開鍵をサーバーBに追加する

2. サーバーAに移動し、コマンドssh-keygen all way backを入力します。

MBP:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/xubin/.ssh/id_rsa):
/Users/xubin/.ssh/id_rsa already exists.
Overwrite (y/n)? yes
Enter passphrase (empty for no passphrase):
Enter the same passphrase again:
Your identification has been saved in /Users/xubin/.ssh/id_rsa.
Your public key has been saved in /Users/xubin/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:IeFPfrcQ35HotRi2XNOGk MBP
The key's randomart image is:
+---[RSA 2048]----+
| .o*@=o | .
| . . oEB=o | .
| o@=+O .    | .
| B=+o @ .   | .
| =So* * |
| . o. = .   | .
| o
| o
| o
+ ----[SHA256]-----+

3. サーバーAで/root/.ssh/id_rsa.pubを探し、内容をコピーします。

4. サーバーBの/root/.ssh/authorized_keysを探し、サーバーAのid_rsa.pub公開鍵の内容をそこにコピーします。

または、コマンドを使用します。

## Execute on server A
scp /root/.ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys

記事をブックマークする。

sshパスワードレスログインは公開鍵と秘密鍵の両方を使用します。ssh-keygenはLinuxで公開鍵と秘密鍵のペアを生成するために使用できます。
マシンA (192.100.100.155), B (192.200.200.181) があります。今、私はAがパスワードなしでssh経由でBにログインしたい。
まず、例としてrootアカウントでログインします。


1. マシンAで公開鍵/秘密鍵のペアを生成する。

[root@A ~]# ssh-keygen -t rsa -P ''

-P はパスワード、-P ''は空のパスワード、または、-P パラメータを使用しない場合は、キャリッジリターンが 3 つ必要になり、-P ではキャリッジリターンが 1 つになります。
このコマンドは、/root/.ssh ディレクトリの下に id_rsa と id_rsa.pub の鍵のペアを生成します。

通常のssh用rsaキーです。
id_rsa秘密鍵
id_rsa.pubの公開鍵
次のコマンドは、異なるタイプの鍵を生成します。
ssh-keygen -t dsa
ssh-keygen -t rsa
ssh-keygen -t rsa1
2. マシンAの /root/.ssh/id_rsa.pub をマシンBの /root/.ssh/authorized_keys ファイルにコピーします。先にマシンBに /root/.ssh ディレクトリを作り、scpでコピーします。

[root@A ~]# scp /root/.ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys
[email protected]'s password:
id_rsa.pub 100% 223 0.2KB/s 00:00

パスワード不要のログインはまだないので、マシンBのrootパスワードを一度入力する必要があります。
<スパン 3. authorized_keysのパーミッションは600にすべき!!!!

[root@B ~]# chmod 600 /root/.ssh/authorized_keys

4. マシンAはマシンBにログインする。

[root@A ~]# ssh -l root 192.200.200.181
The authenticity of host '192.200.200.181 (192.200.200.181)' can't be established.
RSA key fingerprint is 00:a6:a8:87:eb:c7:40:10:39:cc:a0:eb:50:d9:6a:5b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.200.200.181' (RSA) to the list of known hosts.
Last login: Thu Jul 3 09:53:18 2008 from root
[root@B ~]#

初回ログイン時には、「はい」の入力を求められます。
これで、マシンAはマシンBにパスワードなしでログインできるようになった。
概要:ログインしたマシンは秘密鍵を持つことができ、ログインしたマシンはその公開鍵を持つ必要がある。この公開鍵/秘密鍵のペアは、通常、秘密鍵のホストで生成される。上記はrsaアルゴリズムを使用した公開鍵/秘密鍵ペアですが、もちろんdsaを使用することもできます(対応するファイルはid_dsa, id_dsa.pub)
マシンAとマシンBをパスワードなしで相互にログインさせたい場合は、マシンBを上記と同じように設定すればよい。

<スパン SSH-KeyGenの使用方法

Aがクライアントマシン、Bがターゲットマシンであると仮定する。
実現したいこと
マシンAがマシンBにパスワードを入力せずにsshログインする。
暗号化方式は rsa|dsa で、デフォルトは dsa です。
アプローチ
1. マシンAへログイン
2, ssh-keygen -t [rsa|dsa], 鍵ファイルおよび秘密鍵ファイル id_rsa,id_rsa.pub または id_dsa,id_dsa.pub を生成します。
3. 3. .pub ファイルをマシン B の .ssh ディレクトリにコピーし、cat id_dsa.pub >> ~/.ssh/authorized_keys
4. 作業は完了し、マシンBのターゲットアカウントはマシンAからログインし、パスワードは不要になりました。

ssh-keygen はパスワード認証を行うので、パスワードを使用せずに他のマシンに ssh や scp ができます。
これは、次のように行います。
ssh-keygen -t rsa
次に、デフォルト値を使用して、すべてを入力します。
これで鍵のペアが生成され、~/.ssh の下のユーザーディレクトリに保存されます。
公開鍵を相手マシンのユーザーディレクトリに持って行き、~/.ssh/authorized_keysにコピーします。
.sshとauthorized_keysの両方が、ユーザー本人のみ書き込み可能な状態になっていることを確認してください。そうでないと、認証が無効になります。(これが今日の問題で、問題を見つけるのに時間がかかりました。) 実は、よく考えてみると、これはシステムの脆弱性が出ないようにするためだったのです。

<スパン 元の記事はこちら http://blog.sina.com.cn/s/blog_4077692e0100qjkp.html