Linuxサーバに公開鍵認証でsshログイン
クライアントからLinuxサーバにSSHアクセスする方法の一つに鍵認証を用いる方法があります。
この図のように、クライアントに秘密鍵を配布しサーバに公開鍵を配置します。
秘密鍵と公開鍵を作成します。
作成するサーバはどのサーバでも構いません。
(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でこのように設定すれば、ログイン出来るかと思います。
クライアントが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を指定することで
パスワード以外での認証を許可します。