Openssh 客戶端檔案ssh_config參數設定
對於資訊相關從事人員來說,SSH(Secure shell)應該一點都不會陌生,使用簡易又快速的指令或腳本進行排程、觸發、檢測或備份等工作,非常便利。
當我剛開始轉職做資訊相關工作的時候,我總覺得沒有GUI的話究竟要如何使用指令去處理或檢視電腦的相關問題或設定,然後慢慢的我理解到所有的東西都是由指令開始,GUI只是讓不習慣CLI的人可快速了解跟使用,但會增加風險跟主機負載。
在網路發展的早期使用終端機是明碼傳輸,就是說只要在網路上截取到你的傳輸資料就可以知道你的帳號密碼等等資訊,然而跟著網路的使用越來越普及,資料保密就越來越重要,於是開始了加密傳輸,所以SSH(Secure shell)就因此誕生。
使用ssh的使用因為不需要開啟太多不必要的圖形介面程式所以也相對快速、安全跟減少主機負載,但也並非沒有缺點,就是要知道的指令夠多夠熟才行,比如要使用ssh去命令伺服器去建立新的VM或CT,那指令長度就真的滿恐怖的@@,不過也可以寫好腳本之後使用漸進式的問答來完成,所以我認為SSH跟GUI並沒有絕對的好壞,而是看如何應用。
以下是將會陸續完成的關於SSH的介紹,如果有想知道但我這邊沒有說明到的也可以跟我說喔(聯結),也歡迎糾正錯誤跟討論。
-
sshd登入的方式。(密碼、憑證跟TOTP)(待補)
-
登入通知。(待補)
-
登入失敗通知與鎖定(fail2ban)(待補)
-
使用sshpass做腳本給遠端電腦下指令(待補)
-
使用ssh通道做資料備份:Rsync(待補)
-
使用ssh通道做資料備份:scp(待補)
-
使用ssh_config設定快速連線(待補)
本篇會說明ssh_config所有的參數設定,其實在我的使用設定中,我沒有使用過ssh_config,為了完成本章所以我再特別去了解一下ssh_config跟sshd_config的不同。
在Ubuntu16.04之前,我都會使用apt安裝openssh後在進行設定sshd_config,從Ubuntu18.04開始,安裝系統時我就會直接openssh,如果沒有安裝的人可以輸入
#sudo apt install openssh-client
安裝好後到/etc/ssh/資料夾中會看到一些憑證跟設定檔,
#ls /etc/ssh
這裡有很多公鑰跟私鑰還有今天要說明的ssh_config,如果你進入ssh_config看一下說明就可以知道ssh_config跟sshd_config的差異,ssh_config是用於使用端(client)的相關設定,而sshd_config是再做伺服端(service)的相關設定。
#sudo vi /etc/ssh/ssh_config
不過說真的使用到今天我是沒有設定過ssh_config,我試著去了解跟說明,如果說錯請在糾正我,謝謝︿︿
ssh_config(客戶端)的設定參數,是使用端電腦要連入伺服端電腦時會先讀取的設定,可以使用ssh -v (debug mode)去檢視連線的流程。
# ssh -v username@ipaddr
先說明預設開啟的三個參數,
- SendEnv LANG LC_*
將使用者電腦的env設定寄給伺服端電腦。
- HashKnownHosts yes
將SSH過的遠端電腦紀錄到~/.ssh/known_hosts時使用Hash function,如果不想使用可以關閉。
- GSSAPIAuthentication yes
使用GSSAPI認證登入,如果沒有使用可以關閉連線會比較快一點。
- Forwardagent no
是否開啟驗證代理。
- ForwardX11 no
是否允取開啟X11(圖形化介面)轉發。
- ForwardX11Trusted Yes
是否信任所有X11(圖形化介面)轉發。
- PasswordAuthentication yes
是否使用密碼認證。
- HostbasedAuthentication no
是否使用主機名稱認證。
- GSSAPIDelegateCredentials no
是否使用GSSAPI委託憑證。
- GSSAPIKeyExchange no
是否使用GSSAPI 金鑰交換 。
- GSSAPITrustDNS no
是否使用DNS所使用的主機名稱。
- BatchMode no
是否啟用Batch mode,啟用後會禁止提示用戶。
- CheckHostIP yes
是否檢查IP位址。
- AddressFamily any
選擇IP類型,any是都可以,inet是指IPV4,inet6是指IPV6。
- ConnectTimeout 0
指定多久(秒數)沒用使用會自動斷線,0代表不會自動斷線。
- StrictHostKeyChecking ask
主機金鑰檢查,如果選擇yes將不會將主機金鑰加入~/.ssh/known_host,而且若連線主機的金鑰有變動就會無法連線,ask則會詢問。
- IdentityFile ~/.ssh/id_rsa
使用身份認證文件路徑。
- Port 22
連線主機使用的埠位。
- Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
允許使用的加密方式。
- MACs hmac-md5,hmac-sha1,umac-64@openssh.com
允許使用的訊息鑑別碼(Message authentication code)演算法。
- EscapeChar ~
設定轉譯字符。
- Tunnel no
是否啟用Tunnel,如果啟用,使用端跟服務端將用tun設備做轉發,通常用於ssh通道的VPN。
- TunnelDevice any:any
指定使用端與客戶端之間的Tun Device。
- PermitLocalCommand no
是否允取使用本地命令替換參數。
- VisualHostKey no
是否顯示虛擬指紋。
- ProxyCommand ssh -q -W %h:%p gateway.example.com
指定連線的主機需要執行的命令。
- RekeyLimit 1G 1h
重新建立密鑰之前的最大資料傳輸量或時間。
終於完成了,本篇跟下篇都會只在一些設定參數的說明,不過像ssh_config我其實都沒設定過,所以也剛好藉由這篇花點時間了解整理,主要是參考這篇(連結)跟這篇(連結),內容有些差不多,如果有什麼不清楚或疑問的請在跟我說,謝謝喔^^
One thought on “Openssh 客戶端檔案ssh_config參數設定”