2019-01-12_ssh鍵認証の設定

このページでわかること

  • linuxでのssh鍵認証の設定方法

必要なファイル類

名称 種別 権限
.ssh D 700
id_rsa (秘密鍵) F 600
id_rsa.pub (公開鍵) F 600
authorized_keys (公開鍵) F 600

ssh鍵認証の設定方法

手動での方法設定

【接続先サーバー】で実行

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
##c ディレクトリ生成
$c mkdir -m 700 ~/.ssh
$c cd ~/.ssh

##c 鍵ファイルを作成する
##c 4096bitの暗号化強度で作成
##c コマンド投下後、Enterを3回押下でファイル名id_rsaでパスワード非設定で作成
$c ssh-keygen -t rsa -b 4096

##c authorized_keysを作成
$c cat id_rsa.pub >> authorized_keys && chmod 600 authorized_keys

##c 作成した秘密鍵はscpなどで接続元に転送しサーバ内からは削除
##c なお複数サーバー間で同じユーザーで相互接続をする場合は秘密鍵がお互いに必要なので残しておく。

ssh-copy-idコマンドを使う

前提条件を満たしているならこちらの方法が簡単です。

  • 前提条件:
    • 接続先ホストにパスワード認証でログインできること
    • 接続先ホストのユーザーにパスワードが設定されていること
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
##c ディレクトリ生成
$c mkdir -m 700 ~/.ssh
$c cd ~/.ssh

##c 鍵ファイルを作成する
##c 4096bitの暗号化強度で作成
##c コマンド投下後、Enterを3回押下でファイル名id_rsaでパスワード非設定で作成
$c ssh-keygen -t rsa -b 4096

##c 公開鍵を接続先ホストにコピー
##c パスワード要求があったら接続先で指定しているパスワードを入力
$c ssh-copy-id ${user}@${target_host}

参考: 作成時ログ

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
$c ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/testuser/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/testuser/.ssh/id_rsa.
Your public key has been saved in /home/testuser/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:tF8RPmpMcpwCeDMQ5nB2wTWSKDikK57mNrWGeu7mtFk testuser@dev
The key's randomart image is:
+---[RSA 4096]----+
|.o. **=+o   .    |
|+ .*o.*o o o .   |
|.. ... o+ = +    |
| .     . B . o   |
|o       S + .    |
|o ..     o .     |
| ++ E     .      |
|o=o*             |
|+BO              |
+----[SHA256]-----+

参考: 秘密鍵から公開鍵の作成

たまに公開鍵ファイルがなくなったり……

$c ssh-keygen -yf ${key_file}