スポンサーリンク

【Ubuntu】OpenSSH Serverによる公開鍵アクセス&ポート変更設定(MacからUbuntuへSSH/SFTPアクセス)

Ubuntu 20.04へSSH/SFTPコマンドでアクセスする際、よりセキュリティを強固にするために、公開鍵の設定とSSHポート番号の変更を行ないました。その備忘録です。

この変更により、
「Ubuntuアカウントでアクセス」
していたのを、
「Ubuntuアカウントでのアクセスを抑止し、公開鍵+パスワードにて任意のSSHポートでアクセス」
できるようになります。

スポンサーリンク

前提条件

UbuntuへのOpenSSH Serverインストールは既に終わっているものとします。

UbuntuへOpenSSH Serverをインストールする方法は、
・Ubuntuインストールの途中で、「OpenSSH Serverをインストールしますか?」と聞かれるので、インストールするを選ぶ

・端末にて「sudo apt-get install openssh-server」でインストール
があります。

MacからUbuntuへ公開鍵を使用したアクセスを行えるようにします。
さらにSSHポート番号を変更することで、容易にアクセスされないようにします。

SSHってどういう仕組み?、秘密鍵や公開鍵って何?といった説明は、ここでは省きます。

説明の都合上、Macのユーザ名をmac_user、Ubuntuのユーザ名をubuntu_userとします。

Mac(クライアント側)で行うこと

まず、Mac(クライアント側)、つまりアクセスする側で秘密鍵と公開鍵を作成します。

ターミナル

$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/mac_user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): naisyo
Enter same passphrase again: naisyo
Your identification has been saved in /home/mac_user/.ssh/id_rsa.
Your public key has been saved in /home/mac_user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Kc8q271MpT7OuUujNw7Q0oFGBBwDL1AoZ3OZXg3xvVY xxx@xxx
The key’s randomart image is:
+—[RSA 4096]—-+

+—-[SHA256]—–+

RSAは暗号の種類、4096はbit数を示しています。(それぞれの説明はここでは省きます)

naisyoはパスフレーズ(パスワード)です。このパスフレーズは、Ubuntuにログインする際のパスワードとは全く別のものです。覚えやすい簡単なもので大丈夫です。ただし推測されにくいものにしましょう。

このコマンドにより、/home/mac_user/.sshディレクトリが作成され、
・id_rsa(秘密鍵)
・id_rsa.pub(公開鍵)
の2ファイルが作成されます。
秘密鍵はMacで使用し、公開鍵はUbuntu(サーバ側)で使用します。

複数の秘密鍵を作成する場合、id_rsaという名前だとどのマシン用の秘密鍵か分かりづらいので、名前変更することをお勧めします。

SFTPコマンドで、公開鍵をUbuntuへ送信します。

ターミナル

$ sftp ubuntu_user@x.x.x.x
ubuntu_user@x.x.x.x’s password: [ubuntu_userのパスワード]
sftp> put id_rsa.pub

Ubuntuのホームディレクトリに置いたものとします。

Ubuntu(サーバ側)で行うこと

次に、Ubuntu(サーバ側)、つまりアクセスされる側で公開鍵の登録を行います。
登録前に、ホームディレクトリに .sshディレクトリを作成してください(無い場合のみ)。
「ssh」でなく、「.ssh」とsshの前にドットが付くことに注意してください。

端末

$ cd
$ mkdir .ssh
$ cat id_rsa.pub >> .ssh/authorized_keys

登録は「cat id_rsa.pub >> .ssh/authorized_keys」で行います。
このとき「>>」と2つ入力するのを忘れないでください。

「>>」は追記という意味です。「>」だと既にあるauthorized_keysファイルが消され、新たに作成されることになります。
Ubuntuに複数のクライアントからアクセスする際は、authorized_keysファイルへクライアント数分のid_rsa.pub情報を書き込むことになるため、常に「>>」で追記することを意識してください。


セキュリティを高めるため、権限変更と、不要になった公開鍵を削除します。

端末

$ chmod 700 .ssh
$ chmod 600 .ssh/authorized_keys
$ rm id_rsa.pub

OpenSSHの設定変更

最後に、UbuntuにインストールされているOpenSSHの設定を変更します。

この変更を先に行ってしまうと、MacからUbuntuへ公開鍵を渡すことができなくなるので、最後に行ってください。(もし先に行ってしまった場合は、変更を元に戻してOpenSSHを再起動してください)

/etc/ssh/sshd_configを編集します。(ssh_configでないことに注意してください

ポート番号の変更

#Port 22
Port 13422

ここでは例として13422と指定しています。Macからはこのポート番号を指定してアクセスします。

パスワード認証を抑止

#PasswordAuthentication yes
PasswordAuthentication no

Ubuntuアカウントでのアクセス認証を拒否します。これにより、公開鍵を使用したアクセスのみ許容されます。

rootユーザのログインを抑止

#PermitRootLogin prohibit-password
PermitRootLogin no

rootユーザでのアクセスを拒否します。既にPasswordAuthenticationで認証を抑止しているので、念のための変更です。

OpenSSHを再起動し、設定を反映します。

端末

$ sudo service ssh restart

アクセス確認

MacからSSHとSFTPコマンドでアクセスできるか確認します。

まず、SSHアクセスの確認をします。
この時、オプション -i で秘密鍵を、-p でポート番号を指定するのを忘れないでください。
また、ssh-keygenで指定したパスフレーズを入力します。

ターミナル

$ ssh -i ~/.ssh/id_rsa -p 13422 ubuntu_user@x.x.x.x
Enter passphrase for key ‘id_rsa’: naisyo

次にSFTPアクセスの確認です。
SSHアクセス時と同じオプションを指定します。

ターミナル

$ sftp-i ~/.ssh/id_rsa -p 13422 ubuntu_user@x.x.x.x
Enter passphrase for key ‘id_rsa’: naisyo

もしアクセスできない場合は、設定の見直しや、コマンドが間違っていないか確認してください。

最後に

SSHでのアクセスは、秘密鍵や公開鍵など仕組みを考えてしまうと難しいので、なるべくこのコマンド打てば良いよ、といった感じで書いておきました。備忘録なので自分用ですが…。

また、今回の変更でSSHのポート番号を変更しましたが、ポート変更前は怪しいアクセスがてんこ盛りでしたが、変更後はほぼ無くなりました。安心感マシマシです。(Ubuntuでは/var/log/auth.logで認証時の記録を見れます)

仕事でサーバを運営している方はぜひ覚えておいて欲しいテクニックのひとつだと思います。

コメント