mattintosh note

EasyWine は pixivFANBOX & BOOTH で頒布中

Anne Pro 2 をロープロファイルアルミケース化してみた

自作キーボード第二弾用に注文していたパーツが届きました。で、使うことあるかな?と思ってロープロファイルアルミニウムケースも一緒に注文していたんですが、これ使っちゃうと DZ60 の裏面 LED が意味なくなっちゃうんですね。なので Anne Pro 2 で使ってみることにしました。

Anne Pro 2 には T5 のトルクスが使われているのでプラスドライバーでは分解出来ません。

KBDfans で取り扱っているケースは DZ60 とかそういう PCB 向けなので Anne Pro 2 用に設計されてはいません。実際に取り付けようとするとネジ 5 本中 2 箇所しかネジ留め出来ません(上部両サイドの二箇所のみ)。ネジはケースに付属しているネジではなく Anne Pro 2 で使われていたものを使用します。 タイピング音も変わり、ケース内に響く音が少なくなりました。吸音用にスポンジなどを敷く人もいるようです。

Anne Pro 2 with KBDfans Lowprofile Aluminium Case
Anne Pro 2 with KBDfans Lowprofile Aluminium Case

下半分がネジで固定されていない状態ですが普通にタイピングする程度であれば問題なさそうです。

Anne Pro 2 with KBDfans Lowprofile Aluminium Case
Anne Pro 2 with KBDfans Lowprofile Aluminium Case

Type-C のコネクタは結構サイズがシビアで Anne Pro 2 に付属しているものではコネクタのサイズが大きくて刺すことが出来ませんでした。

Anne Pro 2 with KBDfans Lowprofile Aluminium Case
Anne Pro 2 with KBDfans Lowprofile Aluminium Case

Amazon で売られている UGREEN というメーカーの L 字タイプは純正か!?と言うくらいにベストフィットします。

Anne Pro 2 with KBDfans Lowprofile Aluminium Case
Anne Pro 2 with KBDfans Lowprofile Aluminium Case

この USB ケーブルはバリエーションが 50 cm からあり、ノート PC 用としても無駄のないサイズです(取り回しによってはギリギリになってしまうかも)。個人的にナイロン編みが好きなので気に入っています。

このケースは裏面に貼り付けるゴムシールが付いてくるんですが、ゴムシールの方が大きく、溝のサイズと合わなかったので手元にあった丸形のゴム脚を付けました。一緒にこのケースのアクリルタイプも買ったんですがそちらはピッタリサイズでした。ケースの種類ごとにゴムシールのサイズがあるのかないのかはわかりません。

Anne Pro 2 with KBDfans Lowprofile Aluminium Case
Anne Pro 2 with KBDfans Lowprofile Aluminium Case

標準のケースもシンプルで良いですが、やはりアルミになると高級感が増しますね。

Anne Pro 2 with KBDfans Lowprofile Aluminium Case
Anne Pro 2 with KBDfans Lowprofile Aluminium Case

ダーク系の DSA プロファイルキースイッチと併せてみる

DSA プロファイルのキーキャップを取り付けている Anne Pro 2 Black Case の方も移植してみました。今回はケース色にオレンジを選択しましたがパープルだったらエヴァ初号機っぽい印象になったかも。

Anne Pro 2 with KBDfans Lowprofile Aluminium Case
Anne Pro 2 with KBDfans Lowprofile Aluminium Case

標準の Anne Pro 2 と並べてみます。キーの高さはあまり変わらず、使ってみるとむしろロープロファイルケースの方が高いような気が…。

Anne Pro 2 with KBDfans Lowprofile Aluminium Case
Anne Pro 2 with KBDfans Lowprofile Aluminium Case

DSA プロファイルのキーキャップが付いている方は Gateron 茶軸なんですが、タクタイルスイッチとアルミケースの相性がイマイチだったので今回は赤軸の方で使うことにしました。

欠点:標準バッテリーが取り付けられなくなる

Anne Pro 2 は Bluetooth 対応なのでバッテリーを搭載しています。このロープロファイルアルミケースは溝が付いているのですが、標準バッテリーをその溝に入れたとしてもネジ受けよりもわずかに高くなるので(自分が試した限りでは)バッテリーを取り付けられなくなります。つまり Bluetooth が使えなくなります。

Tofu 60% も持っているのでそちらでも試しましたがスポンジを取り外してギリギリいけるかいけないかくらいの非常に微妙なところでした。

YouTube で Anne Pro のケースを交換している方がいますが、薄型のバッテリーを使っているようです。Anne Pro 2 専用の交換用ケースも販売されてはいるのでそちらを選択するのが無難かもしれないですね。

www.youtube.com

有線では問題なく使用出来ます。一応、モバイルバッテリーと USB 接続すれば USB から給電して Bluetooth も使えるようになります(そんなアホな使い方する人いないと思うけど)。

Anne Pro 2 のケースを交換する際は Bluetooth が使えなくなるかもしれないことを考慮しておいた方がよさそうです。

Canon PowerShot G1 X Mark II を持って秋葉原へ

新しいカメラを買ったらやっぱり屋外で試し撮りはしたい。

日差し強めのやや曇り。

秋葉原に買い物の用事もあったので PSG1XM2 を持ち出して少し散策。RAW で撮影したものを RawTherapee で現像しています。トーンマップとダイナミックレンジ補正をやや使っています。

秋葉原と言えば神田明神(表記は神田神社っぽい)。コロナウイルスの影響か人はまばら。撮影中は気づかなかったがこのカメラは広角側でケラレが起きるっぽい。

Canon PowerShot G1 X Mark IICanon PowerShot G1 X Mark IICanon PowerShot G1 X Mark IICanon PowerShot G1 X Mark IICanon PowerShot G1 X Mark II
Canon PowerShot G1 X Mark II

こういう電柱を見かけるとついつい写真を撮ってしまう。

Canon PowerShot G1 X Mark II
Canon PowerShot G1 X Mark II

何年も 28、35、55 mm の単焦点レンズを APS-C で使っていたので 35 mm 換算広角 24 mm はかなり広く感じる。背の高い建物を撮るとパースがキツくなるのでパース補正してみる。広角側はそれなりに糸巻き型の歪みが出るようなので歪曲収差補正 0.07 前後。AI Nikkor 28mm f/2.8S で 0.02 前後だったと思うので結構歪んでいるっぽい。トリミングが必要なレベルだが面倒なのでノートリミング。

Canon PowerShot G1 X Mark II
Canon PowerShot G1 X Mark II

ごちゃごちゃしたシーンでもコンデジの割によく解像感が出てる印象。先々週くらいにも秋葉原には行ったけど人通りはあまり変わらず。

Canon PowerShot G1 X Mark II
Canon PowerShot G1 X Mark II

接写もまぁまぁ寄れるが日頃 iPhone を使っているせいで被写界深度の浅さがデメリットに感じることも。

Canon PowerShot G1 X Mark II
Canon PowerShot G1 X Mark II

ほぼ同じアングルで iPhone SE で撮影。全体的な明るさはやっぱりデジタルカメラの方が良い。


数年ぶりにカメラを持って外に出かけたが思った以上に PSG1XM2 のサイズが大きいと感じだ。レスポンスも悪くはないけど換算 24 mm はあまり得意ではないので倍率固定機能があればいいのになと思った。(搭載しているカメラはあるんだろうか?)

いざ買ってみたものの、もう写真家のような生活をする元気は無いし、日常であれば iPhone があればだいたい事足りるので出番はあまり多くはなさそう。リュックのショルダーストラップに取り付けられるようなバッグにワンハンドストラップでスッっと取り出せるのであれば持ち歩いてもいいかもしれないけど…。

今更 Canon PowerShot G1 X Mark II を買った

昔はカメラをやっていたのですがここ数年はまったくやっておらず、以前使っていた EOS 40D も引っ越しの際に家族にあげてしまったので手元にあるのは超古参の EOS D60 のみ。2002 年発売の約 600 万画素とは言え、ウェブに掲載する程度あればなんとかなるのでダイナミックレンジの狭さなどを騙し騙しで使っていました。

以前掲載した Anne Pro 2 なんかもこの EOS D60 で撮影したものです。

f:id:mattintosh4:20200411030251p:plain
Canon EOS D60 & Nikon Micro-Nikkor 55mm F3.5

が、いい加減電池が持たない。デジタル初期のカメラなのでレスポンスも悪く、撮影した画像の確認だけでも一苦労です。

一応レンズ資産はあるので NikonCanon の低価格機種でも買おうかなと思っていたのですがまた一眼レフ買ってもな…と思い前から欲しかった Foveon 機種を色々見て回ることに。

このサイズだったら RICOH の GR もありかなぁ…

物撮りが多いから 28 mm は使いづらいな…

PowerShot のフラッグシップも 1.5 型 CMOS 採用だからそこそこボケそうだなぁ…

Canon ならストロボ流用できるよなぁ…

となり、お安くなっていた PowerShot G1 X Mark II になりました。

一番の決め手は外付けストロボが流用出来るところでした。

他メーカーに乗り換えてストロボを新調してもよかったんですがどうも SONY とか Panasonic は買う気にならないんですよね。(個人的に家電製品のイメージが強くてまともにカメラ作っているという印象が無いというだけです。動画やデジタル処理は強そうですが)

というわけでいつも通りの Canon です。なんだかんだうちにあるコンパクトデジタルカメラIXY DIGITAL 920 IS、IXY DIGITAL 25 IS と、Canon です。

持ってみた感じでは重量バランスが悪いなと思いました。グリップが小さいからかもしれません。ストラップ必須でしょうね。

とりあえず購入のきっかけになったストロボの流用は問題なさそうでした(バランス以外)。カメラに併せて小型のストロボ買った方がいいかもしれない。

こちらは PowerShot G1 X Mark II で撮ったニコンレンズの付いた EOS D60 です。約 18 年の現役生活から解放されようやく引退することが出来ます。(この前ラバーが割れました)

f:id:mattintosh4:20200523202613p:plain

動画機能は残念、というのは事前に調べて知っていたのですがカメラ全体のスペックに対して控えめな機能ですね。FullHD まで撮影出来ますが近年は 4K 動画に見慣れてしまっているせいかピクセル割増している感じで画質が高いという印象はありません。フレームレートは全解像度で 30 FPS 固定です。

www.youtube.com

www.youtube.com

www.youtube.com


今回はいい加減 EOS D60 を手放したかったということで写真撮れればいいやくらいで G1 X Mark II を選択しましたが動画撮影も考えると SONY RX100M6 くらいは欲しいところですね。

SD カード、Wi-Fi 搭載というだけでも個人的には結構満足です…。(CF マジ辛い)

2020/05/16〜2020/05/22のVTuber再生数増加ランキング

2020/05/16 〜 2020/05/22 の VTuber 再生数増加ランキング
順位 チャンネル名 再生増加数 再生数 登録数 開設日
1 Korone Ch. 戌神ころね +2,729,181 36,107,083 375,000 2019/03/25
2 渋谷ハル +2,651,942 24,103,110 129,000 2018/04/17
3 フブキCh。白上フブキ +1,906,377 63,670,127 586,000 2018/05/24
4 Kanae Channel +1,820,924 73,900,283 259,000 2018/05/01
5 Kuzuha Channel +1,787,351 67,568,936 306,000 2018/03/05
6 A.I.Channel +1,712,545 304,330,274 2,720,000 2016/10/19
7 Pekora Ch. 兎田ぺこら +1,684,745 35,657,309 346,000 2019/07/03
8 波羅ノ鬼 - Harano Oni - +1,608,302 6,938,441 90,000 2019/02/03
9 Aqua Ch. 湊あくあ +1,597,406 59,370,650 483,000 2018/08/01
10 月ノ美兎 +1,382,378 79,912,296 536,000 2018/02/01
11 勇気ちひろ +1,350,105 22,133,766 195,000 2018/02/01
12 Marine Ch. 宝鐘マリン +1,305,572 33,498,133 348,000 2019/07/22
13 花譜 +1,089,507 48,905,165 297,000 2018/10/17
14 Matsuri Channel 夏色まつり +1,064,908 26,559,226 345,000 2018/05/25
15 Okayu Ch. 猫又おかゆ +969,040 22,410,795 293,000 2019/03/25
16 Haato Channel 赤井はあと +960,714 24,139,863 320,000 2018/05/24
17 本間ひまわり - Himawari Honma - +945,478 76,404,068 441,000 2018/07/02
18 緑仙channel +878,084 62,594,850 289,000 2018/05/27
19 Suisei Channel +871,502 17,763,099 276,000 2018/03/18
20 椎名唯華 +844,986 50,188,612 306,000 2018/07/27
21 HIMEHINA Channel +840,491 102,758,858 578,000 2018/02/06
22 御伽原 江良 / Otogibara Era【にじさんじ】 +827,048 36,330,620 357,000 2019/01/15
23 天神 子兎音 Tenjin Kotone +826,031 44,151,483 251,000 2018/04/18
24 Miko Ch. さくらみこ +792,367 29,441,522 273,000 2018/04/25
25 Subaru Ch. 大空スバル +786,970 22,505,017 243,000 2018/08/22
26 レヴィ・エリファ-Levi Elipha- +773,486 7,315,921 108,000 2019/05/07
27 A.I.Games +771,183 150,083,656 1,450,000 2017/03/14
28 Patra Channel / 周防パトラ 【ハニスト】 +769,174 51,321,996 266,000 2018/07/08
29 夢追翔のJUKE BOX +758,658 21,497,800 167,000 2018/09/19
30 舞元啓介 +751,655 21,663,419 175,000 2018/08/07
31 Mio Channel 大神ミオ +737,361 19,022,788 229,000 2018/12/01
32 SoraCh. ときのそらチャンネル +717,056 36,692,197 340,000 2017/09/07
33 戌亥とこ -Inui Toko- +706,530 20,057,139 261,000 2019/03/19
34 鈴鹿詩子 Utako Suzuka +705,302 43,103,264 280,000 2018/03/06
35 リゼ・ヘルエスタ -Lize Helesta- +675,061 35,081,354 310,000 2019/03/19
36 社築 +599,078 28,507,145 243,000 2018/05/25
37 おめがシスターズ [Ω Sisters] +588,232 54,747,130 229,000 2018/03/04
38 加賀美 ハヤト/Hayato Kagami +581,699 22,686,498 206,000 2019/06/21
39 Flare Ch. 不知火フレア +528,035 10,195,347 155,000 2019/07/26
40 アルス・アルマル -ars almal- 【にじさんじ】 +521,072 28,044,373 269,000 2019/06/27
41 Shion Ch. 紫咲シオン +513,743 18,512,584 245,000 2018/08/03
42 花鋏キョウ/キョウちゃんねる +505,147 25,718,992 215,000 2018/08/31
43 獅子神レオナ/レオナちゃんねる +499,217 29,543,523 164,000 2018/08/31
44 Rushia Ch. 潤羽るしあ +493,278 11,180,867 268,000 2019/07/03
45 メイカちゃんねる +491,505 9,976,443 106,000 2018/02/12
46 エクス・アルビオ -Ex Albio- +487,870 25,719,860 191,000 2019/05/07
47 鷹宮リオン +479,667 28,240,942 215,000 2018/08/07
48 Noel Ch. 白銀ノエル +470,476 15,582,781 308,000 2019/07/26
49 ここあMusic +460,733 84,205,251 341,000 2018/07/09
50 Nakiri Ayame Ch. 百鬼あやめ +460,590 11,875,631 238,000 2018/08/12
51 ラトナ・プティ -Ratna Petit -にじさんじ所属 +454,788 11,123,825 129,000 2019/06/28
52 アンジュ・カトリーナ - Ange Katrina - +449,853 29,878,792 302,000 2019/02/26
53 懲役太郎チャンネル +443,896 24,732,299 155,000 2014/08/27
54 ジョー・力一 Joe Rikiichi +440,594 16,135,723 177,000 2018/08/07
55 Haneru Channel / 因幡はねる 【あにまーれ】 +420,510 25,313,612 155,000 2018/06/05
56 【3年0組】郡道美玲の教室 +418,220 23,858,021 227,000 2019/01/15
57 夜見れな/yorumi rena【にじさんじ所属】 +414,544 19,973,564 184,000 2019/06/20
58 Aoi ch. +405,120 60,606,730 271,000 2017/10/25
59 ゲーム部プロジェクト +403,727 176,272,604 320,000 2018/01/25
60 ニュイ・ソシエール //[Nui Sociere] +403,106 16,665,604 160,000 2019/05/27
61 Roboco Ch. - ロボ子 +388,933 20,032,264 229,000 2018/02/08
62 笹木咲 / Sasaki Saku +372,260 41,710,270 362,000 2018/07/02
63 夢月ロア🌖Yuzuki Roa +368,779 24,833,516 289,000 2019/01/15
64 シスター・クレア -SisterClaire- +359,835 21,780,798 214,000 2018/05/25
65 健屋花那【にじさんじ】KanaSukoya +357,995 9,016,936 183,000 2019/07/04
66 星川サラ / Sara Hoshikawa +354,843 12,622,574 194,000 2019/09/25
67 DUSTCELL +350,178 7,697,080 126,000 2019/10/04
68 町田ちま【にじさんじ】 +344,278 6,915,824 102,000 2018/08/07
69 しぐれうい +338,476 6,663,051 200,000 2018/09/16
70 竜胆 尊 / Rindou Mikoto +305,276 15,729,017 240,000 2018/08/07
71 剣持刀也 +294,189 25,132,929 167,000 2018/03/06
72 三枝明那 / Akina Saegusa +290,454 13,193,992 159,000 2019/03/19
73 YuNi - virtual singer - +272,971 69,595,452 343,000 2018/05/14
74 アキロゼCh。Vtuber/ホロライブ所属 +263,661 5,554,162 129,000 2018/05/25
75 小林幸子のさっちゃんねる +258,617 1,057,866 28,900 2018/04/23
76 黛 灰 / Kai Mayuzumi【にじさんじ】 +254,242 23,401,488 202,000 2019/06/27
77 森中花咲 +237,344 21,536,081 167,000 2018/03/14
78 ひなたチャンネル (Hinata Channel) +234,054 44,204,933 538,000 2018/02/11
79 葉加瀬 冬雪 / Hakase Fuyuki +229,207 12,140,255 138,000 2019/06/15
80 樋口楓【にじさんじ所属】 +220,847 32,554,374 296,000 2018/01/31
81 燦鳥ノム - SUNTORY NOMU - +217,469 21,329,468 141,000 2018/07/26
82 【にじさんじ】神田笑一 +212,303 13,330,905 120,000 2018/08/07
83 花畑チャイカ +209,479 20,501,560 170,000 2018/05/25
84 ケリン +205,751 22,724,576 189,000 2018/02/19
85 Tomari Mari channel / 兎鞠まりちゃんねる +196,630 2,930,740 52,800 2018/06/29
86 童田明治-わらべだめいじー- +192,302 15,056,025 183,000 2019/01/06
87 シェリン・バーガンディ -Shellin Burgundy- 【にじさんじ】 +191,344 8,794,565 127,000 2019/08/19
88 相羽ういは〖Aiba Uiha〗にじさんじ所属 +189,330 9,628,649 121,000 2019/06/26
89 ♥️♠️物述有栖♦️♣️ +187,784 12,721,319 178,000 2018/03/05
90 天宮 こころ / Kokoro Amamiya 【にじさんじ所属】 +186,061 7,933,082 127,000 2019/07/03
91 早瀬 走 / Hayase Sou【にじさんじ所属】 +183,828 5,916,698 100,000 2019/06/26
92 鈴原るる【にじさんじ所属】 +178,635 37,661,555 324,000 2019/03/20
93 由宇霧ちゃんねる【しくじり性教育】 +177,848 19,069,920 156,000 2018/08/08
94 渋谷ハジメのはじめ支部 +176,872 11,916,038 95,500 2018/01/31
95 Siro Channel +160,509 108,594,552 701,000 2017/06/23
96 Mary Channel / 西園寺メアリ【ハニスト】 +157,791 12,894,870 117,000 2018/07/08
97 ドーラ +157,075 17,618,674 196,000 2018/05/25
98 HELLO KITTY / ハローキティ【Sanrio Official】 +147,140 20,807,747 256,000 2018/08/13
99 ルイス・キャミー +144,052 3,298,840 88,900 2019/08/21
100 星乃めあ - virtual singer - +140,791 10,761,748 89,200 2018/07/09

lsyncd+rsync を root で安全に運用する方法を考える

負荷分散等でサーバを複数台使うことが増えて lsyncd を使うことが増えた。lsyncd は rsh セクションで使用する秘密鍵を自由に指定出来るのでセキュリティの観点から一般ユーザでデータのやり取りをするのが良いのだけど同期先に root で接続しなければならないことがある。

というのは複数のユーザがファイルやディレクトリを作成する環境だとファイルやディレクトリの Owner、Group がそれぞれのものになる。これを一般ユーザ(例えば lsyncd)でログイン、コピーしようとすると lsyncd の設定で archive = trueowner = truegroup = true を設定していても Owner はすべて lsyncd となる。同期先の環境ではパーミッションは変更出来ても所有者を変更する権限が無いので所有者を維持したまま同期したければ root を使わざるを得ない。(ローカルの lsyncd 自体は root で動く)

ネット上には lsyncd の設定で一般で同期させるために rsh = "ssh -i /home/lsyncd/.ssh/id_rsa" のような設定をする方法をあまり見かけないのでそもそも一般ユーザで同期させようとする方が特殊なのかもしれない。

ということで lsyncd と rsync を root で同期するけどなるべくセキュリティを高めたいなということで考えてみる。lsyncd 自体に設定をすることは出来ないの SSH の方をなんとかする。

Match ブロックで接続元を制限する

SSH サーバには Match ブロックで条件付をすることが出来るようになっている。この条件には IP アドレスなどを指定することが出来るのでこれを利用して root でログイン可能なホストを絞り込む。詳しくは man sshd_config を見れば書いてあるのだけどだいたいこんな感じで書くことが出来る。複数指定する場合にカンマの間にスペースなどを入れてはならない。サンプルとして PermitRootLogin yes と書いているが lsyncd を使用する場合はパスワード認証が使えないので必然的に prohibit-passwordwithout-password)を使うことになるだろう。

/etc/ssh/sshd_config

PermitRootLogin no

Match Address 10.0.0.1
    PermitRootLogin yes

Match Address 10.0.0.2,10.0.0.3
    PermitRootLogin prohibit-password

Match Address 172.16.0.0/16 LocalPort 10022
    PermitRootLogin prohibit-password

Match ブロックは次の Match ブロックが出現するまでがひとつのブロックになっている。IP などの指定は IP アドレス以外にネットワークアドレスを指定したり複数指定することが出来る。Address 以外にも指定可能なものがいくつかあり、 LocalPort などを使えば「パブリックな 22 番ポートへのアクセスはブロック、ファイヤーウォール側の 10022 番ポートへのアクセスは許可」という設定も出来る。

man sshd_config

The available criteria are User, Group, Host, LocalAddress, LocalPort, and Address.

設定したあとは必ず確認しておいた方がいい。特に IP アドレスで制限を設ける場合。正しく設定したつもりがすべての条件に一致しなくて二度と SSH 接続出来なくなるなんてこともある。(実際 Qiita にそういう人が居た)

確認方法は sshd -T だけど、OpenSSH のバージョンによって動作が異なるっぽい。

CentOS 8

Terminal

sshd -T

Mach Address が使われている場合は addr が必要になる。

'Match Address' in configuration but 'addr' not in connection test specification.

addr の指定方法は下記の通り。

Terminal

sshd -T -C addr=10.0.0.1

Amazon Linux 2

sshd -T で普通にテスト結果が出力される。connection_spec を指定して実行してみるとどうなるか。

Terminal

sshd -T -C addr=10.0.0.1

user, host and addr are all required when testing Match configs

上記の通り CentOS 8 とは挙動が違うらしく、userhostaddr のすべての指定が必要になる。少し長くなって面倒だが下記のように指定する。

Terminal

ssh -T -C user=root,host=localhost,addr=10.0.0.1

これで結果が出力されるのであとは | grep permitroot なんかで見やすいように絞り込む。

sshd_config で接続元を絞り込んでも許可されているホストからは秘密鍵を持っていれば接続してコマンドを実行出来てしまう(万が一のときに役に立つかもしれないが)。そこで、authorized_keys のオプションを使って端末の割り当てやエージェント転送などをさせないようにする。restrict は OpenSSH 7.2 以降に追加された機能で、初期の Amazon Linux では恐らく OpenSSH 6.6 (2013) くらいなので対応しておらず、無効なオプションになり公開鍵も無効になってしまうので注意が必要。OpenSSH のバージョンが古い場合はパッケージを更新した方がいいだろう。なお、この機能は SSH サーバ側の機能である。

/root/.ssh/authorized_keys

no-pty,no-port-forwarding,no-agent-forwarding,no-X11-forwarding ssh-rsa XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX lsyncd

# OpenSSH 7.2 以降 であれば ``restrict'' でまとめることが出来る
restrict ssh-rsa XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX lsyncd

これで root でログインされてもシェルは使えないようになる。

なお、ユーザに端末を割り当てない方法としてはユーザのログインシェルに /usr/sbin/nologin/usr/bin/false を使う方法があるが、これは SSH 接続が確立出来ないので lsyncd では使えない。

authorized_keys で接続元を制限する

/etc/ssh/sshd_config にあまり変更を加えたくないという場合もあるかと思う。また、Amazon Linux の場合は最初から PermitRootLogin yes になっているのでそもそも Match ブロックを使う必要が無い(PermitRootLogin no に変更するなら話は別だが)。

authorized_keys には上記のように端末の割り当てなどを禁止する他に、接続元を制限するオプションもある。

man 8 sshd

AUTHORIZED_KEYS FILE FORMAT

     from="pattern-list"
             Specifies that in addition to public key authentication, either
             the canonical name of the remote host or its IP address must be
             present in the comma-separated list of patterns.  See PATTERNS in
             ssh_config(5) for more information on patterns.

             In addition to the wildcard matching that may be applied to host-
             names or addresses, a from stanza may match IP addresses using
             CIDR address/masklen notation.

             The purpose of this option is to optionally increase security:
             public key authentication by itself does not trust the network or
             name servers or anything (but the key); however, if somebody
             somehow steals the key, the key permits an intruder to log in
             from anywhere in the world.  This additional option makes using a
             stolen key more difficult (name servers and/or routers would have
             to be compromised in addition to just the key).

man 5 ssh_config

PATTERNS
     A pattern consists of zero or more non-whitespace characters, `*' (a
     wildcard that matches zero or more characters), or `?' (a wildcard that
     matches exactly one character).  For example, to specify a set of decla-
     rations for any host in the ".co.uk" set of domains, the following pat-
     tern could be used:

           Host *.co.uk

     The following pattern would match any host in the 192.168.0.[0-9] network
     range:

           Host 192.168.0.?

     A pattern-list is a comma-separated list of patterns.  Patterns within
     pattern-lists may be negated by preceding them with an exclamation mark
     (`!').  For example, to allow a key to be used from anywhere within an
     organization except from the "dialup" pool, the following entry (in
     authorized_keys) could be used:

           from="!*.dialup.example.com,*.example.com"

     Note that a negated match will never produce a positive result by itself.
     For example, attempting to match "host3" against the following pattern-
     list will fail:

           from="!host1,!host2"

     The solution here is to include a term that will yield a positive match,
     such as a wildcard:

           from="!host1,!host2,*"

注意しなければならないのは例の最後にあるが、否定条件のみ指定した場合はすべて拒否することになるため上記の example.com の例のように許可するものを追加しておく必要がある。

アドレスには単一の IP アドレス以外にワイルドカードと CIDR(IPアドレス/マスク長)も使える。[0-5] などのレンジの指定は出来ず、10.0.0.0/255.255.255.0 のような記述は誤り。記述が誤っていてもエラーメッセージは「ブロックされています」などではなく単に「公開鍵エラー」となるだけなので制限が正しく効いているか確認するのは大事。

/root/.ssh/authorized_keys

from="10.0.0.1",restrict ssh-rsa XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX lsyncd
from="10.0.0.*",restrict ssh-rsa XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX lsyncd
from="10.0.?.*",restrict ssh-rsa XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX lsyncd
from="10.0.1?.*",restrict ssh-rsa XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX lsyncd
from="10.0.0.0/24",restrict ssh-rsa XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX lsyncd

なお、コンフィグで PermitRootLogin no になっている場合は authorized_keysfrom 設定してもログインは出来ない。