原理部分較為深奧,我將基於對linux ssh command的翻譯對ssh做一些探索,會加入一些自己的實驗和總結,主要目的在於:應用。
linux ssh command
這一頁主要是unix/linux或者mac終端的openssh ssh命令。linux的ssh 命令幾乎所有的unix和linux系統包括ssh命令。這個命令可以用來開啟ssh 客戶端程式,從而建立ssh 伺服器與遠端機器之間的安全連線。
ssh命令有以下用途:
ssh命令可以在不安全的網路中對兩個主機建立安全的加密連線。這個連線可用於終端驗證,檔案傳輸,以及與其他應用建立通道。graphical x11應用可以通過ssh命令在遠端安全執行。
其他的 ssh 命令
除了ssh客戶端命令,這裡有一些其他的ssh命令。每乙個`都有自己的page。
- ssh-keygen - 為公鑰驗證建立鑰匙對。
- ssh-copy-id - 在伺服器上配置公鑰的授權。
- ssh-agent - 用於儲存**單點登入**私鑰的**程式
- ssh-add - 新增秘鑰到**的工具
- scp - 基於rcp-like命令介面的檔案傳輸客戶端
- sftp - 基於ftp-like命令介面的檔案傳輸客戶端
- sshd - openssh 伺服器
使用linux ssh 客戶端
linux預設使用openssh客戶端。ssh命令可以登入到乙個遠端機器非常好用。為了登入到名為sample.ssh.com的遠端計算機,在shell命令列輸入下面的命令:
ssh sample.ssh.com
如果這是你第一次使用ssh連線遠端的機器,你將看到下面的資訊:
the authenticity of host 'sample.ssh.com' cannot be established.
dsa key fingerprint is 04:48:30:31:b0:f3:5a:9b:01:9d:b3:a7:38:e2:b1:0c.(或者是rsa key fingerprint is sha256:foo0a1b /bar0a1b )
are you sure you want to continue connecting (yes/no)?
輸入yes繼續。這將新增服務到你的已知host檔案中。(~/.ssh/known_hosts),會給出下面的提示資訊:
warning: permanently added 'sample.ssh.com' (dsa) to the list of known hosts.
(或者warning: permanently added 'fe.crm.test.weidiango.com' (rsa) to the list of known hosts.
)
known_hosts檔案的格式如下,以github為例:
github.com,13.229.188.59 ssh-rsa aaaab3nzac1yc2ea...
格式為網域名稱, ip位址 ssh-rsa/ssh-dsa public key
,在使用ssh登入遠端主機時,遠端主機會為你返回public key。
每乙個伺服器都有乙個host key,通過上面的與驗證相關的問題可以驗證並且儲存host key,所以下次你連線伺服器時,host key可以識別出這是相同的伺服器。
一旦連線建立,使用者就完成了認證。通常來說,它會提醒你輸入密碼。對於一些伺服器,你將輸入硬編碼的密碼。
一旦驗證通過,你將可以通過本地的終端,鍵入命令去控制遠端的機器。
指定不同的使用者名稱
可以通過命令指定不同的使用者登入:
ssh [email protected]
也可以用下面的語法表示:
ssh -l alternative-username sample.ssh.com
在伺服器上執行遠端命令
ssh命令可以在不登入的情況下執行遠端機器的命令。語法如下:
ssh hostname command
例如,執行下面的命令
ls /tmp/doc
在主機sample.ssh.com,鍵入下面的命令
ssh sample.ssh.com ls /tmp/doc
或者是
ssh [email protected] ls /etc
注意:
1.在不登入的情況下,沒次都需要輸入root使用者的密碼。
2.若不指定使用者名稱,則會登入到你本地的當前使用者名稱賬號。
例如:frankdeimac:~ frank$ ssh 192.169.33.32
會提示輸入:[email protected]'s password:
在遠端伺服器驗證完後,遠端目錄中的內容將會被展示出來,而且你將返回自己的本地shell 終端。-x 禁用disables x11**。
退出ssh登入
exit
ssh客戶端配置檔案
ssh的配置檔案位於~/.ssh/config
。可查閱ssh client configuration file。
ssh公鑰認證
ssh-keygen
以及ssh-copy-id
,macos的公鑰位於~/.ssh/id_rsa.pub
,windows的位於c:\users\username\.ssh\id_rsa.pub
。
配置埠**
可以本地**(本地埠**到伺服器的ip位址和埠)。可以遠端**(遠端埠**到客戶端的ip位址和埠)。
openssh支援通過通道裝置**unix 網域名稱socket和ip 包,從而建立vpn(virtual private network)。
ssh 命令列引數
下面是一些非常重要的openssh客戶端命令列引數。
- 1 使用第1版本的協議
- 2 使用第2版本的協議
- 4 僅使用ipv4位址
- 6 僅使用ipv6位址
- a 開啟**認證**
- a 禁用**認證**
- c 使用資料壓縮
- c cipher_spec 選擇密碼格式去加密session。
- d [bind_address:]port 動態應用級埠**。這會分配乙個套接字來偵聽本地埠。當與此埠建立連線時,將通過安全通道**連線,然後使用應用程式協議確定從遠端計算機連線的位置。
- e log_file 新增乙個debug日誌到log_file而不是標準錯誤。
- f configfile 指定使用者的ssh配置檔案,預設的位於~/.ssh/config。
- g 允許遠端主機鏈結到本地的**埠。
- i identity_file 認證檔案,公鑰檔案。
- j [user@]host[:port] 連線建立ssh連線到pjump主機(/iam/jump-host),然後建立乙個tcp **到遠端的機器。
- l login_name 指定登入到遠端機器的使用者名稱
- p 指定連線到遠端機器的埠
- q 安靜模式
- v 顯示版本號
- v冗餘模式
- x 執行x11**
乙個小歷史
ssh在1990s取到了眾多老舊的unix和linux命令列和協議。包括telnet,rlogin和rsh。
ssh執行在tcp/ip 22號埠。ssh誕生於2023年春天,這是乙個telnet和ftp被大肆使用的年代。關於ssh如果得到22號埠,有乙個很有趣的故事: how ssh got port 22
參考:
前端工程師必備之 LESS
一 為什麼要用less?作為前端學習者的我們 或多或少都要學些 css 它作為前端開發的三大基石之一,時刻引領著 web 的發展潮嚮。而 css 作為一門標記性語言,可能 給初學者第一印象 就是簡單易懂,毫無邏輯,不像程式設計該有的樣子。在語法更新時,每當新屬性提出,瀏覽器的相容又會馬上變成絆腳石,...
前端工程師必備之 typescript
型別名 anylet name string bob let age number 37 首先我們看看數字列舉,如果你使用過其它程式語言應該會很熟悉。enum direction如上,我們定義了乙個數字列舉,up使用初始化為1。其餘的成員會從1開始自動增長。換句話說,direction.up的值為1...
母雞與前端工程師
1 新聞說,2016年全國高校畢業生達到空前的756萬,又趕上很多傳統行業壓縮產能,就業壓力很大。很多曾經的 明星專業 都已經就業困難。我考大學的時候,國際 是最熱門的專業之一,大家認定這個專業容易賺錢。但是現在這個專業的畢業生,想找乙份好工作會很難,上海將它列入10大預警專業,即最難就業的十個專業...