chromebookでssh
chromebook同士でファイル共有する方法としてニアバイシェアというのがあるけど、なんか思ってたのと違う。なので、sshで繋いでファイルのやりとりを直接やってしまおう、のメモ。
chromebookを2台使っていて、メインとサブという役割分担。
メインで使っていて作業した内容をサブ機にsshで転送・バックアップしておきたい。
まずはchromebookの設定。メイン機のLinux環境からサブ機のLinux環境に繋ぐためにポート転送を設定する。道路を繋ぐための作業、みたいなもの。
サブ機側のポート転送を設定。
「ChromeOSについて→Linux開発環境→ポート転送」
ポート番号はすでに使われている番号以外ならなんでもOK
sudo less /etc/service
↑これで確認できる。とりあえず10001〜10080のあたりが空いてるので「10022」とした
ポート転送を設定することで
1)サブ機のローカルIPアドレス192.168.0.NNにSSHでポート番号を指定してアクセスする
2)サブ機側がポート転送してくれて、サブ機のLinux環境にログインできる
サブ機のLinux環境でsshdサービスを立ち上げる
(サブ機をsshdサーバーにする)
sshdサービスがどうなってるのか確認。
sudo systemctl status sshd.service
この時点では「Active: inactive (dead)」という表示が出ている。ssdは立ち上がっていないので、sshdを立ち上げるために以下の作業。
(sudo、root権限で/etc/以下のファイルを編集することになるので、念のためバックアップを取っておくのが安心安全)
「/etc/ssh/sshd_not_to_be_run」というファイルがあるとsshdが立ち上がらないらしいので削除
sudo rm /etc/ssh/sshd_not_to_be_run
「/etc/ssh/sshd_config」というのがsshdの設定ファイル。
Port 10022
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
PermitRootLogin no
UsePAM no
AcceptEnv LANG LC_*
chromebookのポート転送で指定したポート番号を記載。それ以外は呪文でOK(ルートでアクセス許可するかとか)で、上記以外はデフォルトのままでOK.
設定ファイルを編集したらsshdサービスを立ち上げる
sudo systemctl restart sshd.service
立ち上がってるか確認
sudo systemctl status sshd.service
「Active: active (running)」という表示が見えたら無事sshdのサービスは立ち上がっている。
サブ機のLinux環境のHOMEディレクトリに「.ssh」というディレクトリを作成。
chmod 700 .ssh
として、権限をオーナー限定にしておく。
メイン機でsshの秘密鍵と公開鍵を作る
ホームディレクトリで
ssh-keygen
途中パスフレーズ聞かれて、入力すると「id_rsa」(秘密鍵)「id_rsa.pub」(公開鍵)がHOMEディレクトリの「.ssh」ディレクトリに作られる。公開鍵以外の権限はオーナー限定(0600)
メイン機で作った公開鍵をサブ機のHOMEディレクトリの.sshディレクトリにコピー
scp -P 10022 id_rsa.pub ユーザー名@192.168.0.NN:~/.ssh/.
メイン機で作った公開鍵をサブ機にコピーしたら、サブ機で作業
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
サブ機の.sshディレクトリの「authorized_keys」というファイルに公開鍵を登録(追記コピーしてるだけ)
以上でsshは繋がる。
ssh -p 10022 -i id_rsa.pub ユーザ名@192.168.0.NN
とか
ssh -p 10022 -l ユーザー名 192.168.0.NN
メイン機からサブ機にログインしてごそごそいじったり
scp -P 10022 -r work ユーザ名@192.168.0.NN:work
などとメイン機からサブ機にファイルコピーしたり
sftp ユーザー名@192.168.0.NN:DIR
とか、sftpでログインしてアップしたいディレクトリに移動してから
put -r DIR/
などとメイン機からサブ機にディレクトリごとアップしたり、
ファイル操作がらくちんになった。
とはいえ、コマンドラインなので、上書き事故には気をつけないといけない、よなあ。
ちなみに注意するところがあって。
linux開発環境も、ポート転送も手動。chromebookを立ち上げたり、再起動したら
・Linux開発環境を立ち上げる
・ポート転送をONにする
…というのもあって、どうせ確認するわけだし、IPアドレスも自動割り当てのままにした。
以下のサイトを参考にさせていただきました(多謝
【Chromebook】SSHサーバの設定
ChromebookのLinuxコンテナにSSHでログインする
最近のネタ切れの時の弁当は2色、3色弁当。
なんかこういう手抜きの方が美味しかったりするから、ちょっと悔しい。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
WiFi接続 インターネットなし
WINDOWS11のノートパソコンがおもての公衆無線LAN、WiFiでネット接続ができなくなっていた。
図書館やスタバのWiFi(ホットスポット?)が使えない。
たぶん今年の5月ぐらいからか(記憶曖昧)
「WiFi接続はされているけど、インターネットなし」という状態
Chromebookでは問題ないし、どうせWINDOWSアップデートのせいだし、そのうちどっかのアプデで治るだろうと放置してたんだけど、さすがにそろそろなんとかせんとなあ、と。
明日、納品の電子書籍があって最終確認作業に、地域活動支援センターを利用。
といっても、広々としたロビーのテーブルを使わせてもらっただけ。ここもWiFiが使えるんで、WIN11のノパソで確認作業が終わったら「インターネットなし」問題。
共有設定がだめなのか、アダプタのドライバが原因なのか、何度もシャットダウンして再起動して、右往左往して。
コマンドプロンプトで接続状況を確認
・Wireless LAN adapter Wi-Fi
↑こいつは接続してるのでokっぽい
・イーサネットアダプター vEthernet(WSL (Hyper-V firewall))
↑こいつが「インターネットなし」にしてるっぽい
…なのでip自動取得ではなく、手動設定でipv4のところを設定
イーサネットアダプタのipアドレス、サブネットマスクを記入したらインターネットに繋がった。とりあえず。
にしても、WiFiに繋ぐたびにいちいちipconfigでアドレスを確認するなんてありえない。
もう一度、IPアドレスを自動取得に戻してみたら、何ごともなかったかのようにすんなり繋がりやがった。もうわけわかめだ。
デフォルトゲートウェイがローカルIPの198.168.0.1(暗号化なし)だったところ、別のグローバルIPになっていたけど、なにか関係があるのか…どうかもわからない。
ネット絡みは、原因の特定がほんとややこしい。何がどう関係してるんだか。
「WiFi接続あり。インターネットなし」になったら
IPアドレスを調べて自動取得ではなくて、手動で設定してみると解決するっぽい。
Defender絡みのアップデートでfirewallの設定でも変わったのかと思いつつ、結果オーライの対症療法。
この地域活動支援センターはほんと気持ちよい空間で、ノートやノパソを広げてる学生くんたち、本を読んでるお父さんお母さん、ボードゲームをしてる小学生たち。
箱モノなんちゃらとやり玉にあげられることが多いけど、ここや図書館などなど、モノ自体はびっくりするほど充実してる。税金なんだし、使わないとねー。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
おひとり様ActivityPubサーバーにBlock実装
おひとり様APサーバーにBlockを実装した。
ActivityでBlockが飛んできてもめっちゃレアケースなのでスルーしてたんだけど念のため。
というか、アドベントカレンダーに参加して投入したエントリ 「Fediverseの辺境で秘密基地」 や 「SNSのソーシャルディスタンス」 がどこかでブーストされたらしくて、珍しくぷちバズった。
Followリクエストも飛んできてフォロワーさんも増えた。のと、珍しくBlockリクエストも飛んできた。記憶に間違いがなければ、これまで半年ほどやっててBlockリクエストは3度目。
届けたいところじゃないところに届いたんだなぁ…じゃなくて、ちゃんと対応を考えないといけない。ツイッターのブロックと同じ扱いで、ブロックされた該当アカウントの投稿がブーストやなんかで飛んできてもタイムラインに流さない・間違ってフォローリクエストを送ったらまずい。
てことで、ブロックされてるリストを作成して、該当アカウントを登録することにした。
おひとり様サーバーでは投稿はJSONファイルのまま、Signature検証がOKだったら、所定のフォルダに移動してるんで、その前にブロックリストを確認してそこで弾くようにした。Followリクエストも同様。
ActivityPubというプロトコル、とかいうとなんか難しそうだけど、約束事の塊とその約束事を守ることで成立している。極端な話というか乱暴な話、約束事を守る/守らないはサーバー管理者次第。
だからこそ仕様上のMUSTやSHOULDはちゃんと対応する必要がある。
久しぶりに上手く巻けた、かな。
弁当用で、出汁少なめなので失敗は少ない。ウチで食べる用だと出汁を150ccぐらい入れるんでゆるゆるで難易度があがるんだよなあ。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
SNSのソーシャルディスタンス
Twitter(X)やFacebookからFediverseに引っ越しを開始したのが7月。それからちょっとずつ移住を進めて8月にはほぼ引っ越し完了。
Fediverse生活5ヶ月弱の振り返りが今回のエントリ。
Twitter、facebookからfediverseに移住して変わったところ
1)リプライやメンションをほぼしなくなった
2)RTをほぼしなくなった
3)いいねが増えた
こうしよう、と自分の意志で決めたことじゃなくて、Fediverseの特徴というか、おひとり様サーバーのポリシー、仕様が原因。
1)
リプライは実装していない。
メンションは実装済みだけど、DM的な使い方をしたいので簡単にできるようなUIはつけてない(送りたい相手のユーザー名サーバー名をいちいち手入力する必要がある)
2)
RTが減ったのは、ActiviryPubのRTは自分の投稿としての扱いになるから。ということは、RTするためにはDBに登録する必要がある。
おひとり様サーバーではひとのデータを極力持たないという方針で、ひとの投稿をDBに取り込んだりしたくない。ので、RTとうちのおひとり様サーバーは相性が悪い。
急場しのぎで、7日間の期限付きでDBに登録。期限がきたら削除&Undoを飛ばすことにした。
3)
いいねが増えたのは、リプライ代わりでweb拍手みたいな位置づけになったからかな。リプライほど積極的じゃない、ちょっとしたリアクションを送る感じで使ってる。
瓢箪から駒とか。
このおかげでSNSでのソーシャルディスタンスが保たれることになった
ツイッターの良いところは、
ネットを通じて人と出会いがあって、人との繋がりができること。Twitterがきっかけでリアルでの繋がりにまで広がることもある。
個人でもちょっとしたメディア並みの拡散力、影響力をもつ、こともある。
その仕組として、リプライやメンションするのも手軽だし、RTも気楽にできる。
他人の投稿に対して、たとえばテレビのニュースやワイドショーを見て、テレビに向かって何かいうのと同じような気軽さじゃないかな。
リアクションしてリアクションされてるうちに、距離感を間違えてしまうことがあるような気がする。
まだ様子見かなあというお店に何回か通って
「いつも」ありがとうございます
と言われると引いてしまって足が遠のくことがあったり。
向こうから顔見知りのひとがきたので満面の笑みで手をふったら相手も手を降ってやって来た、と思ったら、おれの後ろの人に手を降って笑いかけてて、満面に笑みを貼りつけたまま通り過ぎるしかない状況だったり。
いやいや、だいたいわたしとあなたは赤の他人ですよ?
ツイッターではありがちな光景だと思う。
その点、FediverseというかActivityPubのおひとり様サーバーは、ちょっとずつ面倒くさいんで、距離感を意識することができる。
そもそもおひとり様サーバーで壁打ちと言いつつ、ActivityPubで繋がる別サーバー、リモートサーバーに投稿を投げることになっている。
ぜんぶ「よそんちのお宅」だ。まずそこで少しハードルがあがって(これでも)ちょっと「よそ行き」になっている。
もちろん、ツイッターなどで、適切な距離感を保てるなら問題ない。
なんせ億単位でひとが集まっている。情報収集や情報拡散は巨大SNSの方がメリットが大きい。
ツイッターFacebookから離れて、わたしはそちらではソーシャルディスタンスが保てないということを痛感した。いや、いい歳こいて振り回されすぎるんだよなあ。みっともない。
おひとり様サーバーは20個しか表示しない(保存しない)し、検索もできない。
でも、平穏は得られている。
コロナ禍と同じ。SNSでもソーシャルディスタンスは必要だよなぁ。
Blueskyにも登録した。AT protocol?分散型というのに興味があったから。
けどなあ、ツイッターを作って放りだした・だされたジャック・ドーシーだよ?信用できるかとなると、イーロン・マスクやマーク・ザッカーバーグと同じ穴の狢だと思う。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
おひとり様ActivityPubサーバーにLike実装
おひとり様APサーバーにもLikeを実装してみた。
自分の投稿に対するLikeはどうでもよくて、Likeされる方じゃなくて、する方の実装。
せっかくSNSだし、WEB拍手的なノリ(あれ?もしかして「Web拍手」って死語?)でポチっとできればなあ、と。
リプライ(返信する)のはちょっと厚かましい?馴れ馴れしい?恥ずかしい?空気読んで遠慮した方がいい?的なところに「WEB拍手」という控えめなリアクションは(主語を大きくすると)日本人向きの仕組みだなあ、と思う。
Likeに使うjson
{"@context": [
"https://www.w3.org/ns/activitystreams",
{"Hashtag": "as:Hashtag"}],
"type": "Like",
"id": "https://tokoroten.doncha.net/t2aki#a69b50a5-636b-11ee-83a8-d34678f16ad4",
"actor": "https://tokoroten.doncha.net/t2aki",
"object":"https://example.com/users/status/123456"}
typeがLikeのjsonで、actorは自分、objectに対象となる投稿のURLというお約束。
このjsonをお相手のエンドポイントにPOSTするだけ。他になにかが必要ということもなかった。
ブーストと違って運用的に考えなきゃいけないこともないんでサクっと実装できた。
とはいえ。
Like、イイネも承認欲求の対象、ハマると危険なので、自分の投稿に対するLikeは取得しない。
この危険はブースト(リツイート、リポスト)と同じだ。
これらに引きずられて言わなくてもいいことを言ってしまったり、デマ拡散に加担してしまったり。ロクなことはない。
SNSのもっともダメなところだ…SNSのせいにしちゃいけない。か。ひとの弱いところをつかれてしまう、ということだな。
[10/17 05:23:58]
とか言いつつ、前言撤回。
自分に対するLikeも取得するようにした。
Likeするひとにしてみたら、Likeしたのになんの反応もないんじゃ無視されてるように見えるなあ、と。とりあえずLikeについては3日間保持ということで対応。
[2024/01/11 02:32:48]
like一覧を実装してみた。
Likeしたものについては、タイムラインのJSONと違って投稿のURLだけで投稿内容はないので大丈夫だろうとそのまま保存してたら…上記したように、Web拍手的なノリでLikeをポチっとしてるので保存しているJSONが大量に溜まっていく。
ページングするのも面倒くさいんで、タイムライン同様、保存上限を設定して古いものは削除ということにした。保存期間は2週間。
一覧するのは日付と投稿のリンク。リンクを叩いてNoteのJSONをGETして表示。投稿を確認して手動でも削除できるようにした。
「いいね」するのもされるのも、その時その場、だなあ。
残しておきたいような投稿は、それこそひとり掲示板にメモしてるしね。
河童べこ。久しぶりにガチャガチャ回してる。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
おひとり様ActivityPubサーバーのjsonの実例
今さらだけど改めて。
おひとり様ActivityPubサーバーで投稿する・しゃべる時に必要になりそうなもの。
・投稿本体(Note)
・画像添付
・メンション(リプライやDM)
・ハッシュタグ(検索する/される時のキーワード設定)
投稿本体は当たり前として。
画像添付やMention、Hashtagも実装してあるので、忘れないうちにメモ…というか、ActivityPubで使うJsonの実例、exampleをメモ。ソースを見ればいいだけの話なんだけど、覚えてないことの方が多いので具体例をちゃっちゃと見られるように。
以下のJSONがウチで使ってる、上記を実装した投稿のフルセット。
投稿はCreateの中のobjectにあるNoteが本体で、その中の本文(content)はともかく、それ以外について。
{"@context":
["https://www.w3.org/ns/activitystreams",
{"Hashtag": "as:Hashtag"}
],
"type": "Create",
"id": "https://tokoroten.doncha.net/t2aki/activity/00341-20231003",
"url": "https://tokoroten.doncha.net/t2aki/activity/00341-20231003",
"published": "2023-10-03T00:01:31Z",
"actor": "https://tokoroten.doncha.net/t2aki",
"to": ["https://www.w3.org/ns/activitystreams#Public"],
"cc": ["https://tokoroten.doncha.net/t2aki/followers"],
"object": {
"type": "Note",
"id": "https://tokoroten.doncha.net/t2aki/items/00341-20231003",
"url": "https://tokoroten.doncha.net/t2aki/items/00341-20231003",
"published": "2023-10-03T00:01:31Z",
"to": ["https://www.w3.org/ns/activitystreams#Public"],
"cc": ["https://tokoroten.doncha.net/t2aki/followers",
"https://mstdn.jp/users/donbe2023"],
"attributedTo": "https://tokoroten.doncha.net/t2aki",
"content": "\u003ca href=\"https://mstdn.jp/users/donbe2023\"\u003e@donbe2023@mstdn.jp\u003c/a\u003e うちでも花を飾ることになって、駅前の花屋さんを見てると、けっこうな人が花を買っていてビックリ。ほんと、今さらだけど、世間のひとたちはカジュアルに花を買っていくんだなー。\u003ca href=\"https://tokoroten.doncha.net/tameike.pl?tag=%23%E3%81%B2%E3%81%BE%E3%82%8F%E3%82%8A\"\u003e#ひまわり\u003c/a\u003e",
"attachment":[
{"type":"Document",
"mediaType":"image/png",
"url":"https://tokoroten.doncha.net/20231003.png",
"name":null,
"blurhash":null,
"width":271,
"height":320}
],
"tag": [
{"name":"@donbe2023@mstdn.jp",
"type":"Mention",
"href":"https://mstdn.jp/users/donbe2023"
},
{"name":"#ひまわり",
"href":"https://tokoroten.doncha.net/tameike.pl?tag=%23%E3%81%B2%E3%81%BE%E3%82%8F%E3%82%8A",
"type":"Hashtag"
}
]
}
}
・画像添付
Noteのアタッチメントという配列に入る。
"attachment":[
{"type":"Document",
"mediaType":"image/png",
"url":"https://tokoroten.doncha.net/20231003.png",
"name":null,
"blurhash":null,
"width":271,
"height":320}
]
配列の中、typeがDocumentのブロックひとつが1枚の画像の情報。ウチは1枚限定なので、ブロックはひとつだけ。複数入れる場合はここに追加。
画像情報として。
・画像のURL
・画像の種類(mediaType)
・名前(たぶんAltで使われる)
・blurhash
↑ぼや〜っとしたプレビュー用のハッシュ文字列。よくわからないんで未対応。
・画像の縦横サイズ
・メンション(リプライやDM)
Noteの中の宛先「cc」にお相手のinbox、エンドポイントを追加。
"cc": ["https://tokoroten.doncha.net/t2aki/followers",
"https://mstdn.jp/users/donbe2023"]
「to」に入れるのか「cc」に入れるのか、特に決まりごとはないっぽいけど、現状これで問題なくお相手に通知が届く。
[2024/09/04 07:41:50]追記
メンションは「to」にお相手のinbox、エンドポイント、「cc」に自分のフォロワー、というのがお約束っぽい。
ただ、twitterやfacebook、あるいはLINEのように相手にだけ直接送ってそれ以外のひとに見えなくするのは無理。ActivityPubというか分散型サーバーというか。サーバー管理者はPublic指定がないものも含めて全部見ることができる。
twitterだからLINEだから安心とは言えないんだけど、なにかあった時に、抗議する先が一箇所なのか、あちこちいろいろあるのかということ。
ネットは信用しちゃいけいない(閑話休題)
[2024/09/04 07:41:50]追記
「to」にお相手のinboxだけにしておくとActivityPubの約束事として、お相手だけしか見ることができない・第三者は見ちゃいけないことになっている。この「約束事」を守ることで成り立っているのがFediverse。
Noteの中の「tag」の配列にMentionのブロックを追加。
"tag": [
{"name":"@donbe2023@mstdn.jp",
"type":"Mention",
"href":"https://mstdn.jp/users/donbe2023"
},
Mentionブロックは
・お相手の名前
・お相手の届け先(エンドポイント)
・ハッシュタグ(検索する/される時のキーワード設定)
@context": [
"https://www.w3.org/ns/activitystreams",
{"Hashtag": "as:Hashtag"}
]
ハッシュタグはActivityPubで決められたものじゃないということで「@context」に定義する必要があるらしい。
定義したら、Mentionと同じくNoteの中の「tag」の配列にHashtagのブロックを追加。
"tag": [
{"name":"#ひまわり",
"href":"https://tokoroten.doncha.net/tameike.pl?tag=%23%E3%81%B2%E3%81%BE%E3%82%8F%E3%82%8A",
"type":"Hashtag"
}
Hashtagブロックは
・タグの名前
・タグのURL
ハッシュタグは、おひとり様ActivityPubサーバーで使う意味があるか疑問。
そもそもハッシュタグは複数人で共有するもの。それをひとりしかいないサーバーで使う意味は、たぶんない。ただまあ、データベースに検索かける時にリンク一発叩けばいいだけになるので、便利っちゃ便利なので実装してみた。
仕様・規格からちゃんと読めと言われたら謝るしかできないんだけど、何をするにしても、素人なので実例、exampleが欲しいんだよなあ。
にしても、駅近くの花屋さんの盛況っぷりに驚いた。ウチに花を飾る、なんてことを自発的にやったことがなかったんで、なおさら。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」