SSH登入使用2FA驗證

Ubuntu 跟 RHEL 的設定方法大同小異:

  • Ubuntu: sudo apt install libpam-google-authenticator
  • RHEL: sudo yum install -y google-authenticator qrencode

步驟1

google-authenticator 產生所需的設定檔。

產生出來的檔案會在 ~/.google_authenticator

步驟2

設定 /etc/pam.d/sshd

加入

auth required pam_google_authenticator.so

步驟3

在 SSHD 設定檔 /etc/ssh/sshd_config 裡找到 ChallengeResponseAuthentication ,將其後的值改為 yes

ChallengeResponseAuthentication yes

修改完成後,重新啟動 sshd。

有陷阱!!

大致就這樣,在 RHEL8 會踩到 SELinux 的雷,這邊要修改 /etc/pam.d/sshd 的設定,將之前加入的那行改為

auth required pam_google_authenticator.so secret=/home/${USER}/.ssh/.google_authenticator

然後把 ~/.google_authenticator 檔案搬到 ~/.ssh/google_authenticator

處理一下 SELinux 權限

restorecon -Rv ~/.ssh/google_authenticator

然後一樣,重新啟動 sshd

圖形介面

參考資料裡的後半段有關於 GUI 登入的設定,這邊我就沒試過了。

參考資料

電影流水帳(2022/04/01~2022/04/15)

BLACK WIDOW
Yelena
  • Black Widow (IMDB, Wikipedia),台譯:黑寡婦。
  • Shang-Chi and the Legend of the Ten Rings (IMDB, Wikipedia),台譯:尚氣。

Black Widow

期待很久的故事,可惜之後因為角色設定的緣故,可能不會有續集了。故事是在內戰之後所發生的,那時黑寡婦 Natasha 幫助美國隊長,所以被通緝。在通緝跑路時,她遇到之前被設定為妹妹的 Yelena,兩人重聚,大打一場,然後 Natasha 發現以前黑寡婦這個組織還存在,妹妹 Yelena 也才剛脫離組織掌握。

在很久以前,Natasha 為了脫離黑寡婦組織,出賣了黑寡婦組織首腦的形蹤給神盾局,因此而脫離。但組織現在還存在?! Natasha 決定跟 Yelena 找出真相,開始循線追蹤。她們找到之前被設定為父親跟母親的家庭成員,然後了解了整個真相,在家庭會議之後,她們決定聯手摧毀黑寡婦這個組織,避免再有更多女孩受害。於是,她們設下陷阱,故意被抓走,才知道黑寡婦這組織總部在空中的一個堡壘。經過一番惡鬥之後,終於把之前假死的黑寡婦首腦消滅。黑寡婦組織所有人都脫離了控制,大伙躲了起來,看起來是 Natasha 跟 Yelena 協力運作這組織的樣子。

然後片尾的彩蛋接續到無限之戰跟終局之戰那邊,Natasha 掛了,Yelena 在悼念 Natasha 時,有個人前來跟她接觸就沒了。

Shang-Chi and the Legend of the Ten Rings

故事蠻輕鬆的,穿插的笑點不錯,基本上是個愛情故事,真正的主角不是尚氣,而是尚氣的父親-文武。

尚氣逃家以後來到美國,在美國做泊車小弟,認識了 Katy,成了好朋友,他們關係像是友達以上,戀人未滿那種。某天,兩人搭公車上班時,尚氣被攻擊,身上一個首飾被搶走,因為這樣,尚氣顯露了他的功夫,Katy 大為吃驚。尚氣當下決定回去澳門找妹妹夏靈,因為夏靈身上也有一個首飾。尚氣跟 Katy 回到澳門,很快的就找到夏靈,尚氣跟夏靈打了一架,打完說明事情經過。接著兩人又被襲擊,被老爸的人帶回家裡。這時,兩人才知道老爸太愛媽媽,有點失心瘋,一直以為媽媽還活著,是在媽媽老家那邊的一個被封印的山洞裡。拿尚氣跟夏靈的首飾就是為了要找到媽媽的老家,進而打破那山洞,救回媽媽。

尚氣跟夏靈聯手搶先回到媽媽老家,跟媽媽家族的人碰面,說明父親將會過來。沒多久父親就帶人過來開打了,文武手上有十環,果然厲害,突破重圍打開了山洞,山洞裡被封印的怪物跑了出來,文武這時才認清事實。文武將十環傳給了尚氣以後,就死去。尚氣使用了十環跟媽媽家族這邊的力量,將怪物消滅,恢復和平。

vim錄按鍵順序

這用 Google 查好幾次了,決定記錄一下。

在使用 vim 編輯時,難免會遇到重複性很高的工作,vim 有個功能,就是可以錄製按鍵順序。錄製完成以後,可以再次播放剛剛錄製的按鍵順序,這樣就可以省下很多苦工。

要開始錄製,先確定在 normal mode 下,按下 q ,接著按下 a ,這個 a 是 register 的意思,簡單的說,是個代號,表示把按鍵順序放到 a 這個 register 裡。如果你要錄製其他按鍵順序,可以用 b, c, d, e … 以此類推。

接下來,就是要按下你要記錄的按鍵順序,例如移到行首,換掉第一個字元等等的。

等到順序都錄製完了,回到 normal mode ,按下 q 停止錄製。

之後要播放按鍵順序時,就是按下 @ ,然後按下 a ,這就表示要播放 a register 裡的按鍵順序。要重複播放上一次的按鍵順序,用 @@ ;要重複播放 20 次,就用 20@

參考資料

電影流水帳(2022/03/16~2022/03/31)

Bag Genius 模犯生 - Poster 01
  • ฉลาดเกมส์โกง (IMDB, Wikipedia),台譯:模犯生。
  • The Addams Family (IMDB, Wikipedia),台譯:阿達一族 (動畫)。

ฉลาดเกมส์โกง

第一次看是在轉台到公視的時候看到的,一看就停不下來,但後來還是中斷了,我忘了是什麼原因。之後隔了好久,才在 Netflix 上看完。故事聽說是拿 2014 年的真實事件改編的,整部電影很精彩,沒有冷場。

琳是個模範生,很聰明,成績很好,家裡經濟環境並不優渥,因為父親的堅持,到了知名的私校上課。到私校上課後,認識了 Grace 跟 Grace 男友 Pat,透過 Grace 跟 Grace 男友,也明白了學校背地裡的行徑。於是她接受了 Pat 的提議,收取現金幫助 Pat 跟他朋友們作弊,然後把錢存下來,想要拿這些錢來唸書,以便改善家裡狀況。一開始很順利,但後來因為班而出事了,班是學校另外一個資優生,他去告訴校長說有人作弊。經過調查以後,琳被抓到,失去某個校外考試的資格,也不再作弊。

Pat 的父母很有錢,覺得 Grace 很不錯,自從 Pat 跟 Grace 在一起以後,成績變好了,於是就想把他們兩個送出國一起唸書。Grace 跟 Pat 自知不是這個料,只好再去找琳幫忙,請他幫忙考試。琳本來是不願意的,但後來看到時鐘,靈機一動想到可以到另外一個時區的國家考試,再把考題答案傳送回來,就可以了。再加上自己也想出國唸書,所以他就要 Pat 跟 Grace 去找人,藉著提供答案來收取費用。但是一個人是不夠的,琳想到可以找班來幫忙,同樣需要錢改善家境的班答應了。經過一番準備後,兩人一同前往澳洲赴考。赴考的這段過程真的是緊張刺激,班後來被逮到,琳最後是完成任務。班後來回國,拿到錢,琳卻不要這筆錢了,也不再跟 Grace 還有 Pat 聯絡。

結局是阿班走偏了,勒索琳繼續參與作弊。我還以為他是要找琳一起開補習班,這樣也符合他所說的,可以賺到更多錢,也造福更多學生。琳後來得到父親的諒解與支持,去自首了,這樣波及範圍很大,Grace跟 Pat 應該就會被退學了吧。這樣的結局讓人唏噓不已~

The Addams Family

Addams 一家人在鎮上不被歡迎,鎮上一個房仲業務,應該是吧,不喜歡 Addams 一家人的房子,就很惡劣的散佈了謠言,慫恿鎮民去欺負 Addams 一家人。

Addams 家的男孩要成年了,找了眾多親戚來舉辦這個成年禮,但男孩一直沒練成家族的軍刀舞,覺得沮喪,父親也覺得在家族裡有壓力。到了成年禮當天,家族的人到了,鎮民也到了,一場兵荒馬亂的情況下,男孩改以自己熟悉的爆炸技能展示了自己已經成年了,同時也救了大家。鎮民們也明白了 Addams 一家人是很 nice 的,是有人挑撥離間 。最後就是一個快樂結局,Addams 一家人融入了鎮民的生活,被毀壞的家園也在鎮民幫忙下復原了。

tcpdump小記

以前蠻排斥用 tcpdump 的,因為終端機模式下不容易去看,所以我都是寫到檔案以後,再傳出來用 wireshark 去看。

寫到檔案去,就是用 -w 參數指定要寫入的檔案。下面這行就是監聽 eth0 上的 port 80 封包,然後寫到 /tmp/capture.pcap 檔案。

tcpdump -i eth0 -w /tmp/capture.pcap port 80

昨天查文件學到另外一招,可以在終端機模式下看的方式,用 -X 參數印出 16 進位內容,用 -v 表示要看詳細的內容,越多 v 就越詳細。

tcpdump -i eth0 -vvX

參考資料

microk8s+okd web console

看到這篇:Running the OpenShift console in plain Kubernetes

剛好手頭上有 microk8s ,就裝來試試看。

環境

使用 Ubuntu 22.04

步驟

先安裝 nodejs 16,注意,17 以後的版本因為用了 OpenSSL3 ,所以編譯過程會有錯誤。

curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt-get install -y nodejs

取得 web console 原始碼

git clone https://github.com/openshift/console.git

進入 console 資料夾,進行編譯

./build.sh

再來是啟動

先檢查 default 這個 service account 有沒有 token,這個 service account 是在 kube-system 這個 namespace 裡。

kubectl get serviceaccount default --namespace=kube-system -o jsonpath='{.secrets[0].name}'

如果沒有,就建立 token

kubectl create token default -n kube-system

複製輸出結果,然後建立 secret

kubectl create secret generic default-token-0621 --from-literal=token=<前面的輸出結果>

好了以後,編輯 service account

kubectl edit secret default-token-0621 -n kube-system

在 yaml 裡加入 secrets

apiVersion: v1
kind: ServiceAccount
metadata:
  name: default
  namespace: kube-system
secrets:
- name: default-token-0621

給權限

kubectl create clusterrolebinding default-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default

最後要啟動了,因為我是用 microk8s ,先取得 kubeconfig

microk8s config > ~/.kube/config
export KUBECONFIG=~/.kube/config
source ./contrib/environment.sh
./bin/bridge

預設會啟動在 :9000

電影流水帳(2022/03/01~2022/03/15)

https://flic.kr/p/RbRaQ8
Scarlett Johansson
  • The Perfect Score (IMDB, Wikipedia),台譯:極速A計劃。
  • อ้าย..คนหล่อลวง (IMDB, Wikipedia),台譯:騙騙愛上你。

The Perfect Score

看美國隊長跟黑寡婦他們年輕的樣子,挺有趣的。有幾個學生想要得到好的 SAT 成績,所以就共謀去偷考卷,故事就是他們策劃與偷考卷的過程。在過程中,慢慢揭露了他們偷考卷的背後原因。到了最後,他們也沒用這份考卷來考試,反而在這樣的過程裡,認清了自己想要什麼,幾個人也結為好友。

อ้าย..คนหล่อลวง

一個銀行僱員-伊娜被前男友 Petch 騙走了錢,她很不甘心。沒多久她遇上一個騙子-塔文,他們決定交換條件,合力去騙她前男友,想討回之前的錢。故事就是這樣的過程,在後半的時候,峰迴路轉,塔文本來利用完伊娜要閃人了,後來卻發現自己愛上了伊娜,所以決定幫到底。最後的時候,將計就計的讓前男友 Petch 入局,一行人順利拿到錢,讓故事以喜劇落幕。

這部蠻好看的,有笑有淚。

在Windows 2019 安裝 OpenSSH server

資料來源:微軟-安裝 OpenSSH

我找不到 GUI 怎麼裝,最後是開 PowerShell 終端機來安裝

檢查是否有安裝

Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

安裝

預設就會安裝 OpenSSH client 了,執行這兩行會需要一點時間,我有遇到錯誤訊息,說安裝失敗,但再執行一次就可以了。

# Install the OpenSSH Client
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

# Install the OpenSSH Server
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

啟動、設定與開防火牆

用 Start-Service 就可以啟動,用 Set-Service 設定為自動啟動,後面落落長的 if 是檢查,這段檢查,可以開設定裡的防火牆來看,不用執行也可以。

# Start the sshd service
Start-Service sshd

# OPTIONAL but recommended:
Set-Service -Name sshd -StartupType 'Automatic'

# Confirm the Firewall rule is configured. It should be created automatically by setup. Run the following to verify
if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) {
    Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."
    New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
} else {
    Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."
}

ssh 與 scp

若要連進來,用 ssh 即可,這邊要注意,當 ssh 進去以後,打的指令不是 linux 指令喔,是 windows 指令。

ssh <user>@<windows-2019>

因為 Windows 路徑跟 Linux 不一樣,所以不能用之前 linux 的方式來複製,得這樣用

scp my_file "john@<windows-2019>:C:\\Users\\John\\"

結語

有了 OpenSSH server ,要遠端管理或複製檔案變得方便許多,以後安裝完 Windows 要順手裝上。

參考資料

podman如何使用registry mirror

之前弄好 registry mirror,因為是用 docker,所以需要調整的設定檔是 /etc/docker/daemon.json

那在 podman 裡,該怎麼設定呢?

這部份可以參考 /etc/containers/registries.conf 裡面的說明,然後在 /etc/containers/registries.conf.d 資料夾裏面加上新的設定檔就可以。

例如可以在 /etc/containers/registries.conf.d/my-mirror.conf 加入以下內容

[[registry]]
location = "docker.io"

[[registry.mirror]]
location = "192.168.11.2:6000"
insecure = true

依照行號說明如下:

  1. [[registry]] 必須要加
  2. location = "docker.io" 是表示,遇到 docker.io 時,就要參考這裡的設定。
  3. [[registry.mirror]] 這是表示下面要寫 registry mirror 設定了。
  4. location = "192.168.11.2:6000" 是表示 registry mirror 的位置。
  5. insecure = true 是表示不要檢查這座 registry mirror 的 SSL 憑證。

設定完以後,在 podman pull docker.io/<image> 的時候,實際就會到 registry mirror 拉取 容器映像 ,由 registry mirror 再去決定是否到外面的 docker.io 拉取容器映像。

參考資料

Compiler Explorer

在某個推文上看到的網站 – Compiler Explorer https://godbolt.org/,但我忘了來源。

網站打開以後,左邊貼程式碼,右邊會即時顯示出編譯後的低階語言,支援蠻多語言的。這對想搞清楚底層怎麼處理的開發者來說很方便,可以透過這個網站即時的看到結果,進而調校程式碼。