MacからSSHでUbuntuにリモート接続し、操作操作する方法について紹介します。
SSH接続とは
SSHとは、公開鍵暗号や認証の技術を利用して、安全にリモートコンピュータと通信するためのプロトコルです。
クライアントとリモートホスト側で以下のように事前準備と接続時のやり取りが行われます。
- 事前準備
- ①ユーザーがクライアント端末で鍵ペア(公開鍵と秘密鍵)を作成
- ②ユーザーが作成した公開鍵をリモートホストの「~/.ssh/authorized_keys」に登録
- SSH接続時
- ①クライアント端末から接続先サーバーに「ユーザーの公開鍵」を利用できるか問合せ
- ②リモートホストから「利用できる」と回答があれば、クライアントは「ユーザーの秘密鍵」で署名を作成
- ③クライアントはデータと署名を接続先サーバーに送信
- ④リモートホストは、受信した「署名」と登録されている「ユーザーの公開鍵」を検証し、問題なければ接続を許可
リモートホスト・・・Ubuntu(遠隔操作される側)
クライアント端末・・・Mac(Ubuntuを遠隔操作する側のPC)
参考
SSH接続の基礎知識を習得したい方は以下の記事もご参考ください。
SSHサーバーのインストール
リモートホスト(Ubuntu)側にopenssh-serverパッケージをインストールします。
$ sudo apt update $ sudo apt install openssh-server
インストールが完了すると、起動状態になります。openssh-serverの状態を確認します。
$ sudo systemctl status ssh
SSH接続テスト
リモートホスト側でSSHサーバーが起動状態であれば、SSH接続できます。
クライアント端末(Mac)側のターミナルで以下のコマンドを実行します。
(リモートホスト側のIPアドレスは、リモートホスト側で「ip a」コマンドを実行して確認できます)
$ ssh [リモートホスト側のユーザー名]@[リモートホスト側のIPアドレス]
パスワード認証でSSH接続できれば成功です。
【実行例】
$ ssh pi@192.168.1.3 The authenticity of host '192.168.11.44 (192.168.1.3)' can't be established. ED25519 key fingerprint is SHA256:XXXXXXXXXXXX/XXXXXXXXXXXX. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes ← yesと入力してEnterキー Warning: Permanently added '192.168.1.3' (ED25519) to the list of known hosts. user1@192.168.1.3's password: ← ラズベリーパイのログインパスワードを入力してEnterキー Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 6.5.0-14-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. user1@ubuntu:~ $ ← ラズベリーパイを操作できるようになる
鍵ペアの作成と登録
クライアント側のPCで鍵ペア(公開鍵・秘密鍵)を作成し、登録します。
クライアント側がMacの場合、Macのターミナルでssh-keygenコマンドを実行し、鍵ペアを作成します。
$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/Users/XXXXXXXX/.ssh/id_rsa): ← 何も入力せずにEnterキー Enter passphrase (empty for no passphrase): ← 設定するパスワードを入力してEnterキー Enter same passphrase again: ← 設定したパスワードを再度入力してEnterキー Your identification has been saved in /Users/XXXXXXXX/.ssh/id_rsa Your public key has been saved in /Users/XXXXXXXX/.ssh/id_rsa.pub The key fingerprint is: SHA256:XXXXXXX The key's randomart image is: +---[RSA 3072]----+ | | | | | . | | . . . | | S +o . . | | o +ooB *.E| | ++o*=B O+| | =oo*+o*.B| | ++oo+*+.=*| +----[SHA256]-----+
「/Users/[ユーザー名]/.ssh」以下に鍵ペア(公開鍵・秘密鍵)が作成されます。
公開鍵・・・id_rsa.pub
秘密鍵・・・id_rsa
Macのターミナルで「ssh-copy-id [リモートホスト側のユーザー名]@[リモートホスト側のIPアドレス]」を実行し、公開鍵(id_rsa.pub)をSSH接続でリモートホスト側に送信して登録します。
(リモートホスト側の~/.sshディレクトリ内のauthorized_keysに登録されます)
$ ssh-copy-id pi@192.168.1.3 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/XXXXXX/.ssh/id_rsa.pub" /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys user1@192.168.1.3's password: ← ラズベリーパイのログインパスワードを入力してEnterキー Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'user1@192.168.1.3'" and check to make sure that only the key(s) you wanted were added.
上記実行例のようなメッセージが表示されたら、公開鍵が無事にリモートホスト側に登録されました。
SSH接続を終了する場合は「exit」を実行します。
$ exit
リモートホスト側でSSH接続の設定変更
次にリモートホスト側でSSH接続の設定を変更します。
SSH接続の設定は「/etc/ssh/sshd_config」ファイルを編集して行います。
「sudo geany /etc/ssh/sshd_config」など管理者権限でファイルを開いて以下のように編集します。
【変更箇所】
(略) # Port 22 Port 28987 ← 追加(ポート番号をデフォルトの22番から変更する。0番ポートから65535番までから選ぶ) (略) #PermitRootLogin prohibit-password PermitRootLogin no ← 追加(rootログインを無効化) (略) #PasswordAuthentication yes PasswordAuthentication no ← 追加(パスワード認証を無効化)
MacからUbuntuにSSH接続
Mac側のターミナルで「ssh -i ~/.ssh/id_rsa -p ポート番号 [リモートホスト側のユーザー名]@[リモートホスト側のIPアドレス]」を実行すれば、リモートホスト(Ubuntu)へログインできます。
ssh -i ~/.ssh/id_rsa -p ポート番号 user1@192.168.1.3 Enter passphrase for key '/Users/XXXXXXXXXX/.ssh/id_rsa': ← 設定した秘密鍵のパスワードを入力してEnterキー Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 6.5.0-14-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage Enable ESM Apps to receive additional future security updates. See https://ubuntu.com/esm or run: sudo pro status Last login: Sun Jan 21 09:50:31 2024 from 192.168.11.16 sv1@sv1:~$ exit
【補足】SSHサーバーの起動・停止
SSHサーバーをインストールした後はWebサーバーが起動状態です。
SSHサーバーの停止、起動、自動起動の設定を行いたい場合は、以下のコマンドを実行します。
SSHサーバーの停止
$ sudo systemctl stop ssh
SSHサーバーの起動
$ sudo systemctl start ssh
SSHサーバーの再起動
$ sudo systemctl restart ssh
設定のリロード
$ sudo systemctl reload ssh
自動起動の有効化
$ sudo systemctl enable ssh
自動起動の無効化
$ sudo systemctl disable ssh
コメント