Ubuntu 18.04 LTS DesktopにSSHサーバ(OpenSSH)をインストールする!

Ubuntu 18.04 LTS DesktopにSSHサーバをインストールして、他のマシンからターミナル接続やファイル転送を可能にします。Ubuntu 18.04 LTS Desktopをクライアントとして使用する場合には通常必要ありませんが、サーバとして使用する場合には、リモートからの操作を行うために必要となることがあります。

使用した環境

  • Ubuntu 18.04 LTS Desktop (18.04.2)

SSHサーバ(OpenSSH)のインストール

UbuntuのリポジトリからSSHサーバをインストールします。

$ sudo apt install openssh-server

以下のコマンドでSSHサーバが起動していることを確認します。※サービスへの登録も完了しています。

$ sudo systemctl status ssh
● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enab
   Active: active (running) since Tue 2019-10-15 22:52:04 JST; 14min ago
...

SSHによるリモートからのコマンド実行

SSHでログインできるようになったので、リモートからコマンドをパスワード無しで実行できるようにします。

鍵認証の設定

操作する側のマシンで鍵を生成します。

$ ssh-keygen -t ed25519

公開鍵を操作される側のマシン(server01)に転送します。

scp ./id_ed25519.pub  server01:/tmp

操作される側のマシンで、公開鍵を「authorized_keys」に登録します。以下、user0001でログインする場合の設定になります。

cat /tmp/id_ed25519.pub  >> /home/user0001/.ssh/authorized_keys

SSH経由でのsudoコマンド使用のための設定

リモートからパスワード無しでsudoコマンドが使用可能となるように、sudoの設定を行います。以下のように、user0001の設定を追加します。

$ sudo visudo
...
user0001   ALL=(ALL:ALL) NOPASSWD: ALL

リモートからのファイルの置き換え

リモートからファイルを置き換える場合はscpコマンド便利ですが、管理者権限を必要とするようなファイルを置き換えることができません。その場合は、以下のようにscpした後、sshでコピーします。

$ scp -l user0001 /etc/hosts server01:/tmp
$ ssh -l user0001 server01 ls -l /tmp/hosts
$ ssh -l user0001 server01 sudo cp /tmp/hosts /etc/hosts
$ ssh -l user0001 server01 ls -l /etc/hosts

おわりに

SSHサーバ(OpenSSH)をインストールし、リモートからターミナル接続可能にしました。自由にリモートからコマンド実行できる反面、セキュリティは弱くなります。SSH接続のセキュリティ強化については、次の記事を参考にしてください。