macOSからVirtualBoxのCentOSに公開鍵認証でssh接続できるようにする
インストールや、パスワード認証でssh接続できるようにするまでの手順は、下記をご覧ください。
macOS High SierraにVirtualBoxでCentOSをインストールする
環境は、macOS High Sierra バージョン 10.13.5、Virtualbox バージョン 5.2.12 r122591、CentOS-7 (1804)です。
接続するユーザーが鍵ペアー(秘密鍵ファイルと公開鍵ファイル)を作っておき、サーバー側で、接続を許可するユーザーの公開鍵を登録します。
すると、サーバーに登録された公開鍵に対応する秘密鍵をもったユーザー(PC)からのみ、接続が可能になります。
秘密鍵をもったユーザーのみに接続を制限できるので、一般的にパスワード認証より強固と言われます。
鍵のビット数については、manコマンドで-bオプションの説明を確認したところ、default is 2048 bitsとのことだったので、このままにした。
$ ssh-keygen -t rsa
対話的に、下記のように、いろいろ聞かれます。
Enter file in which to save the key (/Users/user/.ssh/id_rsa):は、鍵ペアーが作成される先のディレクトリーを指定する部分ですが、()内がデフォルトなので、そのままEnterしました。
Enter passphrase (empty for no passphrase):は、パスフレーズ(秘密鍵を使うためのパスワードのようなもの)を指定する部分です。
適当に設定して、Enterします。空はやめたほうがいいです。
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/user/.ssh/id_rsa.
Your public key has been saved in /Users/user/.ssh/id_rsa.pub.
The key fingerprint is:
...
上の例では、/Users/user/.ssh/直下に、秘密鍵(id_rsa)と公開鍵(id_rsa.pub)が作成されました。
lsコマンドで確認しました。
$ ls ~/.ssh/
id_rsa id_rsa.pub known_hosts
以下、CentOS側の作業。
CentOSに公開鍵が転送されましたので、CentOSにuserでログインします。
公開鍵の登録の実態は、~/.ssh/authorized_keysというテキストファイルに、公開鍵の文字列を、公開鍵ごとに1行1行記載していくだけです。
~/.sshディレクトリーも、authorized_keysファイルもまだありませんので、作成し、適切なパーミッションを付与しました。
$ mkdir ~/.ssh
$ touch ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
公開鍵を登録します。
viで編集してもいいですが、catで追記のリダイレクトをするのが簡単です。
suコマンドでrootユーザーになって、sshdを再起動すると、設定が反映されます。
# systemctl restart sshd
これで、Macから公開鍵認証で、CentOSにsshログインできるようになったはずです。
これで、パスフレーズなしでsshログインできるようになったはずです。
$ ssh user@192.168.11.77
「パスフレーズ なし」「パスフレーズ 省略」とかで検索すると、パスフレーズを設定しない(パスフレーズ設定時に、空のままEnterする)例が出てくることがありますが、おすすめしません。
macOS High SierraにVirtualBoxでCentOSをインストールする
環境は、macOS High Sierra バージョン 10.13.5、Virtualbox バージョン 5.2.12 r122591、CentOS-7 (1804)です。
公開鍵認証とは
公開鍵認証は、ssh接続の認証方式の一つです。パスワード認証とは区別されます。接続するユーザーが鍵ペアー(秘密鍵ファイルと公開鍵ファイル)を作っておき、サーバー側で、接続を許可するユーザーの公開鍵を登録します。
すると、サーバーに登録された公開鍵に対応する秘密鍵をもったユーザー(PC)からのみ、接続が可能になります。
秘密鍵をもったユーザーのみに接続を制限できるので、一般的にパスワード認証より強固と言われます。
クライアント側で、秘密鍵と公開鍵を作成する
Mac側(sshクライアント側)で、下記のコマンドを打ち、鍵ペアーを作成します。鍵のビット数については、manコマンドで-bオプションの説明を確認したところ、default is 2048 bitsとのことだったので、このままにした。
$ ssh-keygen -t rsa
対話的に、下記のように、いろいろ聞かれます。
Enter file in which to save the key (/Users/user/.ssh/id_rsa):は、鍵ペアーが作成される先のディレクトリーを指定する部分ですが、()内がデフォルトなので、そのままEnterしました。
Enter passphrase (empty for no passphrase):は、パスフレーズ(秘密鍵を使うためのパスワードのようなもの)を指定する部分です。
適当に設定して、Enterします。空はやめたほうがいいです。
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/user/.ssh/id_rsa.
Your public key has been saved in /Users/user/.ssh/id_rsa.pub.
The key fingerprint is:
...
上の例では、/Users/user/.ssh/直下に、秘密鍵(id_rsa)と公開鍵(id_rsa.pub)が作成されました。
lsコマンドで確認しました。
$ ls ~/.ssh/
id_rsa id_rsa.pub known_hosts
秘密鍵も、公開鍵も、実態はテキストファイルですので、catやlessで中身を見ることができます。
サーバー側に公開鍵を登録する
Mac側で下記コマンドを打ち、公開鍵をVirtualBox上のサーバー(CentOS)に転送します。
192.168.11.77は、筆者の環境の、CentOSのIPアドレスです。
~/を転送先ディレクトリーに指定したので、CentOSのユーザーuserのホームディレクトリーに転送されます。
$ scp ~/.ssh/id_rsa.pub user@192.168.11.77:~/以下、CentOS側の作業。
CentOSに公開鍵が転送されましたので、CentOSにuserでログインします。
公開鍵の登録の実態は、~/.ssh/authorized_keysというテキストファイルに、公開鍵の文字列を、公開鍵ごとに1行1行記載していくだけです。
~/.sshディレクトリーも、authorized_keysファイルもまだありませんので、作成し、適切なパーミッションを付与しました。
$ touch ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
公開鍵を登録します。
viで編集してもいいですが、catで追記のリダイレクトをするのが簡単です。
$ cat id_rsa.pub >> ~/.ssh/authorized_keys
これで、公開鍵の登録が終わりました。
サーバー側に転送した公開鍵は、もう不要なので、削除しました。
$ rm id_rsa.pubこれで、公開鍵の登録が終わりました。
サーバー側に転送した公開鍵は、もう不要なので、削除しました。
パスワード認証は不要なので、公開鍵認証のみとし、パスワード認証を無効にしました。
/etc/ssh/sshd_configのPasswordAuthentication(パスワード認証するか)とPubkeyAuthentication(公開鍵認証するか)の部分の設定を、下記のように編集しました。
/etc/ssh/sshd_configのPasswordAuthentication(パスワード認証するか)とPubkeyAuthentication(公開鍵認証するか)の部分の設定を、下記のように編集しました。
PasswordAuthentication no
PubkeyAuthentication yes
suコマンドでrootユーザーになって、sshdを再起動すると、設定が反映されます。
これで、Macから公開鍵認証で、CentOSにsshログインできるようになったはずです。
パスフレーズの入力を省略する
Macから公開鍵認証でssh接続する時、パスフレーズを入力すると思います。
毎回入力するのが面倒なので、ssh-agentを使います。
ssh-agentというプログラムに秘密鍵とパスフレーズを予め登録して記憶させておくことで、パスフレーズの入力を2回目以降省略できます。
ssh-addコマンドに秘密鍵へのパスを指定することで、ssh-agentに秘密鍵を登録できます。
パスフレーズを聞かれるので、入力します。
$ ssh-add ~/.ssh/id_rsassh-agentというプログラムに秘密鍵とパスフレーズを予め登録して記憶させておくことで、パスフレーズの入力を2回目以降省略できます。
ssh-addコマンドに秘密鍵へのパスを指定することで、ssh-agentに秘密鍵を登録できます。
パスフレーズを聞かれるので、入力します。
これで、パスフレーズなしでsshログインできるようになったはずです。
「パスフレーズ なし」「パスフレーズ 省略」とかで検索すると、パスフレーズを設定しない(パスフレーズ設定時に、空のままEnterする)例が出てくることがありますが、おすすめしません。
コメント
コメントを投稿