$ 【SSH】
MacBook Air から Lubuntu PCに
SSH 接続できる状態を作った

Lubuntu 側をサーバ、MacBook Air 側をクライアント とした構成です。

やることは次の4点です。

  1. Lubuntu に SSH サーバを入れる
  2. Lubuntu 側で SSH を有効化・起動
  3. Lubuntu の IP アドレスを確認
  4. MacBook Air から SSH 接続する

関連記事

1. SSHサーバーとは

AIエージェント用のリモートPCを使うには、「SSHサーバー」として使うことになります。
SSHは、かんたんに言えば「リモートでログインできる仕組み」。

SSHサーバーとは MacBook Air SSHクライアント 接続する側 SSH接続 Lubuntu PC SSHサーバー 受け付ける側 SSHサーバーの役割 ✓ 外部からの接続要求を待ち受け ✓ 認証確認(鍵・パスワード)

SSHは「Secure Shell」の略です。
ネットワーク越しに、別のコンピュータを安全に操作するための仕組みです。

「SSHサーバー」とは、外部からのSSH接続を受け付ける側のプログラムです。
接続要求を待ち受け、相手が誰かを確認し、許可された場合だけ操作を受け付けます。
今回の構成では、Lubuntu側がSSHサーバーになります。

  • MacBook Air は操作端末
  • Lubuntu は隔離された作業場(AI エージェントは Lubuntu 側のみ)
  • Git がファイルの安全網

「壊れてもいい箱」を一つ用意した設計です。

1.1. SSHクライアントとの関係

SSHは、必ずペアで動きます。
接続する側がSSHクライアント、
受ける側がSSHサーバーです。

MacBook Airのターミナルで実行するsshコマンドはSSHクライアントです。
一方、Lubuntuで動いているsshdというプログラムがSSHサーバーです。

Lubuntuにopenssh-serverをインストールしても、画面上の変化はほとんどありません。
しかし内部では、22番ポートで接続待ちを始めています。

パスワード認証から公開鍵認証に切り替えると、SSHサーバーの役割がより明確になりました。
SSHサーバーは、正しい鍵を持っているかどうかを確認しているわけです。

2. リモートPC構成での位置づけ

今回の構成では、SSHサーバーが唯一の操作窓口になります。
GUI操作は不要で、MacからのSSHだけが入口です。

SSH接続の設定手順 1 SSHサーバーをインストール 2 SSH自動起動を有効化 3 LubuntuのIPアドレス確認 4 MacからSSH接続 公開鍵認証に切替 1. Mac側で鍵ペア生成 ssh-keygen -t ed25519 2. 公開鍵をサーバーへ送信 ssh-copy-id 3. パスワード認証を無効化 PasswordAuthentication no

壊れてもいい箱に、最小限の入口だけを用意する。
その中心にあるのがSSHサーバーです。

2.1. Lubuntu に SSH サーバをインストールする

Lubuntu を起動し、ターミナルを開きます。

sudo apt update
sudo apt install openssh-server

これで SSH サーバ(sshd) が入ります1

確認します。

systemctl status ssh

active (running) と出ていれば正常です。
再起動後も SSH が有効にするには、起動時に SSH が立ち上がるようにします。

sudo systemctl enable ssh

2.2. Lubuntu の IP アドレスを確認する

Mac から接続するために、Lubuntu の IP が必要です。

ip a
#=> 例 inet 192.168.1.23/24Code language: PHP (php)

この 192.168.1.23 が接続先になります。
自宅LAN内であれば、これで十分です2

2.3. MacBook Air から SSH 接続(パスワード)

Mac 側でターミナルを開きます。

ssh ユーザー名@192.168.1.23
Code language: CSS (css)

初回は指紋確認が出ますが、yes で問題ありません。
Lubuntu のログインパスワードを入力して接続できれば成功です。

ここまでで 最低限の SSH 接続は完成 です。

3. 公開鍵認証に切り替える

AI エージェント用途では、パスワード認証は使わない方が安全 です。

Mac 側で実行します3

ssh-keygen -t ed25519

全部 Enter で問題ありません4

ssh-copy-id user@192.168.1.23
Code language: CSS (css)

これでSSH接続先のLubuntu に公開鍵が送信されます5

パスワードなしで入れれば成功です。

3.1. パスワード認証を無効化する(重要)

パスワード認証は、不正アクセスの攻撃にさらされることになるので、無効化しておいた方が安心です。
Lubuntu 側で SSH 設定(/etc/ssh/sshd_config)を編集します。

次を探して修正します。

PasswordAuthentication no
PermitRootLogin no

保存後、SSH 再起動。

sudo systemctl restart ssh

これで
・鍵を持っている Mac だけが接続可能6
・root ログイン不可7
になります。

4. セキュリティ的に最低限やっておくこと(ufw)

AI エージェントでの運用なので、ufwをインストールして、 SSH以外の通信を遮断しておきます。

セキュリティ設定(必須) 無効化 ✗ パスワード認証 PasswordAuthentication no ✗ rootログイン PermitRootLogin no ブルートフォース攻撃を 大幅に低減 有効化 ✓ ファイアウォール (ufw) sudo ufw allow ssh sudo ufw enable ✓ 公開鍵認証のみ 鍵を持つ端末だけ接続可 SSH以外の通信を遮断

Lubuntu 側で:

sudo apt install ufw
sudo ufw allow ssh
sudo ufw enable

これで SSH 以外の通信は遮断 されます89

4.1. VS Code のRemote-SSH で接続する

ここまでできていれば簡単です。
VS Code には、拡張機能「Remote – SSH」があります。
→ Remote-SSH: Connect to Host
→ user@192.168.1.23

以降は、ローカルで編集している感覚のまま、実体はリモートPC になります10

5. 構成と次の現実的ステップ

SSH ができたら、次はこれです。

  1. Lubuntu に Git を入れる
  2. 作業専用ユーザーを作る(AI 用)
  3. AI エージェントを そのユーザーでのみ 実行
  4. sudo 権限を完全に剥奪11
  1. sshdは「SSH daemon」の略で、バックグラウンドで常駐してSSH接続要求を待ち受けるプログラムです。OpenSSH serverパッケージに含まれています。 – SSH 鍵 – ArchWiki
  2. セキュリティをさらに強化するには、SSHのデフォルトポート(22番)を変更することも検討してください。ポート番号を変更することで、自動スキャンによる攻撃の多くを回避できます。/etc/ssh/sshd_configでPortディレクティブを変更し、ufw設定も併せて更新する必要があります。 – UbuntuでSSHとSSHに関するファイアウォールの設定をする
  3. Ed25519は楕円曲線暗号を使用した署名方式で、RSA 3072bitと同等のセキュリティを256bitという短い鍵長で実現します。2014年のOpenSSH 6.5で導入され、現在最も推奨される鍵アルゴリズムです。 – SSH 鍵 – ArchWiki
  4. セキュリティのベストプラクティスとしては、パスフレーズの設定が強く推奨されます。秘密鍵が漏洩した際の最後の防御線となり、10文字以上の複雑なパスフレーズが推奨されています。macOSではキーチェーンに保存することで、毎回の入力を省略できます。 – SSH キーのパスフレーズを使う – GitHub ドキュメント
  5. ssh-copy-idは公開鍵を自動的にサーバーの~/.ssh/authorized_keysに追加するコマンドです。手動でコピーする場合は、ファイルのパーミッション設定(.sshディレクトリ: 700、authorized_keys: 600)に注意が必要です。 – 公開鍵認証(キーペア認証)の大事なところだけざっくりと網羅した | アガルートITパートナーズ
  6. パスワード認証を無効化することで、ブルートフォース攻撃のリスクを大幅に低減できます。ただし、公開鍵認証が正しく動作することを確認してから無効化してください。誤って設定すると、SSH接続ができなくなる可能性があります。 – SSHサーバを公開鍵認証にしたい | 慶應義塾理工学情報センター(KIC)
  7. rootユーザーでの直接ログインを禁止することは、重要なセキュリティ対策です。攻撃者がrootアカウントを直接狙うことを防ぎ、一般ユーザーでログイン後にsudoで権限昇格する方式が推奨されます。 – SSH 構成を安全に保護するための重要な方法 – SSL.com
  8. ufwを有効化する前に、必ずSSH接続を許可してください。SSH許可を設定せずにufwを有効化すると、リモートから接続できなくなり、サーバーから締め出される危険性があります。さらにセキュリティを高めるには、「ufw limit ssh」でレート制限を設定し、ブルートフォース攻撃を防ぐことが推奨されます。 – Ubuntu 環境の ufw 設定まとめ | LAZY DEVELOPER
  9. ufwはデフォルトで「すべての受信を拒否、すべての送信を許可」するホワイトリスト方式です。SSH以外のサービス(Webサーバーなど)を運用する場合は、必要なポート(HTTP: 80、HTTPS: 443など)も個別に許可する必要があります。 – Ubuntuでファイアウォールを設定する基本ガイド|しばけ~ブログ
  10. VS CodeのRemote-SSH拡張機能を使用すると、ローカルで編集しているような感覚で、リモートサーバー上のファイルを直接編集できます。ターミナルもリモート環境で実行されるため、開発環境の一元管理が可能になります。 – SSH公開鍵認証の完全実践ガイド:初回接続から自動化まで、つまずきポイントを全解決 | ちょげぶろぐ
  11. 作業専用ユーザーのsudo権限を剥奪するには、visudoコマンドでsudoers設定から該当ユーザーを除外します。AIエージェントなどの自動実行環境では、必要最小限の権限のみを付与する「最小権限の原則」が重要です。 – SSHキーのメリット・デメリットを徹底解説!作成方法や注意点も詳しく紹介 – システム開発のプロが発注成功を手助けする【発注ラウンジ】