【CentOS7】SSH認証する
パスワードを使わず、SSH で認証します。
環境
サーバー側
- CentOS Linux release 7.9.2009 (Core)
クライアント側
- Windows 10 Home Version 21H1(OS ビルド 19043.1348)
- git version 2.23.0.windows.1
手順書
環境にあるとおり、クライアント側は Windows としての手順を記載する。
鍵の作成に Git Bash を使う。
鍵の作成
クライアント側(Windows)で鍵を作る。
Git Bash で下記のコマンドを実行する。
ssh-keygen -t rsa -b 4096
鍵を保管するパスを入力する。空白なら c:/Users/USERNAME/.ssh/id_rsa
に鍵が保管される。
Enter file in which to save the key (`/c/Users/USERNAME/.ssh/id_rsa`):
パスフレーズを使うなら入力する。空白でも良い。
Enter passphrase (empty for no passphrase):
パスフレーズを使う場合、同じものを入力する。
Enter same passphrase again
パスを指定していない場合は /c/Users/USERNAME/.ssh/id_rsa
に id_rsa
と id_rsa.pub
が作成される。
鍵の移動
作成された鍵のうち id_rsa.pub
をサーバーに転送する。既に SSH 認証でログインできるユーザーがいればそれを使う。もしくは、あまりよろしくないかもだけど 一時的に FTP を使うとか。
以下は、SSH ログインするユーザーでのサーバー側での作業です。
鍵ファイルを保管するディレクトリ .ssh
が存在しない場合は作っておく。
mkdir ~/.ssh
クライアント側で作成した鍵ファイル id_rsa.pub
を .ssh
の中に転送する。
転送後、下記のコマンドを実行する。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys
rm ~/.ssh/id_rsa.pub
id_rsa.pub
を authorized_keys
に連結(存在しない場合はファイルが新規作成される)し、現在のユーザー以外がアクセスできないよう権限設定する。
連結後、転送した鍵ファイルを削除する。
SSH サーバーの起動
CentOS 7 では、標準でイントールされているはずなのでここは読み飛ばしても大丈夫です。
何らかの理由で SSH を再インストールする場合は下記のコマンドを実行する。
sudo yum install openssh-server
SSH サーバーの設定をいじる場合は /etc/ssh/sshd_config
を編集する。
編集後は下記のコマンドを実行して、SSH サービスを再起動しておく。
systemctl restart sshd.service
SSH 認証でログインしてみる
クライアント側の cmd で下記のコマンドを実行して SSH 認証でログインできるか確認する。
ssh -i ~/.ssh/id_rsa USERNAME@HOSTNAME