日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

SSH远程登录解析(linux)

發布時間:2024/9/30 linux 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SSH远程登录解析(linux) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一,什么是ssh?

二,SSH的兩種登錄方式剖析:

1,口令登錄:

過程:

實際操作過程:

特別注意:

2,秘鑰登錄:

過程:

實際操作過程:

三,known_host、authorized_keys、config文件

1,known_host:

2,authorized_keys:

3,config:


一,什么是ssh?

簡單說,SSH是一種網絡協議,用于計算機之間的加密登錄。

如果一個用戶從本地計算機,使用SSH協議登錄另一臺遠程計算機,我們就可以認為,這種登錄是安全的,即使被中途截獲,密碼也不會泄露。

最早的時候,互聯網通信都是明文通信,一旦被截獲,內容就暴露無疑。1995年,芬蘭學者Tatu Ylonen設計了SSH協議,將登錄信息全部加密,成為互聯網安全的一個基本解決方案,迅速在全世界獲得推廣,目前已經成為Linux系統的標準配置。

需要指出的是,SSH只是一種協議,存在多種實現,既有商業實現,也有開源實現。本文針對的實現是OpenSSH,它是自由軟件,應用非常廣泛。

?

二,SSH的兩種登錄方式剖析:

先上一張圖,對ssh的登錄方式有一個大致的了解:(都是第一次登錄時的操作)

1,口令登錄:

過程:

  • 客戶端發送請求
  • 遠程主機接收到用戶的登錄請求后,把自己的公鑰發送給用戶
  • 用戶使用這個公鑰,將密碼加密后,發送給遠程主機
  • 遠程主機利用自己的私鑰,解密登錄密碼,如果密碼正確,就同意用戶登錄
  • 實際操作過程:

    客戶端發送請求:

    $ ssh username@host (可以在config中配置,使用 ssh 別名,不需要用戶名和主機ip)$ ssh host (如果本地用戶名與遠程用戶名一致,登錄時可以省略用戶名)$ ssh -p 2222 user@host(SSH的默認端口是22,登錄請求會送進遠程主機的22端口,使用p參數,可以修改這個端口)

    如果你是第一次登錄對方主機,系統會出現下面的提示:

     $ ssh user@hostThe authenticity of host 'host (12.18.429.21)' can't be established.RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.Are you sure you want to continue connecting (yes/no)?

    這段話的意思是,無法確認host主機的真實性,只知道它的公鑰指紋,問你還想繼續連接嗎?

    (就是問你,確定接受遠程主機的公鑰嗎?)

    假定經過風險衡量以后,用戶決定接受這個遠程主機的公鑰。

      Are you sure you want to continue connecting (yes/no)? yes

    系統會出現一句提示,表示host主機已經得到認可。

     Warning: Permanently added 'host,12.18.429.21' (RSA) to the list of known hosts.

    然后,會要求輸入密碼。

      Password: (enter password)

    如果密碼正確,就可以登錄了。

    特別注意:

    當遠程主機的公鑰被接受以后,它就會被保存在文件$HOME/.ssh/known_hosts之中。下次再連接這臺主機,系統就會認出它的公鑰已經保存在本地了,從而跳過警告部分,直接提示輸入密碼。

    每個SSH用戶都有自己的known_hosts文件,此外系統也有一個這樣的文件,通常是/etc/ssh/ssh_known_hosts,保存一些對所有用戶都可信賴的遠程主機的公鑰。

    ?

    風險: 如果攻擊者插在用戶與遠程主機之間(比如在公共的wifi區域),用偽造的公鑰,獲取用戶的登錄密碼。再用這個密碼登錄遠程主機,那么SSH的安全機制就蕩然無存了。這種風險就是著名的"中間人攻擊"(Man-in-the-middle attack)

    ?

    2,秘鑰登錄:

    使用密碼登錄,每次都必須輸入密碼,非常麻煩。好在SSH還提供了公鑰登錄,可以省去輸入密碼的步驟。

    所謂"公鑰登錄",原理很簡單,就是用戶將自己的公鑰儲存在遠程主機上。登錄的時候,遠程主機會向用戶發送一段隨機字符串,用戶用自己的私鑰加密后,再發回來。遠程主機用事先儲存的公鑰進行解密,如果成功,就證明用戶是可信的,直接允許登錄shell,不再要求密碼。

    過程:

  • 用戶先在本地生成一對秘鑰,一個公鑰,一個私鑰,私鑰可以設置口令
  • 登錄前,用戶會上傳自己的公鑰,到服務器的?.ssh/authorized_keys中,注意文件夾和文件的權限。
  • 客戶端向服務器發出請求,請求用你的密匙進行安全驗證;
  • 服務器收到請求之后,先在該服務器上尋找你的公鑰,然后把它和你發送過來的公用密匙進行比較。如果兩個密匙一致,服務器就用這個公鑰加密一個隨機字符串并把它發送給客戶端;
  • 本地收到后,使用私鑰進行解密,如果生成密鑰時,加了密碼,此時需要密碼,然后將解密后的字符串發送給服務端;
  • 遠程主機得到的解密字符串與最初發送的一致,就證明用戶是可信的,直接允許登錄shell,不再要求密碼。
  • 實際操作過程:

    用戶制作秘鑰:

     $ ssh-keygen 使用默認設置也可以自定義設置$ ssh-keygen -b 1024 -t rsa -P '' -f ~/.ssh/id_rsa-b:采用長度為1024字節的公鑰/私鑰對,最長4096字節,一般1024或2048,rsa方式最短不能小于768字節長度。 -t:指定生成密鑰類型(rsa、dsa、ecdsa等),默認為SSH-2 的rsa類型; -P:指定passphrase,用于確保私鑰的安全 -f:指定存放密鑰的文件

    運行上面的命令以后,系統會出現一系列提示,可以一路回車。

    其中有一個問題是,要不要對私鑰設置口令(passphrase),如果擔心私鑰的安全,這里可以設置一個。

    如果使用的默認方式,運行結束以后,在$HOME/.ssh/目錄下,會新生成兩個文件:id_rsa.pub和id_rsa。前者是你的公鑰,后者是你的私鑰。

    最關鍵的是要留意遠程服務器上的文件和目錄的權限問題

    //~/.ssh 目錄的必須是700權限 $ chmod 700 ~/.ssh // ~/.ssh/authorized_keys 必須是600權限,, 否則ssh服務器會拒絕用戶登陸 $ chmod 600 ~/.ssh/authorized_keys

    ?

    這時再輸入下面的命令,將公鑰傳送到遠程主機host上面:

    方法一:(此種方式簡單,不需追加改文件名,但不能指定端口號,默認以22端口

    $ ssh-copy-id user@host

    方法二:

     $ ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub

    (遠程主機將用戶的公鑰,保存在登錄后的用戶主目錄的$HOME/.ssh/authorized_keys文件中。公鑰就是一段字符串,只要把它追加在authorized_keys文件的末尾就行了。公鑰登錄的設置就完成了)

    好了,從此你再登錄,就不需要輸入密碼了。

    如果還是不行,就打開遠程主機的/etc/ssh/sshd_config這個文件,檢查下面幾行前面"#"注釋是否取掉。

    RSAAuthentication yesPubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keys

    當你完成全部設置,并以密鑰方式登錄成功后,再禁用密碼登錄:

    PasswordAuthentication no

    然后,重啟遠程主機的ssh服務。

    ?

    service ssh restart

    ?

    ?

    好了此后,你就可以不需要密碼直接登錄了

    ssh user@host

    ?

    ?

    三,known_host、authorized_keys、config文件

    ?

    1,known_host:

    known_hosts, 首次登錄遠程主機時,用戶確認后,保存遠程主機發來的公鑰

    (公鑰是固定的,不是隨機改變的,因為是公鑰,可公開),之后用戶登錄就不再需要確認了。

    2,authorized_keys:

    authorized_keys, 遠程主機$HOME/.ssh/authorized_keys中,保存登錄用戶的公鑰。用于密鑰登錄(免密碼登錄)。公鑰就是一段字符串,只要把它追加在authorized_keys文件的末尾就行了。

    3,config:

    ssh client有兩個配置文件,/etc/ssh/ssh_config和~/.ssh/config,前者是對所有用戶,后者是針對某個用戶,不存在可以創建一個,兩個文件的格式是一樣的。

    ssh默認使用~/.ssh/id_rsa這個密鑰,想使用指定密鑰的兩種方法:

    1,

    ssh -i path/to/id_rsa username@server.com

    ?

    2,可以在~/.ssh/config中配置IdentifyFile,同時也可以配置用戶名、服務器地址

    Host server1HostName server.comUser usernameIdentifyFile path/to/id_rsa

    ?

    使用 ssh server1。server1 就是個別名,可以任意取名,不取也可以

    Host *github.com*User gitIdentityFile ~/.ssh/id_rsa_github

    ?

    ?

    ?

    總結

    以上是生活随笔為你收集整理的SSH远程登录解析(linux)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。