5分でSSHの公開鍵認証を有効化する方法【ファイル転送ソフト不要】

ターミナル画面のイメージ画像

SSHで公開鍵認証を有効化するのには、鍵ペアの生成や鍵の配送に手間がかかります。特に、鍵を配送するのはちょっと面倒だし、初心者にとっては手順が複雑で分かりづらい点もあると思います。

そこで、ファイル転送ソフトや鍵ペア生成機能がない環境で、なるべく手っ取り早く公開鍵認証を有効化する手順を紹介します。

注意事項

  • 操作の簡単さ最重視なので、セキュリティ上完璧な方法ではありません。(暗号化されているとはいえ、秘密鍵が通信路上を流れます)
  • 環境が整っている場合はもっと簡単な方法があります。(ssh-copy-id とか)
  • コマンド例はCentOSを想定しています。

有効化手順

鍵ペアの生成(サーバ側で実行)

これらのコマンドは、SSHでログインしたいサーバ上の、ログインしたいユーザーの権限で実行してください。

# username にはSSHでログインしたいユーザー名を指定
$ su username

$ ssh-keygen -b 2048 -C <任意のコメント>

#鍵ファイルの保存場所を指定する。デフォルト(何も打たないでEnter)でOK
Enter file in which to save the key (/home/username/.ssh/id_rsa):

#秘密鍵にかけるパスフレーズを入力。空にするのは非推奨。
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

ssh-keygen の <任意のコメント> には、鍵を区別できる適当なコメントを入力しておくと、あとで鍵がごっちゃになって区別がつかなくなるのを防止できます。

公開鍵の登録

生成された鍵ペアは、/home/<ユーザー名>/.ssh に保存されています。

続いて、公開鍵をSSHで接続したいサーバに登録します。この操作も、ログインしたいユーザーの権限で行ってください。

$ cd ~/.ssh

#公開鍵を authorized_keys に追記する
$ cat id_rsa.pub >> authorized_keys

#パーミッションの変更
$ chmod 600 authorized_keys

#登録済みの公開鍵ファイルは削除してOK
$ rm -f id_rsa.pub

秘密鍵の配送

続いて、秘密鍵をSSH接続する端末(クライアント)へコピーします。

クライアントPCのテキストエディタで、id_rsa という名前のファイルを作成し、秘密鍵ファイルの中身をコピペすれば、秘密鍵ファイルを転送しなくても同じ秘密鍵が用意できます。

#秘密鍵ファイルの中身を表示
$ cat id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAucERdYJgPxlWes5Mozn34hG4yxlapRmuRyZRFh/KoufOA+o6
dRIYhKoULjmEJkPj7QiRj0K86ofGn76Xvf18nXenLcyZDnMKgMevG2//vFWociMD
+Rh90VecNMUxZhs7B2e7CGaLX7aLQBQRIKenDyn4xvRfTc6E87Y82BBGko6OHdk8
9dotxn4hXJO2FqSDae27Y4uFyRbD7lrMHsrJUCROqVGC9V/fR5jNBhp+nEwPw1vl
gbShQpYVXLiNouIFwYFLCmhB5nqFtJ7GxSDHNBXnrFd3HAFQEl+F/eso07VLhTA5
F8Z49FRabRTEbyzescIAx+ZApMQJcwQ29b4TYwIDAQABAoIBADFHIMSVw8a5iBGo
LPiYZkRZAzcOENf/yhYh+hzubiltaV/sgXmRRWPcYuIobABivlKhlUv2HnvxbSXv
v/2tA6QanAUwY+JLbpvfXXrf6W4jIz60P1eTwb0Jiu0M6x/1VWGPiTSfT5YirSpg
qHKLR2xkbBULu0S+5tJopBeFqdMy/k5oLVrqOqFAs9w3Qt/GIkrM4PDt0FMBfI/I
MDhymlrkBi9OlwqaK1ZJ+QvtDrFmkwvWAcbwCFefTzvXmpShfIF28+q7ZiLBmUc7
46SMr3V52AvGs8wnBjPcQU/iqIABgYbs2OkSEM4lfSDaPLbnt8JiTw3aDIFoe5pA
/UZYuRECgYEA6h3v0Gcjpu0/FeeTeCKNfLKrvcyo6hryzhE+ceOLRAZOuitXF5EA
6JZn1yZQHlAQBYgToLOABV5A2ZSK59ugDzk4sHGAU29U6LSPbYEHp5X79D17enn4
/I26/BN6UwJdHznVJIZJaUjte5JV1ZHXE+Yxl3CkMkUbExOqEkK+Ps8CgYEAyx3i
PfP+gbtsnYo3lw0EtT8HoGLd/uG85TTUBpZDRz8yl/KOKPAHluNLTDDNmz925uMC
GPi0BA7cxksB/3n7iKTqfnpoK0Z4v0vJGZdB2fBc1iqV55B4BWCAiOmWUW9PBXHe
mhdZZntlSnxIaEQTha1KIAKxmoeE9fqRqWBspy0CgYBnWY3bPxyy/PqjbdZg60fw
a2N7ZxSOPBVBuMULO7rn7azlbGqHAcEX7AWtKcGmkAtyla6se3EhbYlNQ9DKJ98R
uV34LjLLIlOmYscKPTKm3YQbPuT6nUu4Gc0YqHSQnnODbGFWPV2896+2pFP18uqy
YyUzSEuD0ZPxKPYkF4iqawKBgD4MHvS1+GVBD+kANAMcoveLDZVdHluiMcYC4VIx
zNOS5q2sFulCic76GCJqNiTaukPFzPo73yHuOFsKxs14QfJ4Dnocgn3VxUUKrZ/3
qNIerv1tfOWEKGXcGOe6E4VE72rGYi3IPDMmNscOOEBBq4UGbsJgkEiYZXGO3bhU
EFzxAoGBALlzZaekbp288+rMZ/lAlnWFx6e5iT2Xwv0+T89kLKg+84lLsSYsxYXz
kAo4+nUDBkE5KaA6dX7O0jEP4ftp+YppEBVeCrbGQAxDjozYNZo3IkhGnlhJpQhF
ociPbwtOv8L7Xu8jsbQmWEYjvoAIGRX9PYqv2JmsiOes4XNqo9jS
-----END RSA PRIVATE KEY-----

ターミナルに表示された、—–BEGIN RSA PRIVATE KEY—– から —–END RSA PRIVATE KEY—– までをコピーして、クライアントで作成したファイル id_rsa にペーストすればOKです。

ここで表示された文字列が漏洩することは、秘密鍵ファイルが漏洩することと同じなので、扱いには十分注意してください。

秘密鍵の配送が済んだら、サーバ側の秘密鍵は不要なので忘れずに削除してください。

$ rm -f id_rsa

sshd_config の設定変更

sshdの設定を変更して、公開鍵認証を有効化します。

パスワード認証が有効になっているとせっかく公開鍵認証を有効化した意味が薄れるので無効化します。

チャレンジレスポンス認証とは、単純なパスワード認証にリプレイ攻撃への耐性を追加した認証方式で、デフォルトでは有効化されていますが、これも無効化します。

この操作はrootで行ってください。

$ vi /etc/ssh/sshd_config

#公開鍵認証を有効化
PubkeyAuthentication yes

#パスワード認証を無効化
PasswordAuthentication no

#チャレンジレスポンス認証を無効化
ChallengeResponseAuthentication no

sshdを再起動して設定を反映します。

$ systemctl restart sshd

SSH接続クライアントの設定変更

最後に、お使いのSSH接続クライアントの設定を変更して、先ほど作成した秘密鍵を使用して接続するようにしてください。

設定例(Tera Term)

新しい接続から、各項目を設定してOKを押すと以下の画面が出る。

Tera Term の SSH認証ウィンドウユーザー名にはログインするユーザー名を指定。

パスフレーズには、鍵ペアの生成で指定した秘密鍵のパスフレーズを指定。

秘密鍵をクリックして秘密鍵ファイルを指定。

 

作成した鍵ペアを使って正常に接続できることを確認したら、公開鍵認証の有効化は完了です。

 

あわせて読みたい

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です