orz.conf

技術メモ✍

Linuxサーバに公開鍵認証でsshログイン

クライアントからLinuxサーバにSSHアクセスする方法の一つに鍵認証を用いる方法があります。

vZdtj6o6EMc/TV+u4UEQXoK69yT3ITfxJvflpkKBxkJJqU/76XcKUwVds3tzj8dEHP6t0zq/maESf1mfflO0rf6UORPEc/IT8VfE81wnXMCHUc6DsvDiQSgVz3HSVdjwd2a/ieqe56ybTNRSCs3bqZjJpmGZnmiFFNMlWlpa91dhk1Fxr/7Lc12hGuFejP6D8bLCZTwHBzp9ti5yVtC90C+9BGNmuKbWFc4/OeggHO7P9v6yUDOZ/y5lPREU6y6RQqng0x/f0MNkfCtVztREErzZjaPor4GkkhIcGas+LZkwNC2oIMpz381zGlPHmRfey+Dn9bvTL+FVrMHN/l+XGOEDFXsMB1n7JPJI8tobPkliq8ytMczxSeqjEUV3HHnd50pa6VqA4oKJ0orXJexQ8C1cM8HbN6q0MWXd7jVTHdh/Mb2VcvfmetEJ3rO2KY0vqfi7bDS1HgXdMvG37Ljm0hDPIC6GUXpgSnPIyz9uJmjZwigVvPx0eoIDW6m1yZgUowPDzFbkNxhckwHKmsmaaXU2WYtJihWNBT3HZDpeCyZGqRrVitUoJlx58XvFDQYS/yZ9/xH9NLCIl2jY9X8a4g1TENcbwk8H2rU04035j/naCrqGFVKcsAqeRd29wR7cYXdtz346d9zKhHtAooAkgDsmcUii1BjRymTCLfeuoq0x61NpnlmzjHeZnNVwne3YGfaZTpMip13FzFZMvAsuxFIKOXRS3/HDKF4YDlrJHRuNFP3rMmKfJxDih8lwoXyLf8iSAlrHeOn+9SzcAfpA3K5zz3uOzXeMO3wGbuzOE9wLkixIHBnu0Oqj8Gvcn5T753H+Ek/vKena4bxhENi+UWltziWJ+a3QLvLGn3E4mRS8gWfvDNoHqDnVFD6MbvpIve90RQ8MTOgjcP2dnbGb/Ergtp4tb1vLI97B/J538AzeLv6cEfDN5gdZQ1mvSQKtfUHSkMQQ5Qeoc7nfCpYoJY8QrmPFNdtAnzRDRyj5aRKYKOO50zXVue0Xve+0D3vyz2r6vxK3e9POQ6yxcTu3p9sxb5sm/4E33F7PlP3Y6K+Cv/4A

この図のように、クライアントに秘密鍵を配布しサーバに公開鍵を配置します。

秘密鍵と公開鍵を作成します。
作成するサーバはどのサーバでも構いません。
(teratermの機能を用いても同様のことが出来ますが今回は割愛します。)

# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx root@localhost.localdomain
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|     NYAN        |
|*_*     :o       |
|        . + =    |
|      :)S= = o   |
|      o.+ .^o^   |
|     +.+ + . .   |
|    . o.= = .    |
|      .+.+ .     |
+-----------------+

Enter passphrase (empty for no passphrase):の箇所で入力するパスワードを
空にすると、ログイン時にパスワードを入力する必要がなくなります。
今回は空にしました。

ここまで終わるとid_rsaとid_rsa.pubの2つのファイルが作成されます。

リナックスサーバに公開鍵を設定します。
ログインしたいユーザのホームディレクトリに.sshディレクトリを作成します。
所有者とグループはそのユーザとし、パーミッションを700とします。

# mkdir ~/.ssh
# chown ユーザ:ユーザ ~/.ssh
# chmod 700 ~/.ssh

公開鍵ファイルを~/.sshディレクトリに配置し、
authorized_keysファイルに名称を変更します。
パーミッションを600とします。

# mv id_rsa.pub authorized_keys
# chmod 600 authorized_keys
# rm rsa.pub

既にauthorized_keysが存在するようならcatします。

# cat rsa.pub >> authorized_keys

続いて秘密鍵をクライアントに渡してやります。
一度権限をrw-r--r--くらいにしてやります。

# chmod 644 id_rsa

これでファイルをクライアントに渡してください。

そのファイルをTeraTermでこのように設定すれば、ログイン出来るかと思います。

f:id:toshtone:20150808132140p:plain

クライアントがCentOSなどのLinuxの場合は、
~/.ssh/の下にid_rsaを配置。

複数id_rsaがある場合は任意の名前に変更する。
その場合~/.ssh/configファイルを作成し

IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/任意の名前

↑のように列挙していく。

Host test
  HostName サーバの名前あるいはアドレス
  User ユーザ名

とするとssh testで接続出来ます。

もしログイン出来ないようなら、サーバの/etc/ssh/sshd_configの
設定を見直します。
下記3行のコメントブロックが外れているかどうか確認してください。

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile     .ssh/authorized_keys

下記のようにしたい場合について
rootユーザのパスワード認証でのログインは拒否
rootユーザの鍵認証でのログインを許可

PermitRootLogin without-password

普段はNoにしているかと思いますがwithout-passwordを指定することで
パスワード以外での認証を許可します。