目的
授業で,必要だから初回授業までに公開鍵をメールで先生に送ってねって言われました.どんなことをするか分からないし,とりあえずwindowsとUbuntuの両方用意しておけば完璧だよねってことでこの記事はそのやり方を書いていきます.
この記事でやること
- Virtualbox上のUbuntuで,秘密鍵公開鍵のペアを作成する
- 秘密鍵をWindowsと共有
- 秘密鍵をPuTTY用に変換
- PuTTYの設定を行う
- うまくいってるか確認
- Ubuntuの公開鍵を他のUbuntuに転送する
- 公開鍵による認証ができる確認
- 公開鍵をメールで先生に送付
環境
アプリケーション | バージョン |
---|---|
Windowsエディション | Window 10 Pro |
Windows バージョン | 1909 |
VirtualBox | 6.1.6 |
Ubuntu | 18.04.4 LTS |
前提
- VirtualBoxがインストール済み
- 仮想マシンとしてUbuntuが入ってる(2つ)
- ホストはWindowsでPuTTYがインストールされている。
VirtualBox上のUbuntuで,秘密鍵公開鍵のペアを作る.
参考にしたURL
GitLab: Generating a new SSH key pair,
https://gitlab.com/help/ssh/README#generating-a-new-ssh-key-pair
(閲覧日:2020-05-14).
今回は,楕円暗号のed25519を使用します.また,内輪で使うためパスフレーズは設定しません.Ubuntuにログインして「端末」を開いてください。
ユーザ名のところを隠すため,/home/ユーザ名
を/path/to
って書いてます. あと,$から始まる行がコマンド入力です.
$ ssh-keygen -t ed25519 -C "software development"
このコマンドを打つと,下のが出る.
Generating public/private ed25519 key pair.
Enter file in which to save the key (/path/to/.ssh/id_ed25519):
今回は保存先を変えないのでEnterキーのみ押す.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
あんまりよくないかもしれないけど,今回はVirtualBoxのみで使うし,まあいいやろってことでパスフレーズなしにしました。何も入力せずEnterを押しました。
Your identification has been saved in /path/to/.ssh/id_ed25519.
Your public key has been saved in /path/to/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:(文字列) software development
The key's randomart image is:
(四角い何か)
これで秘密鍵公開鍵のペアができました。
ファイルの存在を確認します。
下の赤枠で示した部分をクリック
これでホームの.ssh
のディレクトリを開くとこんな感じです。
man ssh-keygen
をすると、
manの結果を見る
manコマンドの結果から.pubファイルが公開鍵、拡張子のないファイルが秘密鍵であることがわかります。
注意事項は、秘密鍵を持っていることが本人であることの証明なので秘密鍵はだれにも見せてはいけないんです。だれにもあげてはいけません。公開鍵を相手に渡します。今回はWindowsでも本人であることを証明するので、Windowsに秘密鍵をわたし、先生に公開鍵を送ります。
秘密鍵をWindowsと共有
USBに作成した秘密鍵を入れてWindowsに保存しました。
ここからは、以下のWebサイトを参考に作業を進めました。
https://bacchi.me/linux/putty-key/
秘密鍵をPuTTY用に変換
puttygen.exeを起動します。
Loadを選択
秘密鍵のファイルを読み込ませると下のようなWindowが出てくるのでOKをクリック
Save private keyをクリック
またもやパスフレーズを設定しないつもりなので「はい」をクリック
授業用なのでなめてかかってます。乗っ取られても被害が出るほど、設定甘くないでしょ。ネットワークばっかりやってる先生だし。一応McAfeeも入ってるし、マルウェアとかになんかやられて、怒られたらそんときですよ。
このあとの画面でid_ed25519.ppk
という名前でPuTTY専用の秘密鍵の形式で保存しました。
うまく行っているか確認
面倒だったのでUSBメモリで鍵を別のUbuntuの仮想マシンに入れました。
このUbuntuマシンに公開鍵をインストールして設定します。
参考にしたURLは以下のとおりです。
https://qiita.com/jinnai73/items/f1822f2e4d567847e215
まずは、sshが入っていなかったのでインストール
$ sudo apt install ssh
これであの参考URLにのっていた/etc/ssh/sshd_configってファイルができます。
最初なかったから「あれ?」ってなりました。
続いて参考URLにのっていた、sshdの設定を確認します
$ grep Pubkey /etc/ssh/sshd_config
#PubkeyAuthentication yes
$ grep KeysFile /etc/ssh/sshd_config
#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
両方コメントアウトされていました。
sshd_configファイルの最初に以下のことが書いてあります
# $OpenBSD: sshd_config,v 1.101 2017/03/14 07:19:07 djm Exp $
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.
じゃあman sshd_config
にdefaultのことがかいてあって、コメントアウトされていればdefaultが適用されるってことですね. やってみます。
$ man sshd_config
(省略)
AuthorizedKeysFile
Specifies the file that contains the public keys used for user
authentication. The format is described in the AUTHORIZED_KEYS
FILE FORMAT section of sshd(8). Arguments to AuthorizedKeysFile
accept the tokens described in the TOKENS section. After expan‐
sion, AuthorizedKeysFile is taken to be an absolute path or one
relative to the user's home directory. Multiple files may be
listed, separated by whitespace. Alternately this option may be
set to none to skip checking for user keys in files. The default
is ".ssh/authorized_keys .ssh/authorized_keys2".
(省略)
PubkeyAuthentication
Specifies whether public key authentication is allowed. The
default is yes.
(省略)
ということでdefaultは、公開鍵認証は利用できる。必要な公開鍵はホームディレクトリの.ssh/authorized_keysという名前か.ssh/authorized_keys2という名前で保存しておけばこのsshd_configファイルは書き換えなくて良さそうです。
初めての人は.pubだったあの鍵ファイルをauthorized_keys
という名前に変えておけば設定が完了です。
2つ目の公開鍵を設定する人は、man sshd
を見る限り、すでにある.ssh/authorized_keysの2行目に新しい公開鍵を書き込めば良さそう。
新しく登録する公開鍵がid_ed25519.pubだった場合、
cat id_ed25519.pub >> authorized_keys
という感じかなって思ってます。(やってないです)
PuTTYからSSHでログイン
ここからは以下のURLを参考にやります。
https://webkaru.net/linux/putty-ssh-login-public-key/
ホストオンリーでつなげました。赤枠にIPアドレスを書き込み
左のCategoryのSSHの左の+をクリックし、Authをクリック(+ではない)
そのあと、Browse...をクリックして、さっき作ったid_ed25519.ppkを選択し、Openをクリック
まあ、証明書なんてめちゃくちゃだよね。セキュリティアラートがでます。「はい」をクリック
これでユーザ名を入力すればパスワードなしでログインできます。
本当はパスフレーズがいるかもしれないんですけど、設定してないから関係ない。
動作確認完了!
Ubuntuからログイン
以下では、このuRLを参考にすすめました。
https://qiita.com/kazokmr/items/754169cfa996b24fcbf5
最初に秘密鍵を作ったUbuntuから、公開鍵を入れたUbuntuへsshでログインしてみます.
ゲスト同士なのでNATネットワークでつなぎました。
$ ssh -i .ssh/id_ed25519 ユーザ名@10.0.2.4
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017
The authenticity of host '10.0.2.4 (10.0.2.4)' can't be established.
ECDSA key fingerprint is SHA256:6J6b0uN1UxZ73lecICtlximohs3iFZ8bcLTtbPUMAbY.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.2.4' (ECDSA) to the list of known hosts.
Authenticated to 10.0.2.4 ([10.0.2.4]:22).
Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 5.3.0-51-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
* Canonical Livepatch is available for installation.
- Reduce system reboots and improve kernel security. Activate at:
https://ubuntu.com/livepatch
26 個のパッケージがアップデート可能です。
0 個のアップデートはセキュリティアップデートです。
Your Hardware Enablement Stack (HWE) is supported until April 2023.
Last login: Fri May 15 17:08:10 2020 from 10.0.2.4
$
鍵の場所は.sshである場合のみです。違う場合は.ssh/id_ed25519を変えてください。
というわけでsshログインできました.
まとめ
Ubuntuで公開鍵秘密鍵のペアを作って,Windows上のputtyと秘密鍵を共有しました。
また、別のUbuntuに公開鍵認証を設定して、Ubuntuとputtyの両方からログインできることを確認しました。
ハマった点
まるですべてがうまく行ったかのように書いてありますが、嘘です。ハマりました。VirtualboxのNatネットワーク初めて使ったからしょうがない
ハマったのは以下の部分です。(解決済み)
- Ubuntu同士の通信
- Virtualboxの設定をミスったのでメモリを食い尽くしてホストOSのWindowsが落ちました。
- NATネットワークでUbuntu同士を通信させようとした際、別にNATのNICも入れてたので、ルーティングが狂いました。
route -v
でわかりました。だけど一晩を費やしました。