Posted on

使用GitHub 的 HTTPS 憑證拉取私有庫

為什麼不能用登入帳密拉取

使用帳密進行身份驗證存在安全風險,尤其是在命令列工具中,如果密碼被儲存或洩露,可能會導致帳戶被入侵。因此,GitHub 要求使用 HTTPS 憑證來增加安全性,並且從 2021 年 8 月 13 日起,GitHub 停止支援使用帳戶密碼進行命令列操作,改為強制使用 Personal Access Token 進行身份驗證。

兩者的區別和為什麼不能通用的原因:

登入帳密

  • 用途:用於登入 GitHub 網站,管理你的帳戶、瀏覽儲存庫、設定等。
  • 形式:一般由使用者名稱和密碼組成。

HTTPS 憑證(Personal Access Token 或 OAuth Token)

  • 用途:用於從命令列或 API 中進行身份驗證,主要用於推送和拉取程式碼等操作。
  • 形式:這是一個隨機生成的長字符串,用來替代密碼進行身份驗證。
  • 原因:使用 token 可以提供更高的安全性,因為 token 可以被限制使用範圍和存取權限,即使被洩露,也不會洩露你的完整帳戶資料。而且,你可以隨時撤銷或重新生成新的 token。

如何生成 Personal Access Token

登入 GitHub。點擊右上角的個人頭像,選擇「Settings」。

在左側欄位中選擇「Developer settings」。

選擇「Personal access tokens」。點擊「Generate new token」,設置 token 的名稱和存取權限。

生成後會顯示 token,把它複製並安全地保存,因為這是唯一能看到它的機會。

GitAhead圖形化Git工具

GitAhead 是一款用於管理 Git 儲存庫的圖形化工具,提供了直觀的界面和多種功能,適合開發者進行版本控制操作。

GitAhead 的特點

  1. 圖形化界面
    • GitAhead 提供一個直觀的圖形化界面,使得管理和查看 Git 儲存庫變得更加簡單。你可以直觀地查看分支、提交歷史、變更等。
  2. 跨平台支持
    • GitAhead 支持 Windows、Mac 和 Linux 平台,讓開發者可以在不同的操作系統上使用相同的工具。
  3. 簡單易用
    • 對於新手來說,GitAhead 提供了易於理解的操作界面,減少了學習曲線。它的直觀性使得進行常見的 Git 操作變得更加簡單。

在GitAhead中連接GitHub私有庫

Posted on

掃描某個IP所有可接受連接的PORT

Nmap 介紹

Nmap(Network Mapper)是一款免費且開源的網路安全工具,用於網路發現和安全審計。它可以使用原始 IP 封包以新穎的方式來確定網路上的哪些主機可用、這些主機提供哪些服務(應用程式名稱和版本)、它們運行的作業系統(和作業系統版本)、使用的封包過濾器/防火牆類型以及其他數十種特性。

Nmap 的使用目的

Nmap 的工作原理是向目標主機發送原始 IP 封包並分析響應。Nmap 可以使用各種技術來掃描埠、檢測服務和確定作業系統。

  • 列舉網路主機清單:Nmap 可以掃描網路並列出所有可用的主機。這對於網路管理員了解其網路上的內容非常有用。
  • 管理服務升級排程:Nmap 可用於識別正在運行的服務和版本。這對於網路管理員跟踪軟體升級和修補程式非常有用。
  • 監視主機或服務執行狀況:Nmap 可用於監視主機或服務是否可用。這對於網路管理員確保其網路正常運行非常有用。
  • 漏洞檢測:Nmap 可用於掃描主機中的已知漏洞。這對於網路管理員保護其網路免受攻擊非常有用。

Nmap 主要功能

  • 埠掃描:Nmap 可以掃描目標主機的埠以確定哪些埠已開啟、已關閉或過濾。
  • 服務檢測:Nmap 可以檢測目標主機上運行的服務。它可以識別服務的應用程式名稱、版本和協定。
  • 作業系統偵測:Nmap 可以識別目標主機的作業系統。它可以識別作業系統的類型、版本和發行版。
  • NSE 腳本:Nmap 可以使用 NSE(Nmap Scripting Engine)腳本來擴展其功能。NSE 腳本可以用於執行各種任務,例如漏洞掃描、Web 應用程式掃描和網路枚舉。

使用方式

使用以下指令來安裝套件

sudo yum install nmap

接著使用以下指令來掃描所有可連接的port

nmap -v www.hinet.net

也可以使用-A來偵測對方主機的作業系統與各種服務的版本

nmap -A scanme.nmap.org

只需各種服務的版本

nmap -sV scanme.nmap.org

相關資源

Posted on

Ubuntu 18.04的apt update更新失敗

錯誤訊息

W: Failed to fetch http://repo.mysql.com/apt/ubuntu/dists/bionic/InRelease The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 467B942D3A79BD29 W: Some index files failed to download. They have been ignored, or old ones used instead.

問題原因

這個錯誤訊息是說您的系統在嘗試從 http://repo.mysql.com/apt/ubuntu/dists/bionic/ 的軟體庫中下載軟體索引時發生了問題。這可能是由於網路連線中斷或是軟體庫網址變更所導致。

訊息中提到的 “NO_PUBKEY 467B942D3A79BD29” 表示您的系統沒有此軟體庫的公鑰,導致無法驗證下載的軟體索引是否是正確的。

解決方案

要解決這個問題,您可以試著更新系統的軟體庫並且安裝相關的公鑰。在終端機中執行以下指令:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 467B942D3A79BD29
sudo apt-get update

這個指令會從 Ubuntu 的公鑰伺服器中下載指定的公鑰,並且更新系統的軟體庫。完成後,您可以再次嘗試安裝所需的軟體,看看問題是否已經解決了。

Posted on 2 Comments

Linux 設定排程 – crontab

查看與編輯 crontab

查看自己的 crontab
crontab -l
查看指定使用者的 crontab
sudo crontab -u gtwang -l
編輯 crontab 內容
crontab -e
編輯指定使用者的 crontab
crontab -u gtwang -e
刪除 crontab 內容
crontab -r

crontab設定檔撰寫教學

# For details see man 4 crontabs

# Example of job definition:
# .—————- minute (0 – 59)
# | .————- hour (0 – 23)
# | | .———- day of month (1 – 31)
# | | | .——- month (1 – 12) OR jan,feb,mar,apr …
# | | | | .—- day of week (0 – 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

範例如下:
# 每天早上 8 點 30 分執行
30 08 * * * /home/gtwang/script.sh –your –parameter

# 每週日下午 6 點 30 分執行
30 18 * * 0 yourcommand

# 每週日下午 6 點 30 分執行
30 18 * * Sun yourcommand

# 每年 6 月 10 日早上 8 點 30 分執行
30 08 10 06 * yourcommand

# 每月 1 日、15 日、29 日晚上 9 點 30 分各執行一次
30 21 1,15,29 * * yourcommand

# 每隔 10 分鐘執行一次
*/10 * * * * yourcommand

# 從早上 9 點到下午 6 點,凡遇到整點就執行
00 09-18 * * * yourcommand

crontab設定檔的特殊字元

特殊字元 代表意義
星號(* 代表接受任意時刻,例如若在月份那一欄填入星號,則代表任一月份皆可。
逗號(, 分隔多個不同時間點。例如若要指定 3:00、6:00 與 9:00 三個時間點執行指令,就可以在第二欄填入 3,6,9
減號(- 代表一段時間區間,例如若在第二欄填入 8-12 就代表從 8 點到 12 點的意思,也就是等同於 8,9,10,11,12
斜線加數字(/n n 代表數字,這樣寫的意思就是「每隔 n 的單位」的意思,例如若在第一欄填入 */5 就代表每間隔五分鐘執行一次的意思,也可以寫成 0-59/5
Posted on

解決Windows下路徑名稱異常問題

名稱有中文或空白的問題

使用cmd指令時,有許多command line執行的工具,當路徑若出現中文或是空白時,會導致執行失敗。
例如C:\Program Files因為中間有一個空格,就很容易造成在執行時出現錯誤

若遇到這種狀況,建議可以改用資料夾的縮寫
例如
C:\PROGRA~1取代C:\Program Files
C:\PROGRA~2取代C:\Program Files (x86)

如何查找資料夾名稱縮寫

C:\Users\claire.chang>dir /x

以上圖來說,資料夾.android的縮寫即為ANDROI~1

Posted on

Linux下大檔案的log分割處理

使用指令分割大檔案

按檔案大小分割
[root@localhost]$ split -C 100M large_file.txt stxt
按行數分割
[root@localhost]$ split -l 1000 large_file.txt stxt
二進位檔案分割(以-b引數來指定分割後的檔案大小)
[root@localhost]$ split -b 100M data.bak sdata

固定時間切割LOG檔案

logrotate官方說明: https://linux.die.net/man/5/logrotate.conf

logrotate旨在簡化對生成大量日誌文件的系統的管理。它允許自動旋轉,壓縮,刪除和郵寄日誌文件。每個日誌文件可以每天,每週,每月或當文件太大時進行處理。

通常,logrotate作為日常cron作業運行。除非該日誌的標準基於日誌的大小並且每天要多次運行logrotate,或者除非使用了-f或–force選項,否則它不會在一天內多次修改日誌。

命令行上可以提供任意數量的配置文件。較新的配置文件可能會覆蓋較早的文件中提供的選項,因此列出logrotate配置文件的順序 很重要。通常,應使用包含所需其他任何配置文件的單個配置文件。有關如何使用include指令完成此操作的更多信息,請參見下文。如果在命令行上給出了目錄,則該目錄中的每個文件都將用作配置文件。

如果未提供命令行參數,logrotate將打印版本和版權信息以及簡短的使用摘要。如果輪換日誌時發生任何錯誤,logrotate將以非零狀態退出。

Continue reading Linux下大檔案的log分割處理

Posted on 2 Comments

Linux刪除檔案後空間未釋放

查詢硬碟使用狀況

[root@localhost ~]# df

使用df可以查看硬碟的使用狀況

查詢刪除卻正在被使用的檔案

lsof(lsof的全稱是list open files),此工具可以用來查看正在運行中的進程打開了哪些文件、目錄和套接字;是系統監測工具之一。
請參見: 好用的網管指令-lsof

查找打開,但是不能連接的文件
一個進程打開一個文件, 然後將其設為 unlinked 狀態, 則此文件資源仍能被進程使用, 但是其訪問路徑已經被刪除了.
因此, 使用ls不能將其列出. 只有當進程結束時, 才能釋放文件佔用的資源

查找unlinked 文件, 選項 +L, 作用: 列出打開文件的連接數

[root@localhost ~]# lsof +L


指定連接數的上限

[root@localhost ~]# lsof +L1
Continue reading Linux刪除檔案後空間未釋放
Posted on

利用netstat查詢連線數量(connections)

參數說明

netstat -a
-a 指列出所有連接埠(Port)

netstat -at
-at 指僅列出 TCP 的連接埠
netstat -au
-au 指僅列出 UDP 的連接埠

不要解析 DNS

如果不想要讓 netstat 自動解析 DNS、連接埠名稱與使用者名稱的話,可以加上 -n 參數,這樣可以加速 netstat 的執行速度:
netstat -an
Continue reading 利用netstat查詢連線數量(connections)

Posted on

Linux 檢查硬碟使用量

檢查硬碟使用量 – df

輸入df指令
df

後面的mounted on指的是這個空間是掛載在那一個分割區

查詢某個分割區的硬碟使用狀況

df /dev
上面是查詢dev這個分割區的使用狀況

改變顯示的空間單位

預設的 df 輸出會以 KB 為單位顯示磁碟用量,但是現在的硬碟容量都很大,這樣的輸出較不好閱讀。
這時可以加上-h,來用適合閱讀的方式顯示資訊

僅顯示本機磁碟

使用
df -l