ども、最近めっきりターミナルを使う機会が無くなったバンブーです。そんなバンブーですが、最近Linux環境が必要になり、昔のことを思い出しながらUbuntu環境の構築をする事になりました。その中で実践した各種設定などを紹介したいと思います。
今回はUbuntuにSSHを導入して、セキュアな接続環境を構築する手順について説明します。
今回の目的
今回、2020年5月現在で、最新のディストリビューションであるUbuntu 20.04 LTSに外部(macOS)からSSH接続ができるようにします。SSHを実現するにあたって、以下の設定を行なっていきます。
- Ubuntuにopenssh-serverをインストール
(マシン名:ubuntu3 アカウント名:bamboo) - SSHのポート設定
- rootログインの禁止
- 鍵認証のための鍵作成
- パスワードログインの禁止
今回Ubuntu環境を構築するのにVMware Fusionを使いました。実機で設定するのと変わりがないと思いますが、念頭においてください。
SSH Serverの導入(インストール)
上記でも記載しましたが、macOSからUbuntu3に対してssh接続を行います。よってUbuntu3にSSH Serverが必要になってきます。
今回使用するUbuntu 20.04 LTSは、初期状態ではSSH Serverが導入されていませんので、SSH Serverとして openssh-server というものをインストールしていきます。

Ubuntu3にアカウント「bamboo」でログインし、以下のコマンドを実行する事で、openssh-serverをインストールします。
sudo apt-get install openssh-server
上記コマンドを実行するとbambooのパスワードが聞かれますので、入力します。
これでインストールは完了です。この状態でもssh接続が可能です。ですが、この状態では非常にセキュリティが低い状態です。
ポートの設定を行う
インストールのみ行なったSSH Serverは、ポートが22になっています。これは皆が知っている事なので、独自のポート番号を割り当てて、セキュリティを高めたいと思います。
ポートの設定は「/etc/ssh/sshd_config」を編集する事で実現します。Ubuntu3で以下のコマンドを入力し編集を行いましょう。
sudo vi /etc/ssh/sshd_config

「/etc/ssh/sshd_config」を開くと、「#Port 22」と書かれた箇所がありますので、ここの「#」を削除し、ポート番号「22」を変更して、独自のポート番号にします。
ただ、ポート番号はなんでも好きなものが使えるわけではなく、例えば1-1023番はウェルノンポートと言って、主要なプロトコルで使われています。また、1024~49151番は登録ポートと呼ばれ、他アプリケーションで使われている可能性があります。
よって、これらのポートを避けてポート番号を決める事になります。つまり49152-65535の間でポート番号を割り当てましょう。
rootログインを禁止する
rootは全ての権限を持つ危険なアカウトですので、これを禁止します。これも上記で編集した「/etc/ssh/sshd_config」を使います。上記同様当該ファイルを開きます。そして「PermitRootLogin」項目がありますので、ここを編集します。
探し方ですが、viで「/Root」とすれば見つかるはずです。ここは初期状態では、以下のようになっていると思います。
#PermitRootLogin prohibit-password
ここのコメントアウト「#」を削除し、「prohibit-password」を「no」と書き換えます。

以上で「root」によるログインを禁止する事ができました。
鍵認証(ECDSA鍵:521ビット)の設定を行う。
鍵認証の設定は、ちょっと面倒です。ですが、セキュリティを保つための最低限の設定だと思って、是非設定をお願いいたします。
まず作業の概略ですが、今回はmacOS側からUbuntu3にssh接続します。この場合、鍵認証の作成はmacOS側での作業となります。Ubuntu3ではありませんのでお気をつけください。そして作成された公開鍵をUbuntu3に配置します。
macOSのターミナルを開き、次のコマンドを実行します。
ssh-keygen -t ecdsa -b 521
鍵を保存するディレクトリとファイル名を入力する画面が表示されます。
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/bamboo/.ssh/id_ecdsa):
ここでは鍵を保存するディレクトリとファイル名を入力するのですが、表示されている「/home/bamboo/.ssh/id_ecdsa」で問題なければ、何も入力せずEnterを押してください。すると秘密鍵のパスフレーズを入力する画面が表示されます。パスフレーズとは簡単にいうとパスワードのようなものです。
Enter passphrase (empty for no passphrase):
パスフレーズを入力すると、再確認のため、もう一度同じパスフレーズを入力します。Enterを押すと、めでたく二つのファイル(公開鍵と秘密鍵)が作成されます。ディレクトリの中身を見てみましょう。

コマンドで以下を入力します。
cd ~/.ssh
ls -al
ここで表示される「id_ecdsa」が秘密鍵で、「id_ecdsa.pub」が公開鍵です。
公開鍵「id_ecdsa.pub」は秘密鍵から再作成が可能で、誰かに見せるために作成されたものですので、気軽に削除やコピーをして構いません。この「id_ecdsa.pub」をUbuntu3のbambooアカウントのホームディレクトリに配置してあげます。macOS側で、以下のコマンドを入力します。
scp -P 23698 ~/.ssh/id_ecdsa.pub bamboo@10.0.1.3:~/id_ecdsa_bamboo.pub
上記コマンドの「23698」は上記で設定してSSHのポート番号です。また、コピー先ではファイル名を変更して、「id_ecdsa_bamboo.pub」としています。
次にUbuntu3のbambooアカウントでの作業となります。ターミナルを開きます。
bambooアカウントのホームディレクトリに「.ssh」ディレクトリがない場合、作成します。(多分、作られてると思いますが、念のため)
mkdir .ssh
chmod 700 .ssh
ディレクトリが作成されたら以下のコマンドを実行します。
cat id_ecdsa_bamboo.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
上記2行のコマンドは、一番最初に公開鍵を登録するときに行います。2回目以降の公開鍵の登録では、1行目のコマンドのみで作業は完了します。
さぁ、あともう一息です。頑張りましょう。
パスワードによるログインを禁止する
これまでの設定で、公開鍵、秘密鍵によるSSH環境は整いました。しかし、最後に一つ設定しておかなければならない項目があります。
それはパスワードによるログインを禁止する事です。現状では、公開鍵を持っていなくても、bambooのパスワードを知っていればログインできてしまいます。
ここで再び、「/etc/ssh/sshd_config」を編集する事になります。Ubuntu3のアカウント「bamboo」でログインし、「/etc/ssh/sshd_config」をviで開きます。
ここで「PasswordAuthentication no」を追加したいのですが、おそらく初期状態では当該項目は記載されていないと思いますので、追記をしたいと思います。

うまく追記できたでしょうか?さぁ、設定は以上になります。最後に設定を反映させるために、Ubuntu3側で以下のコマンドを実行します。
sudo service sshd restart
おめでとうございます!これで全て完了です。
実際に公開鍵と秘密鍵のパスフレーズを使って接続してみる
さて、実際にmacOSからUbuntu3(のアカウント「bamboo」)に接続してみましょう。
macOS側のターミナルを開き、以下のコマンドを実行します。
ssh bamboo@10.0.1.3 -p 23698
上記を入力すると、秘密鍵で設定したパスフレーズを聞いてきますので、入力します。
~ $ ssh bamboo@10.0.1.3 -p 23698
Enter passphrase for key '/Users/tsuyoshitakenaka/.ssh/id_ecdsa':
ちゃんとログインできましたか?おめでとうございます。これで安心してUbunt3に接続する事ができるようになりました。