【CentOS】公開鍵認証方式を用いて ssh接続をする方法
暫くぶりの更新です。実のところ結構長期間ハマっていたネタがようやく昨日になって解決しましたのでここに簡単にまとめます。
出典はこちら。
www.conoha.jp
www.conoha.jp
(前提)パスワード認証と公開鍵認証
/etc/ssh/sshd_config の PasswordAuthentication と ChallengeResponseAuthentication で制御している。
パスワード認証をする場合
PasswordAuthentication yes ChallengeResponseAuthentication yes
パスワード認証を拒否して公開鍵認証をする場合
PasswordAuthentication no ChallengeResponseAuthentication no
作業をする前にコンソール接続などでここらへんの設定を「パスワード認証をする場合」の設定に変更しておく必要がある。
なお、ConoHaの場合ウェブ経由でコンソール接続が可能。
www.conoha.jp
この変更をした後、必ず以下のコマンドを実行する必要がある。
CentOS7以降は
systemctl restart sshd.service
CentOS6以前*1は
service sshd restart
(参考資料)
qiita.com
root で ssh接続する
セキュリティ的に root でのアクセスをホイホイ許可するのは一般的に非推奨。あくまでも技術的に出来るというお話として。
2. 公開鍵と秘密鍵を作成する
既に ~/.ssh/ に作成されている場合は、ヘタに作成してはならない*2。
まだ、公開鍵と秘密鍵を作成していない場合、以下のコマンドで作成する。
cd ~/.ssh # 「~/.ssh」が存在しない場合「mkdir ~/.ssh」してから「cd ~/.ssh」 ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
この後、保存場所やパスフレーズについて聞かれるが、両方とも Enter で飛ばす。一応パスフレーズに関しては使うべきというナレッジもあるが、あくまで便宜的な方法の説明なので今回は省略。
qiita.com
3. 公開鍵をアップロードし、ssh接続する
2. で作成した公開鍵を以下のコマンドでターミナルからサーバへアップロードする。
scp id_rsa.pub ユーザー名@IPアドレス:~/.ssh/authorized_keys
root の場合はこれで一発でアップロード出来るはず。もし ~/.ssh/ が無くてうまく行かない場合は、一度パスワード接続でログインしてからやればいい。
このあと以下のコマンドで、公開鍵認証を用いることでパスワード無しでの接続が出来るか確認する。
ssh ユーザー名@IPアドレス
パスワードが要求されずにアクセス出来れば成功。「(前提)パスワード認証と公開鍵認証」に基づいて、「パスワード認証を拒否して公開鍵認証をする」設定に変更する。
一般ユーザで ssh接続する
前提として、パスワード認証でアクセス出来るようにしておく。また、公開鍵&秘密鍵は「root で ssh接続する」ですでに作成済ということで省略する。
A. 公開鍵をアップロードする
基本的に新規作成したサーバの一般ユーザの場合、~/.ssh/ が存在しないことが多いので、一度ホームディレクトリにアップロードする /.ssh/ に移動してから以下のコマンドをターミナルから実行する。
scp id_rsa.pub ユーザー名@IPアドレス:~/authorized_keys
B. /.ssh ディレクトリの作成とファイルの移動
サーバにログインして ~/.ssh/ を作成する。
mkdir .ssh
chmod 700 .ssh
~/ に保存されている authorized_keys を ~/.ssh/ 配下に移動する。
mv authorized_keys .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
これで一旦
exit
でログアウトして、再度ログインを試す。これでパスワード要求無しにログイン出来れば成功。「(前提)パスワード認証と公開鍵認証」に基づいて、「パスワード認証を拒否して公開鍵認証をする」設定に変更する。
その他のナレッジについてはこちら。
yohichidate.hatenablog.com