macOS 13 Venturaに更新したらssh接続できなくなった

macOS 13 Venturaに更新したらssh接続できなくなりました。

対策

”~/.ssh/config”ファイルに「HostkeyAlgorithms」と「PubkeyAcceptedAlgorithms」を設定を追加することで接続できるようになりました。

Host my_host
  User yamamoto
  HostName 192.168.1.1
  IdentityFile ~/.ssh/id_rsa_my_host
  HostkeyAlgorithms +ssh-rsa
  PubkeyAcceptedAlgorithms +ssh-rsa

原因

macOS 13 VenturaではOpenSSHがOpenSSH 9.0にアップグレードされました
OpenSSH 9.0ではSHA-1ハッシュアルゴリズムを使用したRSA署名(ssh-rsa)が廃止されています。

“~/.ssh/config”に上記の設定を追加することで、強制的にssh-rsaを使用します。

参考にしたページ

App Store Connectで輸出コンプライアンスの設定を省略するには

App Store Connectで輸出コンプライアンスの設定を省略するには

App Store Connectにアップロードしたアプリに「コンプライアンスがありません」と表示される。
毎回、「管理」を押して「輸出コンプライアンス情報」を入力しなければならない。

輸出コンプライアンスの設定を省略するには、info.plistを編集する。

Property List Editorで編集する場合は、「App Uses Non-Exempt Encrption」を追加し、Valueを「NO」にする。

ソースコードを編集する場合は以下のコードを追加する。

<key>ITSAppUsesNonExemptEncryption</key>
<false/>

複数のXcodeがインストールされている環境でFlutterを使う

アプリケーションフォルダーには以下の2つのバージョンのXcodeが入っている

  • /Applications/Xcode 13.4.app
  • /Applications/Xcode 14.1.app

「flutter doctor」を実行するとXcodeが見つかっていない。

% flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.3.7, on macOS 12.6 21G115 darwin-arm, locale ja-JP)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[!] Xcode - develop for iOS and macOS
    ✗ Xcode installation is incomplete; a full installation is necessary for iOS development.

今回、FlutterはXcode 14.1.appを使用するように設定する。

以下のコマンドを実行する。
xcode-selectの引数にXcode 14.1.appのパスを指定する。

sudo xcode-select --switch "/Applications/Xcode 14.1.app/Contents/Developer"
sudo xcodebuild -runFirstLaunch

「flutter doctor」を実行すると成功した。

% flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Xcode - develop for iOS and macOS (Xcode 14.1)

PHP7.1からMySQL8に接続するための設定

PHP7.1からMySQL8に接続するための設定

ポイントは2点。
(1)パスワードの認証方式の変更
(2)文字コードの設定

(1)パスワードの認証方式の変更

以下のようなエラーが出たときの対策。

SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client

PHP 7.1.16またはPHP 7.2.4よりも前のバージョンのPHPでは、MySQL8のデフォルトのパスワード認証方式caching_sha2_passwordに対応していない。
(参考: PHP: 要件 – Manual

パスワード認証方式をmysql_native_passwordに変更する必要がある。

(1-1) 既存のユーザーのパスワード認証方式を変更する

既存のユーザーのパスワード認証方式を確認する。

SELECT user, host, plugin FROM mysql.user;

plugin列が「caching_sha2_password」なら新しい認証方式になっている。

既存のユーザーのパスワード認証方式を変更する。

ALTER USER 'user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'XXXX';

(1-2) 新規のユーザーのパスワード認証方式を変更する

新規に作成するユーザーのパスワード認証方式を変更ため、my.cnfに以下の行を追加する。

[mysqld]
default_authentication_plugin=mysql_native_password

(2)文字コードの設定

以下のようなエラーが出たときの対策。

SQLSTATE[HY000] [2054] Server sent charset unknown to the client.

my.cnfに以下の行を追加する。

[mysqld]
collation-server=utf8mb4_unicode_ci
character-set-server=utf8mb4

最後にMySQLを再起動する。

$ sudo systemctl restart mysqld