SSHで接続できない

イメージ
 Ubuntuを24.04→26.04 時間があったので、メインマシンのUpgradeを実施。 とはいえ、とはいえ、システムディスク(/)とデータディスク(/home)を分けているのでクリーンなインストールを実施。 (1) USBでUbuntu26.04を起動 (2) /home/user → /home/user_old にリネーム (3) 26.04をインストール これで、/home/user_oldにこれまでの環境が残ったまま、新規userでインストールすれば完了。もともとのuserが使用していたuser_id:1000のままなので、どちらのフォルダも見ることができる。 あとは、使用するソフトをインストールし  /home/user_old 以下から、利用する設定ファイル等をコピーして動作確認するだけ。 Dropbox MEGA などは、先にコピーしてから、フォルダ同期設定をすることで、ダウンロードなどはチェックのみで完了する。 thunderbird brave browser vscode dbeaver-ce typora obsidian LMStudio ollama あたりを移行してほぼ終了 .sshはそのままコピーして完了。 と思っていたら、何故かサーバによっては接続できない場合があることに気づいた。 $ ssh vps 何も返ってこず、接続できない。 でこれまで接続できていたのに、うまく行かない?? 詳細を確認しながら、チェックすることに。 $ ssh -vv vps debug1: OpenSSH_10.2p1 Ubuntu-2ubuntu3.5, OpenSSL 3.5.5 27 Jan 2026 debug1: Reading configuration data /home/user/.ssh/config ︙ debug2: we sent a publickey packet, wait for reply debug1: Server accepts key: /home/user/.ssh/id_rsa RSA SHA256:n5ocPbCvMV4FGFof … … … … … pBuJ/8r/kHGANY explicit agent のように、 認証完了後にシェルが起動せず、応答がない状態になっている。 具体的には ...

異なるマシンで403 forbiddenが発生する

API関連のプログラムを作成中に

RESTfulなAPIを作成して、テストしているのだけれど、ノート上では通ったテストがデスクトップ上のマシンだと通らない事象が発生…。

なぜか、403 forbiddenが返ってくる。

まずは、ブラウザでPOST/GETのテスト。
問題なく動作する(これはこれで、なぜだ…)

なので、動いているかと思い、PUT/DELETEなどのmethodもテストする。
ブラウザでは無理なので、Postmanを使っている。

ノートでは、正常にレスポンスが返ってくるのに、デスクトップだとエラー。

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
    <head>
        <title>403 Forbidden</title>
    </head>
    <body>
        <h1>Forbidden</h1>
        <p>You don't have permission to access /~yoshimura/xxxxx/api/yyyyy/12345
on this server.
            <br />
        </p>
        <hr>
        <address>Apache/2.4.29 (Ubuntu) Server at localhost Port 80</address>
    </body>
</html>
なんで〜。
念の為、ログを見る。

::1 - - [02/Feb/2019:12:17:44 +0900] "POST /~yoshimura/xxxxx/api/yyyyy/12345 HTTP/1.1" 200 198 "-" "PostmanRuntime/7.4.0"
::1 - - [02/Feb/2019:12:19:00 +0900] "PUT /~yoshimura/xxxxx/api/yyyyy/12345 HTTP/1.1" 403 539 "-" "PostmanRuntime/7.4.0"
::1 - - [02/Feb/2019:12:39:39 +0900] "GET /~yoshimura/xxxxx/api/yyyyy/12345 HTTP/1.1" 200 2150 "-" "PostmanRuntime/7.4.0"
::1 - - [02/Feb/2019:12:41:09 +0900] "DELETE /~yoshimura/xxxxx/api/yyyyy/12345 HTTP/1.1" 403 539 "-" "PostmanRuntime/7.4.0"
::1 - - [02/Feb/2019:12:41:36 +0900] "PATCH /~yoshimura/xxxxx/api/yyyyy/99999 HTTP/1.1" 403 539 "-" "PostmanRuntime/7.4.0"


パーミッションが無いって言われても、同じプログラムにアクセスしてるんでっせ…。
むむむ。POSTとGETは通るのに…。

noteでは、localhost直で叩いていたけれど、デスクトップは他のプロジェクトなどもあるので、ユーザディレクトリで動かしているからか?→ピーン! 🔔

解決!

apache上のuserで動作するように、mods-enabledにuserdirを突っ込んでいる。
( # a2enmod userdir )

この設定ファイルuserdir.confを見ると、
<Directory /home/*/public_html>
        AllowOverride FileInfo AuthConfig Limit Indexes Options
        Options MultiViews Indexes FollowSymlinks IncludesNoExec
        Require method GET POST OPTIONS
</Directory>

あった!
require method に getとpostしか許可していなかった…。
これを
Require method GET POST PUT DELETE OPTIONS
と書き換えて、apacheを再起動。
無事に、受け取るようになった…。

しょうもない設定漏れで、2時間程無駄に費やしたゎ。

ということで、wwwroot以外で動作させる場合に、userdir.confの設定にも気をつけようという備忘録です。


コメント

このブログの人気の投稿

MEGAにも弱点があった?

Ubuntu24.04 でGUIが死んだ

VirtualBoxでUSBを使う方法が分かった!