Ubuntu 20.04 LTS DesktopにSSHサーバをインストールして、他のマシンからターミナル接続やファイル転送を可能にします。Ubuntu 20.04 LTS Desktopをクライアントとして使用する場合には通常必要ありませんが、サーバとして使用する場合には、リモートからの操作を行うために必要となることがあります。
記事の目次
使用した環境
- Ubuntu Desktop 20.04 LTS (20.04.1)
- Ubuntu Desktop 18.04 LTS (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 Generating public/private ed25519 key pair. ...
公開鍵を操作される側のマシン(server01)に転送します。
scp .ssh/id_ed25519.pub ubuusr01@server01:/tmp
操作される側のマシンで、公開鍵を「authorized_keys」に登録します。以下、ubuusr01でログインする場合の設定になります。
cat /tmp/id_ed25519.pub >> /home/ubuusr01/.ssh/authorized_keys chmod 600 /home/ubuusr01/.ssh/authorized_keys
SSH経由でのsudoコマンド使用のための設定
リモートからパスワード無しでsudoコマンドが使用可能となるように、sudoの設定を行います。以下のように、ubuusr01の設定を追加します。
$ sudo visudo ... ubuusr01 ALL=(ALL:ALL) NOPASSWD: ALL
リモートからのファイルの置き換え
リモートからファイルを置き換える場合はscpコマンド便利ですが、管理者権限を必要とするようなファイルを置き換えることができません。その場合は、以下のようにscpした後、sshでコピーします。
$ scp -l ubuusr01 /etc/hosts server01:/tmp $ ssh -l ubuusr01 server01 ls -l /tmp/hosts $ ssh -l ubuusr01 server01 sudo cp /tmp/hosts /etc/hosts $ ssh -l ubuusr01 server01 ls -l /etc/hosts
おわりに
SSHサーバ(OpenSSH)をインストールし、リモートからターミナル接続可能にしました。自由にリモートからコマンド実行できる反面、セキュリティは弱くなります。SSH接続のセキュリティ強化については、次の記事を参考にしてください。
関連記事