SSH
ssh公開鍵認証

SSH公開鍵認証で接続するまで

目的

  1. クライアントで作成したキーペアでSSH接続する
  2. パスワード認証方式を無効にする

構築した仮想環境に公開鍵認証でSSH接続するケースが多くなってきたので、まとめておく。
SSHの基礎はココを参照すると良い。

手順

クライアントPCでキーペアを作成する

ssh-keygen -t rsa -b 2048
(暗号方式:RSA,鍵長:2048bit)

/home/[user名]/.sshディレクトリに以下の秘密鍵と公開鍵が作られる。

秘密鍵:id_rsa
公開鍵:id_rsa.pub

鍵の保管先

デフォルトだとログインユーザーの.sshディレクトリにid_rsaという名前で保存される。
鍵の名前を変えたければ、/home/[user名]/.ssh/[鍵の名前] にしてEnter

パスフレーズ

未入力だと"無し"となる。
接続する度にパスフレーズを入力するのが面倒でセキュリティー的に問題がない環境なら、"無し"にする。

公開鍵をリモートに転送する

scp /home/[user名]/.ssh/id_rsa.pub [リモートユーザー]@[リモートサーバーのホスト名] ~/.ssh
  • scpが使えなければ別の方法で転送する。
  • 転送する時点では、パスワード認証方式などで、クライアントからリモートユーザーでの接続を許可しておくこと。
  • scpコマンドの基本形は scp [from] [to]

リモートで公開鍵を登録する

ssh-copy-id ~/.ssh/id_rsa.pub

公開鍵がリモートの~/.ssh/authorized_keysに登録される。

クライアントPCから公開鍵認証でリモートにSSH接続できることを確認する

ssh -i id_rsa [リモートユーザー]@[リモートサーバーのホスト名]

-i id_rsa は秘密鍵が.sshに置いてあることが前提なので、保管先が別ならパスで指定すること

パスワード認証方式を無効にする

公開鍵認証方式で接続できることが確認できたら、パスワード認証を無効にしてセキュリティーを高める。
設定はリモートサーバーにSSH接続して行う。

/etc/ssh/sshd_configを開き以下を入力する

PasswordAuthentication no

その後、再起動すると反映される

# service ssh restart

(おまけ)ssh接続で秘密鍵や接続先リモートを省略する方法

configファイルにエイリアスを定義する

/home/[user名]/.ssh/config
Host [エイリアス1]
  HostName リモートのホスト名
  User リモートユーザー
  IdentityFile /home/[user名]/.ssh/[秘密鍵]

Host [エイリアス2]
  ...

エイリアス1に接続したい場合は以下で接続できるようになる

ssh エイリアス1

(おまけ2)rootユーザーでのssh接続を無効にする

root以外の一般ユーザーでSSH接続して設定すること

/etc/ssh/sshd_configを開き以下を入力する

PermitRootLogin yes

その後、再起動すると反映される

参考

インフラエンジニアじゃなくても押さえておきたいSSHの基礎知識
sshのパスワード認証方式を無効にする
ssh公開鍵認証設定まとめ