#5 Fedora Serverに公開鍵認証でSSHログインする
先日VMWareのFusion Proを衝動買いしてしまったので、使い倒していきたい。 今後Ansibleで開発サーバーをセットアップしていくに当たり Fusion上のFedora Serverに対して公開鍵認証でSSHログインできるようにする。 Fedora Serverのセットアップ方法は割愛する。
ホストマシーンで公開鍵と秘密鍵を生成する
$ ssh-keygen -t ed25519 -C "test@example.com" Generating public/private ed25519 key pair. Enter file in which to save the key (/Users/lazy_ez/.ssh/id_ed25519): /Users/lazy_ez/.ssh/id_ed25519 already exists. Overwrite (y/n)? y Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /Users/lazy_ez/.ssh/id_ed25519 Your public key has been saved in /Users/lazy_ez/.ssh/id_ed25519.pub The key fingerprint is: SHA256:Fjp1yPEJU+UJ3iiuJWQRXdFGLH40sDntgAKrydonhWI test@example.com The key's randomart image is: +--[ED25519 256]--+ | . oo+o*Bo | | o o.O.X*. | | . + B.@+=. | | . + o = +.+. | |.E= . + S .. | |.+ . * | |. o . . | | o | | | +----[SHA256]-----+
SCPコマンドでFedora Serverに公開鍵を送る
この時パスワード認証でのSSH接続が可能である必要がある(公開鍵を移していないので)
$ scp ~/.ssh/id_ed25519.pub user@172.16.150.129:~/.ssh/ @172.16.150.129's password: id_ed25519.pub 100% 109 22.7KB/s 00:00
Fedora Server上で公開鍵の設定を行う
[lazy_ez@fedora-server ~]$ touch ~/.ssh/authorized_keys [lazy_ez@fedora-server ~]$ cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
Fedora Server上のSSHの設定でパスワード認証を不可にする
[lazy_ez@fedora-server ~]$ sudo cat /etc/ssh/sshd_config # PasswordAuthentication no # <- パスワード認証不可の部分がコメントアウトされているか yes になっている [lazy_ez@fedora-server ~]$ sudo vi /etc/ssh/sshd_config [lazy_ez@fedora-server ~]$ sudo cat /etc/ssh/sshd_config PasswordAuthentication no
SSHを再起動する
[lazy_ez@fedora-server ~]$ sudo systemctl restart sshd [lazy_ez@fedora-server ~]$ sudo systemctl status sshd ● sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor pres> Active: active (running) since Sun 2022-10-30 11:13:12 EDT; 6s ago Docs: man:sshd(8) man:sshd_config(5) Main PID: 12423 (sshd) Tasks: 1 (limit: 2288) Memory: 1.3M CPU: 14ms CGroup: /system.slice/sshd.service └─ 12423 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups" Oct 30 11:13:12 fedora systemd[1]: Starting sshd.service - OpenSSH server daemo> Oct 30 11:13:12 fedora sshd[12423]: Server listening on 0.0.0.0 port 22. Oct 30 11:13:12 fedora sshd[12423]: Server listening on :: port 22. Oct 30 11:13:12 fedora systemd[1]: Started sshd.service - OpenSSH server daemon. [eyoshida@fedora ~]$
試しにホストマシーンからSSHを試みる
鍵ファイル作成時に入力したパスフレーズの入力を求められる
$ ssh -i ~/.ssh/id_ed25519 user@172.16.150.129 Web console: https://fedora:9090/ or https://172.16.150.129:9090/ Last login: Sun Oct 30 16:56:53 2022 from 172.16.150.1 [lazy_ez@fedora-server ~]$
おまけ)Ansibleのinventoryファイルで秘密鍵のパスを指定してpingを実行する
こちらの記事を参考に、inventoryファイルの ansible_ssh_private_key_file
の項目に秘密鍵のパスを指定する
$ cat inventory --- devs: hosts: fedora_server: ansible_host: ipaddress ansible_user: lazy_ez ansible_ssh_private_key_file: "~/path/to/private_key" $ ansible-playbook -i inventory playbooks/ping.yml PLAY [fedora-server] ************************************************************************************************************************************ TASK [Gathering Facts] ********************************************************************************************************************************* ok: [fedora-server] TASK [Example from an Ansible Playbook] **************************************************************************************************************** ok: [fedora-server] PLAY RECAP ********************************************************************************************************************************************* fedora-server : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
これで完了! 今後はFedora Serverのセットアップ用のPlaybookで環境を整えていきます。