CentOS OS Ubuntu インフラ

パスワード無しでSSH公開鍵認証をする手順

2018年4月3日

こんにちは!シミダイ(@shimidai2100)です。

SSH公開鍵認証を使用したので備忘録も兼ねて記事にしたいと思います。

公開鍵認証方式は知っていましたが、意外にハマりました。この記事を書いて忘れないようにします。

ちなみにパスワードを入力しないSSHログインする方法を「SSH公開鍵認証のパススルー認証」といいます。


SSH認証で使用する鍵ファイルを作成

まずは接続させたいサーバでSSH認証に必要な「秘密鍵」と「公開鍵」を作成します。

ssh-keygen -t rsa -b 4096 -f <privete-keyname>

↓が鍵作成の実行ログ実行ログになります。

# ssh-keygen -t rsa -b 4096 -f private.key
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in private.key.
Your public key has been saved in private.key.pub.
The key fingerprint is:
03:52:b2:e6:be:7e:0e:df:7f:53:45:46:bc:85:35:e0 root@rhel73-12201.local.com
The key's randomart image is:
+--[ RSA 4096]----+
|    . .      ..*o|
|     +      . . *|
|    + .      E oo|
|   o . .       ..|
|    .   S      . |
|   .     .    .  |
|    o        .   |
|     +..    o    |
|   .ooo .... .   |
+-----------------+

# ls -l
合計 8
-rw-------. 1 root root 3243  3月 26 23:20 private.key
-rw-r--r--. 1 root root  753  3月 26 23:20 private.key.pub

# cat private.key
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----

鍵ファイルとして2つが出来ていると思います。

  • 秘密鍵」が「private.key
  • 公開鍵」が「private.key.pub

になります。

いろいろなサイトでは「-b」オプションを使用せずに鍵を作成していますが、

かならず「-b」を使用して鍵長を「4096」バイトにしましょう。

公開鍵をサーバに登録

次に公開鍵をサーバに登録します。

cat <public-keyname> >> ~/.ssh/authorized_keys

catコマンドで「authorized_keys」ファイルに内容を追記していますが、「公開鍵」であるので注意でしてください。

ホームディレクトに下に「~/.ssh」ディレクトが無い場合は、作成しましょう。

mkdir ~/.ssh/

↓が実行ログになります。

# cat private.key.pub >> ~/.ssh/authorized_keys
# cat ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDOJAooFBVCC1PCsnJaiH4kdUjbwJjZaMZWY7UpLfvJpTV8t/6HXgZwNHx8KrpqHNhgzGcNNdFoeC5N9nHVCJQy81TPJ/rQBK7RyQ1eujf9/EeVEMBS3jalS+dsIZF3Z2i4Z7H4UU+ICO9fWs2rrPYsCtMrvYHTv0U1QLa8fJEM7Blt3cqFk7hRxS/kvNQVkOXv4H9PtgtMwzsqoH8uquyp4fXW7ka1zM5QbjXW+TTibzG0tZ8IyI9yy3s6pWouwaWCNThNi0SNdjhhIKbiwKCMkMaz9Qj9t8wen+A5IdBN5uwuoqvwusBjYt3e1hrkdJ/cX1JGdhnVfV62rzcqHFwNfy1uI9xhqJfgK4PCFY3kMMI4xoGctfYFzLzU4otFN9kmVfAT0FQWe3LjFvwVjHJR3Y5vZIjks0qIcgzcXwWF+kncIyVparG0ceif/1SlAk63tG3YCcRAx29Kst5x4Uqmw1L03KbXTKQdx4GRpnhlHz2fw1t4WpZZxkfLDgKYZGDVa7Kqrvt9+d3cUnVQEw9QzBOumDJpFaa9zlO4OKW83rnEyYVr0yttp4kFs3SD2dPqzsfPSSFksg+XAih9NmkUz2hpXWznysxCHgNKWwoDbJekFOFhIgvp+tIddFlPaBFvmXplLd+GV/wFkN8OI9JdzXGed9d4PSokDN+dP5+F8Q== root@rhel73-12201.local.com

最後に公開鍵と格納ディレクトリの権限を変更します。

# chmod 600 ~/.ssh/authorized_keys
# chmod 700 ~/.ssh

↓が実行ログになります。

# chmod 600 ~/.ssh/authorized_keys
# chmod 700 ~/.ssh
# ls -l ~/.ssh/authorized_keys
-rw-------. 1 root root 753  3月 26 23:31 /root/.ssh/authorized_keys
# ls -ld ~/.ssh
drwx------. 2 root root 74 3月 26 23:31 /root/.ssh

公開鍵認証が出来るようにsshdを設定する

最後にsshdの設定を変更します。

vi /etc/ssh/sshd_config

以下の2行を追記する

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

その後、sshdを再起動します。

# systemctl restart sshd

↓が実行ログです。念のため。

# systemctl status sshd
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since 月 2018-03-26 23:39:37 JST; 22s ago
     Docs: man:sshd(8)
           man:sshd_config(5)
  Process: 26927 ExecStart=/usr/sbin/sshd $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 26928 (sshd)
   CGroup: /system.slice/sshd.service
           mq26928 /usr/sbin/sshd

 3月 26 23:39:37 rhel73-12201.local.com systemd[1]: Starting OpenSSH server daemon...
 3月 26 23:39:37 rhel73-12201.local.com systemd[1]: PID file /var/run/sshd.pid not readable (yet?) afte...rt.
 3月 26 23:39:37 rhel73-12201.local.com sshd[26928]: Server listening on 0.0.0.0 port 22.
 3月 26 23:39:37 rhel73-12201.local.com sshd[26928]: Server listening on :: port 22.
 3月 26 23:39:37 rhel73-12201.local.com systemd[1]: Started OpenSSH server daemon.
Hint: Some lines were ellipsized, use -l to show in full.

秘密鍵をクライアント環境に転送し接続してみる

SCPなどで作成したSSH秘密鍵をクライアント環境へ持ってきましょう。

その後下の図のようにTeratermで秘密鍵を指定しましょう。その際には、パスワードはブランクでもログイン出来るはずです。

以上、でSSH公開鍵認証の手順になります。クライアント環境に持ってきた「秘密鍵」はとっても大事なのでなくさないようにしましょう。

関連記事

-CentOS, OS, Ubuntu, インフラ

Copyright© shimidai2100 , 2020 All Rights Reserved.