Ⅰ 【linux】SSH 使用密碼/公鑰遠程登錄總結
本文是筆者查閱網上資料做的總結,關於SSH原理,什麼是對稱加密和非對稱加密,本文不過多介紹。這里介紹一下SHH的工作過程、配製方法,可能出現的問題及解決方法。
說明:本文中涉及的例子,SSH客戶端為:本地主機A,SSH伺服器為:伺服器B
SSH協議採用C-S(客戶端-伺服器端)架構進行雙方的身份驗證以及數據的加密。
伺服器端組件監聽指定的埠,負責安全連接的建立、對連接方的身份認證、以及為通過身份認證的用戶建立正確的環境。
客戶端負責發起最初的TCP握手、安全連接的建立、驗證伺服器的身份與之前記錄中的一致、並將自己的驗證信息提供給伺服器。
一個SSH會話的建立過程分為兩個階段。第一階段,雙方溝通並同意建立一個加密連接通道以供後續信息傳輸用。第二階段,對請求接入的用戶進行身份驗證以確定伺服器端是否要給該用戶開放訪問許可權。
當客戶端發起TCP連接時,伺服器端返回信息說明自己支持的協議版本,如果客戶端上支持的協議與之匹配,則連接繼續。伺服器會提供自己的公共主機密鑰(public host key)以讓客戶端確認自己訪問的是正確的機器。
然後,雙方採用一種Diffie-Hellman演算法共同為該會話建立密鑰。每一方的一部分私有數據,加上來自對方的一部分公共數據,通過這種演算法計算,能夠得出完全相同的密鑰用於本次會話。
整個會話的通訊內容都使用該密鑰進行加密。這個階段使用的公鑰/私鑰對與用戶驗證身份用的SSH密鑰是完全無關的。
經典Diffie-Hellman演算法的計算步驟如下:
這個共享密鑰的加密方式被稱為二進制數據包協議(binary packet protocol)。該過程能夠讓雙方平等的參與密鑰生成的過程,而不是由單方掌握。這種共享密鑰生成的過程是安全的,雙方沒有交換過任何未經加密的信息。
生成的密鑰是對稱式密鑰,一方用於加密信息的密鑰等同於另一方用於解密信息的密鑰,而任何第三方由於不持有該密鑰,是無法解密雙方傳遞的內容的。
會話加密通道建立後,SSH開始進入用戶認證階段。
下一步,伺服器驗證用戶身份以決定是否准許其訪問。驗證有不同的方式,選擇的驗證方式取決於伺服器的支持。
最簡單的驗證是密碼驗證:伺服器要求客戶端輸入密碼,客戶端輸入的密碼經過上述的通道加密傳輸給伺服器。
雖然密碼是加密過的,然而該方法仍然不被推薦,因為用戶經常為了省事而使用過於簡單的密碼,而這類密碼很容易就能夠被自動化腳本破解。
最流行的驗證方式是SSH密鑰對,這也是當前最推薦的方式。SSH密鑰對是非對稱密鑰,私鑰和公鑰分別用於不同的功能。
公鑰用於加密,而私鑰用於解密。公鑰可以隨意上傳、共享,因為公鑰的流通並不會危及到私鑰的保密性。
SSH密鑰對的驗證過程起始於上一部分加密通道建立之後,其具體執行步驟如下:
簡單來說,伺服器端用公鑰加密信息,客戶端用私鑰解密信息以證明自己持有私鑰。該過程同時使用了對稱加密和非對稱加密,兩種方式各有自己的功用。
命令如下:
用戶名:為要登錄的伺服器B中已存在的用戶賬戶名
IP地址:為伺服器B的IP地址
-p 埠號:用來指定埠號,默認為22
第一次登錄時,會提示如下提示:
大概意思是說,你正在訪問的主機不能驗證它的真實性,它的RSA key(當前訪問主機的公鑰)指紋是怎樣的,你確定要繼續連接嗎?
輸入yes繼續,會提示,已永久把當前訪問主機的RSA key添加到了已知主機文件(用戶目錄下,.ssh 文件夾中的knwon_hosts文件)中。之後再次 SSH 登錄就不再有該提示了。
接著,輸入登錄賬戶的密碼即可。
SSH 密碼登錄,需要伺服器開啟密碼驗證許可權,編輯伺服器SSH配置命令如下:
在 sshd_config 文件中,Protocol 2 下面 #PasswordAuthentication yes,將前面的#號去掉,保存退出。
公鑰登錄,即免密碼登錄。避免的每次登錄都要輸入的麻煩,也防止了中間人攻擊。是SSH遠程登錄最常用的登錄方式。
提示輸入密鑰對名稱,直接回車,使用默認名稱即可;
提示輸入密碼(使用私鑰時,要輸入密碼),直接回車,不使用密碼即可。
首先,登錄伺服器B,在進行下面的操作。
找到 #PubkeyAuthentication yes,刪除 #號,保存退出。
重啟 ssh 服務
也可指定驗證私鑰:
本地主機A,生成密鑰對後:
sudo vim /etc/selinux/config
Ⅱ 如何使用SSH登錄遠程伺服器
你好,
默認配置
Windows下有很多SSH工具。在這里我是用的是Putty。如果安裝了Git並配置使用Putty的話,就不需要另外在安裝Putty了。使用SSH連接伺服器的命令如下:
ssh IP地址
一般來說為了安全性考慮,埠號等一些參數並不會使用默認值。這樣的話命令就變成這樣:
ssh 用戶名@IP地址 -p 埠號
如果連接成功的話會提示你輸入遠程伺服器的密碼。全部成功之後SSH就會顯示遠程伺服器的提示符,這時候就說明連接成功了。
密鑰登錄
每次登錄SH都需要輸入密碼很麻煩,而且可能不太安全。SSH還能使用另外一種登錄方式,也就是使用密鑰登錄。這種登錄方式需要客戶端生成一堆公鑰私鑰對,然後將公鑰添加到伺服器中,這樣下次就可以直接登錄了。
首先生成SSH密鑰,依照提示輸入信息即可。默認生成在用戶主目錄中的.ssh文件夾中。帶pub的是公鑰,接下來需要添加到伺服器中。
ssh-keygen
然後將本地公鑰添加到伺服器中,需要使用另一個命令:
scp -P 埠號 本地文件路徑 用戶名@遠程伺服器地址:遠程路徑
然後登陸伺服器,找到復制進去的公鑰,將公鑰名字改為authorized_keys並添加到對應的.ssh文件夾中。然後退出SSH重新登陸試試,成功的話不需要輸入密碼就會直接進入遠程伺服器。
Ⅲ 如何使用SSH登錄Linux伺服器
首先進入/etc目錄下,/etc目錄存放的是一些配置文件,比如passwd等配置文件,要想使用ssh遠程登陸,需要配置/etc/ssh/sshd_config文件里的配置信息,使用vim編輯,在命令行模式下輸入vim/etc/ssh/sshd_config,進入之後,按「i」進入編輯狀態,在其文件里找到並修改為:PasswordAuthentication
yes,PermitRootLogin
yes兩行即可,
修改之後,按「esc」退出,並按「:wq」保存並退出,或直接按「:x」直接保存退出,(注意:此處的x為小寫x,大寫X是將文件內容加密,使用時細心注意),
退出編輯模式之後,回到命令模式,輸入sevice
ssh
start/stop/restart/status,啟動/停止/重啟/狀態,選擇start啟動ssh服務。
如果上面開啟SSH服務的命令不能用,可以使用命令:sudo
service
sshd
start試試,檢查是否開啟SSH服務使用命令:ps
-e
|
grep
sshd
此時可以查看ssh狀態是否為運行狀態,運行狀態即可使用ssh遠程登陸。
使用「ifconfig」命令查詢ip地址
使用ssh登陸時,輸入主機(linux的ip地址),賬號,密碼登陸!
如果需要遠程連接SSH,需要把22埠在防火牆上開放,關閉防火牆,或者設置22埠例外/etc/init.d/iptables
stop
怎麼通過ssh登陸可參看下一篇「通過ssh實現遠程登陸伺服器!」
大致步驟為:
SSH
服務配置文件位置
/etc/ssh/sshd_config
#
修改配置
PasswordAuthentication
yes
PermitRootLogin
yes
#
啟動SSH
服務
sevice
ssh
start/stop/status
安裝SSH:yum
install
ssh
啟動SSH:service
sshd
start
設置開機運行:chkconfig
sshd
on
Ⅳ 如何使用ssh登錄linux伺服器
介紹如何在windows主機上通過ssh遠程登錄ubuntu操作系統,這里以虛擬機的操作系統為例講解。方法/步驟
准備工作:首先需要在windows系統中安裝虛擬機,並在虛擬機中安裝好linux操作系統,這里安裝的是vmware player虛擬機和ubuntu版本的操作系統。關於該部分的安裝在作者的其他經驗中有詳細介紹。
在windows主機中安裝上ssh軟體,ssh是Secure Shell 的縮寫,主要提供遠程登錄協議。windows下的安裝很簡單,只要下載好安裝程序,雙擊即可安裝。安裝完成後會生成兩個軟體圖標。
在ubuntu系統中安裝ssh,通常ubuntu中默認是安裝的。可以通過命令進行查看:dpkg -l | grep ssh
如果ubuntu系統中沒有安裝ssh程序,也可以使用下列命令進行安裝:
sudo apt-get install openssh-client
sudo apt-get install openssh-server
安裝好後ssh服務的啟動和停止命令如下:
啟動ssh服務:
#sudo /etc/init.d/ssh start
停止ssh服務:
#sudo /etc/init.d/ssh stop
重啟ssh服務:
#sudo /etc/init.d/ssh restart
通過虛擬機啟動ubuntu系統,打開shell終端,通過ifconfig命令,查看該系統的ip地址,ssh的埠號一般為22.
打開windows系統中的ssh客戶端軟體,選擇快速連接,輸入ubuntu系統的ip地址和賬戶名,並根據提示輸入密碼,即可通過ssh登錄到ubuntu系統中去,並執行各種命令操作。
Ⅳ 如何使用ssh登錄linux伺服器
如果只是基礎使用沒有什麼進階的要求使用Powershell的ssh命令即可,具體操作如下:
按下Windows+R組合鍵,輸入並運行powershell
在powershell中輸入「ssh 用戶名@主機IP地址」,之後輸入密碼即可
Ⅵ 2020-11-17 新買了百度雲伺服器,如何用ssh遠程登陸
購買網路雲伺服器後,網路雲會給你發送簡訊告知登陸用戶名,但一般不會通過手機簡訊將密碼發給你,所以首先要進入工作台後,滑鼠放在vnc遠程後,選擇實例設置——>重置密碼。
之後一般會需要幾分鍾重啟伺服器,顯示重置密碼中。
按照網路雲官方操作步驟是這樣的
但是呢,按照以上的操作之後,始終連不上,總是提示「用戶秘鑰未在遠程主機注冊」。
根據錯誤提示,判斷問題應該是公鑰沒在伺服器上注冊。有兩種方法可以嘗試:
1、通過管理後台的秘鑰對管理——創建秘鑰對——使用已有的公鑰——將上一步創建的公鑰內容粘貼進去,然後在綁定伺服器實例即可。
但是通過以上操作之後,仍然連不上。
2、嘗試第二種方法,直接將ssh公鑰都追加到authorized_keys文件。
先通過用戶名和密碼登陸伺服器,
然後編輯.ssh/authorized_keys 文件。
進入後,將前面創建的公鑰粘貼進去。
再連接,成功!