2024年10月セキュリティ更新によるSSH接続不具合の修正手順

試した環境

本題

2024 年 10 月のセキュリティ更新プログラムを適用したところ、sshコマンドで失敗するようになりました。

> ssh remote_host
sign_and_send_pubkey: no mutual signature supported
user@xxx: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

OpenSSH のバージョンが上がったことでSHA-1ハッシュアルゴリズムを使用したRSA署名がデフォルトで無効になったことが原因のようです。

セキュリティ更新プログラム適用前

> ssh -V
OpenSSH_for_Windows_8.6p1, LibreSSL 3.4.3

セキュリティ更新プログラム適用後

> ssh -V
OpenSSH_for_Windows_9.5p1, LibreSSL 3.8.2

SHA-1ハッシュアルゴリズムを使用したRSA署名を有効にするには、~/.ssh/configの対象ホストに以下の記述を追加します。

Host remote_host
    HostkeyAlgorithms +ssh-rsa
    PubkeyAcceptedAlgorithms +ssh-rsa

参考

2024 年 10 月のセキュリティ更新プログラム (月例) | MSRC Blog | Microsoft Security Response Center

https://www.openssh.com/txt/release-8.8

OpenSSHがSHA-1を使用したRSA署名を廃止、BacklogのGitで発生した問題と解決にいたるまでの道のり | 株式会社ヌーラボ(Nulab inc.)

`pktmon`コマンドで"ドライバーとの通信に失敗しました"と出る場合は管理者のコマンドプロンプトで実行する

試した環境

本題

以下のように、pktmonコマンドで"PktMon ドライバーとの通信に失敗しました: 指定されたファイルが見つかりません。"と出る場合は管理者のコマンドプロンプトで実行していないのが原因です。

pktmon list
PktMon ドライバーとの通信に失敗しました: 指定されたファイルが見つかりません。

管理者のコマンドプロンプトで実行すると以下のように結果が得られます。

pktmon list

ネットワーク アダプター:
   ID MAC アドレス          名前
   -- --------          --
以下略

参考

Pktmon コマンドの書式設定 | Microsoft Learn

ffmpeg を呼び出すシェルスクリプトで標準入力を用いる場合は ffmpeg に -nostdin オプションをつける

試した環境

本題

ffmpeg を呼び出すシェルスクリプト内で標準入力を用いる場合は ffmpeg-nostdinオプションをつけます。

例として、処理のリストを読み込んで順次ffmpegで実行するシェルスクリプトを考えます。 リストは1列目に入力ファイル名、2列目に出力ファイル名を書いた以下のようなテキストファイル(list.txt)を考えます。

countup_r.mp4 countup_r.hevc
countup_g.mp4 countup_g.hevc
countup_b.mp4 countup_b.hevc

シェルスクリプトは以下のようになります。 list.txtを標準入力で読み込みます。

#!/bin/bash
while read LINE
do
  INPUT=$(echo ${LINE} | awk '{print $1}')
  OUTPUT=$(echo ${LINE} | awk '{print $2}')
  ffmpeg -nostdin -i ${INPUT} ${OUTPUT}
done < "list.txt"

ffmpeg-nostdinオプションをつけることで3つのmp4ファイルの処理が行われます。 上記のffmpeg -nostdin -i ${INPUT} ${OUTPUT}ffmpeg -i ${INPUT} ${OUTPUT}とすると期待した動作にはなりません。 1つ目の処理中に以下のエラーメッセージが出て、2つ目以降の処理は行われません。

Enter command: <target>|all <time>|-1 <command>[ <argument>]

Parse error, at least 3 arguments were expected, only 1 given in string 'ountup_g.mp4 countup_g.hevc'

ffmpeg-nostdinオプションをつけないと処理中に以下の記述が出力されます。

Press [q] to stop, [?] for help

この記述の通りffmpegは標準入力を受け付けています。 そのためシェルスクリプトwhile readの標準入力が ffmpeg の標準入力に持ってかれるようです。
-nostdinオプションをつけると上記の記述はされません。 そのため ffmpeg は標準入力を受け付けなくなりシェルスクリプトwhile readの標準入力が期待した動作になります。

ffmpegのドキュメントにある -stdin オプションの説明は以下の通りです。

-stdin Enable interaction on standard input. On by default unless standard input is used as an input. To explicitly disable interaction you need to specify -nostdin. Disabling interaction on standard input is useful, for example, if ffmpeg is in the background process group. Roughly the same result can be achieved with ffmpeg ... < /dev/null but it requires a shell.

参考

https://ffmpeg.org/ffmpeg.html

git でリモートリポジトリからタグを1つだけ取得する

試した環境

本題

git でリモートリポジトリからタグを1つだけ取得するには以下のようなコマンドで行います。

git fetch --no-tags <remote_name> tag <tag_name>

ポイントはタグ名の前にtagと付けることと、--no-tagsオプションを付けることです。 例えばタグ名がv2.0だとして、git fetch --no-tags origin tag v2.0と実行すると以下のように出力されます。

From https://....
 * [new tag]         v2.0       -> v2.0

tagについて

tagがないとローカルにタグとして取得できません。 例えばタグ名がv3.0だとして、git fetch --no-tags origin v3.0と実行すると以下のように出力されます。

From https://....
 * tag               v3.0       -> FETCH_HEAD

この後git logなどで確認してもローカルリポジトリにタグが付いていないことが確認できると思います。

git-fetch のドキュメントに以下の記述があります。

git-scm.com

tag <tag> means the same as refs/tags/<tag>:refs/tags/<tag>; it requests fetching everything up to the given tag.

なので以下のコマンドも同様にローカルリポジトリにタグを取得できます。

git fetch --no-tags <remote_name> refs/tags/<tag_name>:refs/tags/<tag_name>
git fetch --no-tags <remote_name> <tag_name>:refs/tags/<tag_name>

--no-tagsオプションについて

--no-tagsオプションがないと、すべてのタグが取得されます。 例えばタグ名がv4.0だとして、git fetch origin tag v4.0と実行すると以下のように出力されます。

From https://....
 * [new tag]         v4.0       -> v4.0
 * [new tag]         v1.0       -> v1.0
 * [new tag]         v2.0       -> v2.0
 * [new tag]         v3.0       -> v3.0

git config remote.<name>.tagOpt--no-tagsに設定されている場合はコマンドに--no-tagsオプションは不要です。 例えばgit clone --no-tags <URL> などでクローンしたローカルリポジトリでは初めからそのような設定になります。

参考

https://git-scm.com/docs/git-fetch#Documentation/git-fetch.txt-ltrefspecgt

https://git-scm.com/docs/git-fetch#Documentation/git-fetch.txt---no-tags

git cherry-pick で複数のコミットを指定する2つの方法

試した環境

本題

git cherry-pickコマンドで複数のコミットを指定する方法を2つ記します。 一つはコミットを列挙する方法、もう一つはコミット範囲指定する方法です。

まず、例示するために以下の通り環境を作ります。

git init
echo 1st>1st.txt
git add -A
git commit -m "1st commit"
echo 2nd>2nd.txt
git add -A
git commit -m "2nd commit"
git switch -c subbranch
echo 3rd>3rd.txt
git add -A
git commit -m "3rd commit"
echo 4th>4th.txt
git add -A
git commit -m "4th commit"
echo 5th>5th.txt
git add -A
git commit -m "5th commit"
git switch master

git log --oneline --allで出力したものが以下の通りです。

a7c5ac6 (subbranch) 5th commit
412ad02 4th commit
c5b21e4 3rd commit
394abab (HEAD -> master) 2nd commit
61d8c02 1st commit

以下の各例示はこの状態からスタートします。

コミットを列挙して指定する

cherry-pick したいコミットを列挙して指定します。 スペース区切りで列挙します。

git cherry-pick subbranch~2 subbranch

git log --onelineで出力したものが以下の通りです。

b5faa69 (HEAD -> master) 5th commit
1803313 3rd commit
394abab 2nd commit
61d8c02 1st commit

上記のコマンド指定ではsubbranchブランチが現在指しているコミットとその2つ前のコミットの変更が反映されます。 4th commitは指定していないので取り込まれておりません。

コミット範囲を指定する

cherry-pick したいコミットが連続している場合はコミットの範囲を指定することも可能です。

git cherry-pick subbranch~2..subbranch

git log --onelineで出力したものが以下の通りです。

07a228c (HEAD -> master) 5th commit
0ca0c1a 4th commit
394abab 2nd commit
61d8c02 1st commit

3rd commit がないことに注意です。

この指定方法はドキュメントに以下の通り説明があります。

https://git-scm.com/docs/gitrevisions#_revision_range_summary

> <rev1>..<rev2>
> 
>     Include commits that are reachable from <rev2> but exclude those that are reachable from <rev1>. When either <rev1> or <rev2> is omitted, it defaults to HEAD.

要するに左側に指定したコミットは範囲に含まれません。 この表現方法はgit cherry-pick以外のコマンドで左側を分岐の始点とする場合とかに便利なのだろうと感じました。

参考

Git - git-cherry-pick Documentation

Git - gitrevisions Documentation

令和6年度大学入学共通テストを解いた

令和6年度大学入学共通テストの問題を解きました。 解いたのは『英語(リーディング・リスニング)』、『国語』、『地理B』、『倫理、政治・経済』、『数学Ⅰ・数学A』、『数学Ⅱ・数学B』、『物理』、『化学』の8科目です。 去年の1月に解いた令和5年度大学入学共通テストの結果は以下の記事です。

kakashibata.hatenablog.jp

去年の12月に解いた令和5年度大学入学共通テスト(追・再試験)の結果は以下の記事です。

kakashibata.hatenablog.jp

問題

以下のページで公開されている問題と解答を利用させて頂きました。

edu.chunichi.co.jp

結果

結果は以下の通りです。

  • 英語(リーディング) 67点
  • 英語(リスニング) 75点
  • 国語 175点
  • 地理B 86点
  • 倫理、政治・経済 85点
  • 数学Ⅰ・数学A 81点
  • 数学Ⅱ・数学B 58点
  • 物理 93点
  • 化学 34点

以下各科目の振り返りです。

リーディング 67点

7割を下回ってしまいました。 なんとか全部の問題に着手することは出来ましたが、殆ど読まずに解答した問題もあり時間が足りませんでした。 第6問Bは12点中5点でした。 第4問(8点/16点)が苦手です。

リスニング 75点

音声が1回しか流れない第3問以降がきつく、特に第3問(9点/18点)と第5問(10点/15点)が苦手です。

国語 175点

現代文、古文、漢文に分けたときの点数は以下の通りです。

  • 現代文 98点
  • 古文 40点
  • 漢文 37点

古文は後に本文を解説した文章がありこれが本文の理解の助けになりました。
漢文は文章から答えを導いたというよりかは「人口に膾炙する」や玄宗楊貴妃についてなど、既に知ってることから解いた感触です。
そのおかげで現代文に時間をかけることができ、現代文が今まで取ったことない高得点になりました。

地理B 86点

目標の8割は取れたので良かったです。 第1問と第4問で2問ずつ間違えています。 例年第1問に苦戦します。

倫理、政治・経済 85点

倫理と政治・経済に分けたときの点数は以下の通りです。

  • 倫理 38点
  • 政治・経済 47点

数学Ⅰ・数学A 81点

一番落としたくなかったデータの分析と確率で満点を取れたので良かったです。 8割取れたのは苦手な第4問が今回はn進数の問題だったおかげです。

数学Ⅱ・数学B 58点

一番落としたくなかった統計がボロボロ(7点/20点)でした。 第2問もボロボロ(9点/30点)でした。

物理 93点

9割取れて満足です。

化学 34点

例年より計算問題が減ったでしょうか。
化学は好きな科目なのですが、点数はまともに取れたことがありません。

全体の感想

去年よりは点が取れた印象です。

来年から新教育課程による出題科目が登場します。 新教育課程による出題科目では『倫理、政治・経済』が無くなります。 これに近い科目は『公共,倫理』もしくは『公共,政治・経済』になると思いますが、どちらを解くか悩みます。 『情報Ⅰ』も気にはなっています。

令和5年度大学入学共通テスト(追・再試験)を解いた

令和5年度大学入学共通テストの追・再試験の問題を解きました。
解いたのは『英語(リーディング・リスニング)』、『国語』、『地理B』、『倫理、政治・経済』、『数学Ⅰ・数学A』、『数学Ⅱ・数学B』、『物理』、『化学』の8科目です。
今年の1月に解いた令和5年度大学入学共通テスト本試験の結果はそれぞれ以下の記事です。

kakashibata.hatenablog.jp

問題

以下のページで公開されている問題と解答を利用させて頂きました。

www.dnc.ac.jp

結果

結果は以下の通りです。 括弧の中は配点です。

  • 英語(リーディング) 68点(100点)
  • 英語(リスニング) 74点(100点)
  • 国語 127点(200点)
  • 地理B 78点(100点)
  • 倫理、政治・経済 69点(100点)
  • 数学Ⅰ・数学A 58点(100点)
  • 数学Ⅱ・数学B 54点(100点)
  • 物理 76点(100点)
  • 化学 41点(100点)

1月の令和6年度大学入学共通テストも解きたいと思います。