ssh遠程訪問
A. 【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
B. 如何通過SSH遠程連接計算機
命令格式: ssh [-p port] user@remote
user 是在遠程機器上的用戶名,如果不指定的話默認為當前用戶
remote 是遠程機器的地址,可以是 IP/域名,或者是 後面會提到的別名
port 是 SSH Server 監聽的埠,如果不指定,就為默認值 22
ssh 這個終端命令只能在 Linux 或者 UNIX 系統下使用
如果在 Windows 系統中,可以安裝 PuTTY 或其它遠程 連接軟體即可
在工作中,SSH 伺服器的埠號很有可能不是 22,如果遇到這種情況就需要使用 -p 選項,指定正確的埠號,否則無法正常連接到伺服器。相關內容黑馬程序員軟體測試的基礎班都有,你要想學的話,基礎班有活動的話還免費。有人帶著之後基本上自己就有方向了。
C. linux下怎麼連接遠程ssh
步驟如下:
1、查詢安裝SSH服務
(1)登陸linux系統,打開終端命令。輸入 rpm -qa |grep ssh 查找當前系統是否已經安裝
D. 怎樣使用ssh實現從外網到內網的伺服器遠程登錄
在內網通過域名綁定伺服器,外網SSH訪問連接時,通過域名的訪問,實現訪問內網LINUX。 具體的實現過程如下: 明確LINUX伺服器內網訪問地址埠,確保LINUX伺服器正常開啟SSH服務,在內網SSH可以正常訪問連接。 被訪問端的Linux主機上使用nat123動態域名解析Linux版本。 在被訪問端的Linux伺服器安裝nat123客戶端,並登錄使用它。 登錄網頁,左側用戶中心,添加域名解析,選擇動態域名解析並添加確認。 選擇動態域名解析記錄,使用二級域名,或自己的域名。滑鼠放在輸入框有向導提示。如不理解負載均衡,不要勾選多點登錄。 新添加動態解析後,等待幾分鍾生效。解析生效後,動態解析域名與本地公網IP是保持對應的。可以通過ping下域名核實,返回結果IP地址為本地公網IP地址時,表示動態解析生效正常。 路由器埠映射,路由映射SSH訪問22埠。 因為公網IP是在路由器上的,外網訪問時,需要經過路由,需要在路由器上做埠映射,將內網LINUX伺服器訪問22埠打通。路由器埠映射位置:轉發規則/虛擬伺服器/添加允許外網訪問埠和協議。我的LINUX伺服器SSH服務埠是默認的22,我內網對應LINUX伺服器主機的內網IP地址是192.168.1.29。 外網訪問時,使用動態解析域名。
E. ssh服務掛了,怎麼遠程連接伺服器
如果能夠ping通,只能表示路徑可以達到,
你或許可以採用telnet {hostname} 22埠,看看是否可以出現一些字元,顯示正常連接,
1. 如果這個不可以,
需要查詢一下伺服器是否允許訪問22埠,
服務端打開和允許訪問.
防火牆段(如果有的話)
網路正常映射或者開放到可以允許訪問的地址上(對於遠程訪問)
2. 如果可以的話,
ssh軟體問題
更換軟體
系統問題檢查 ,更換另外一台計算機登陸
可以
你的系統有問題
不可以,
問題很嚴重,無法解決了.不過你可以讓機房重裝試試看
F. 如何通過ssh遠程登錄linux系統
通過ssh遠程登錄linux系統步驟如下:
1、啟動軟體,點擊快速連接,我們要選擇連接的協議。
G. SSH原理 and SSH遠程登錄
Secure Shell(SSH) 是由 IETF(The Internet Engineering Task Force) 制定的建立在應用層基礎上的安全網路協議。它是專為遠程登錄會話(甚至可以用Windows遠程登錄Linux伺服器進行文件互傳)和其他網路服務提供安全性的協議,可有效彌補網路中的漏洞。通過SSH,可以把所有傳輸的數據進行加密,也能夠防止DNS欺騙和IP欺騙。還有一個額外的好處就是傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。目前已經成為Linux系統的標准配置。
SSH只是一種協議,存在多種實現,既有商業實現,也有開源實現。本文主要介紹OpenSSH免費開源實現在Ubuntu中的應用,如果要在Windows中使用SSH,需要使用另一個軟體PuTTY。
SSH之所以能夠保證安全,原因在於它採用了非對稱加密技術(RSA)加密了所有傳輸的數據。
傳統的網路服務程序,如FTP、Pop和Telnet其本質上都是不安全的;因為它們在網路上用明文傳送數據、用戶帳號和用戶口令,很容易受到中間人(man-in-the-middle)攻擊方式的攻擊。就是存在另一個人或者一台機器冒充真正的伺服器接收用戶傳給伺服器的數據,然後再冒充用戶把數據傳給真正的伺服器。
但並不是說SSH就是絕對安全的,因為它本身提供兩種級別的驗證方法:
第一種級別(基於口令的安全驗證):只要你知道自己帳號和口令,就可以登錄到遠程主機。所有傳輸的數據都會被加密,但是不能保證你正在連接的伺服器就是你想連接的伺服器。可能會有別的伺服器在冒充真正的伺服器,也就是受到「中間人攻擊」這種方式的攻擊。
第二種級別(基於密鑰的安全驗證):你必須為自己創建一對密鑰,並把公鑰放在需要訪問的伺服器上。如果你要連接到SSH伺服器上,客戶端軟體就會向伺服器發出請求,請求用你的密鑰進行安全驗證。伺服器收到請求之後,先在該伺服器上你的主目錄下尋找你的公鑰,然後把它和你發送過來的公鑰進行比較。如果兩個密鑰一致,伺服器就用公鑰加密「質詢」(challenge)並把它發送給客戶端軟體。客戶端軟體收到「質詢」之後就可以用你的私鑰在本地解密再把它發送給伺服器完成登錄。與第一種級別相比,第二種級別不僅加密所有傳輸的數據,也不需要在網路上傳送口令,因此安全性更高,可以有效防止中間人攻擊。
SSH分為客戶端 openssh-client 和伺服器 openssh-server,可以利用以下命令確認電腦上是否安裝了客戶端和伺服器。
如果只是想遠程登陸別的機器只需要安裝客戶端(Ubuntu默認安裝了客戶端),如果要開放本機的SSH服務就需要安裝伺服器。
首先確認ssh-server是否已經啟動了
如圖,sshd 表示ssh-server已經啟動了。如果沒有啟動,可以使用如下命令啟動:
停止和重啟ssh服務的命令如下:
接下來就可以進行使用客戶機遠程登錄伺服器了~
口令登錄非常簡單,只需要一條命令,命令格式為: **ssh 客戶端用戶名@伺服器ip地址 **eg:
如果需要 調用圖形界面程序 可以使用 -X 選項
如果客戶機的用戶名和伺服器的 用戶名相同 ,登錄時 可以省略 用戶名。
還要說明的是,SSH服務的 默認埠是22 ,也就是說,如果你不設置埠的話登錄請求會自動送到遠程主機的22埠。我們可以使用** -p 選項來修改埠號**,比如連接到伺服器的1234埠:
客戶機必須要知道伺服器的 ip地址 。可以在伺服器端電腦上利用** ifconfig** 命令查看該機的ip地址:
如果是第一次登錄遠程主機,系統會給出下面提示:
意思是,該遠程主機的真實性無法確定,其公鑰指紋為 SHA256:s8pZiuKQr7k7f+57j22lk/IdWC8143VQKR+EabeP5,確定想要繼續連接嗎?
輸入yes 即可。這時系統會提示遠程主機被添加到已知主機列表。
然後會要求我們輸入 遠程主機的密碼 ,輸入的密碼正確就可以成功登錄了。命令提示符會修改為遠程主機的提示符,現在開始,終端中輸入的命令都將在伺服器中執行。
我們可以通過** Ctrl+D** 或者 exit 命令 退出遠程登錄 。
每次登錄遠程主機都需要輸入密碼是很不方便的,如果想要省去這一步驟,可以利用密鑰對進行連接,還可以提高安全性。
1、在本機生成密鑰對
使用ssh-keygen命令生成密鑰對:
ssh-keygen -t rsa #-t表示類型選項,這里採用rsa加密演算法
然後根據提示一步步的按enter鍵即可(其中有一個提示是要求設置私鑰口令passphrase,不設置則為空,這里看心情吧,如果不放心私鑰的安全可以設置一下),執行結束以後會在 /home/當前用戶 目錄下生成一個 .ssh 文件夾,其中包含私鑰文件 id_rsa 和公鑰文件 id_rsa.pub。
2、將公鑰復制到遠程主機中
使用ssh--id命令將公鑰復制到遠程主機。ssh--id會將公鑰寫到遠程主機的 ~/ .ssh/authorized_key 文件中
ssh--id [email protected]
經過以上兩個步驟,以後再登錄這個遠程主機就不用再輸入密碼了。
1)已獲取登錄實例的管理員帳號及密碼(或密鑰)。
2)雲伺服器實例已開通22號埠。
—使用密碼登錄
Host Name(or IP address) :伺服器的IP地址;
Port :伺服器的埠,必須設置為22;
Connect type :選擇 「SSH」;
Saved Sessions :填寫會話名稱,例如 test。 配置 「Host Name」 後,再配置 「Saved Sessions」 並保存,則後續使用時您可直接雙擊 「Saved Sessions」 下保存的會話名稱即可登錄伺服器;
登錄完成後,命令提示符左側將顯示當前登錄雲伺服器的信息。
—使用密鑰登錄
Ps: 當不存在私鑰文件時,可以選擇Conversions > Import key 導入公鑰(.pem)文件來生成私鑰文件(.ppk)
Host Name (IP address) :伺服器的IP;
Port :伺服器的埠,必須填 22;
Connect type :選擇 「SSH」;
Saved Sessions :填寫會話名稱,例如 test。 配置 「Host Name」 後,再配置 「Saved Sessions」 並保存,則後續使用時您可直接雙擊 「Saved Sessions」 下保存的會話名稱即可登錄伺服器;
登錄完成後,命令提示符左側將顯示當前登錄伺服器的信息。
H. 請教如何用ssh連接遠程伺服器
目前,遠程連接伺服器的類型有以下幾種:
① 文字介面的明文傳輸:Telnet、RSH為主,很少用到。
② 文字介面的加密傳輸:以SSH為主,已經取代了上面的明文傳輸方式。
③ 圖形介面:XDMCP、VNC、XRDP等較為常見。
這篇文章只為實戰,不為普及概念性知識。所以我只講解在工作中最常用到的技術SSH。關於SFTP技術和VNC技術,請查閱我的其他博客。
好,先來看一下SSH的相關技術:
SSH,英文全程是Secure Shell Protocol(安全的殼程序協議)。SSH是現在公司基本上都在使用的一種文字介面的加密傳輸技術,採用的是非對稱秘鑰系統。
對於SSH的原理,你們可以參考我的另外一篇博客,我把鏈接貼在這里:
SSH原理
⑴來吧,我們先來查看一下sshd這個服務(這就是SSH的遠程連接必須開啟的服務,屬於系統自帶),注意,一般這個sshd服務是默認自動開啟的。
注意:切記authorized_keys這個文件的許可權必須是644
I. 如何使用SSH登錄遠程伺服器
Windows下有很多SSH工具。在這里用的是Putty。如果安裝了Git並配置使用Putty的話,就不需要另外在安裝Putty了。使用SSH連接伺服器的命令如下:ssh IP地址
一般來說為了安全性考慮,埠號等一些參數並不會使用默認值。這樣的話命令就變成這樣:
ssh 用戶名@IP地址 -p 埠號
如果連接成功的話會提示你輸入遠程伺服器的密碼。全部成功之後SSH就會顯示遠程伺服器的提示符,這時候就說明連接成功了。
每次登錄SSH都需要輸入密碼很麻煩,而且可能不太安全。SSH還能使用另外一種登錄方式,也就是使用密鑰登錄。這種登錄方式需要客戶端生成一堆公鑰私鑰對,然後將公鑰添加到伺服器中,這樣下次就可以直接登錄了。
首先生成SSH密鑰,依照提示輸入信息即可。默認生成在用戶主目錄中的.ssh文件夾中。帶pub的是公鑰,接下來需要添加到伺服器中。
ssh-keygen
然後將本地公鑰添加到伺服器中,需要使用另一個命令:
scp -P 埠號 本地文件路徑 用戶名@遠程伺服器地址:遠程路徑
然後登陸伺服器,找到復制進去的公鑰,將公鑰名字改為authorized_keys並添加到對應的.ssh文件夾中。然後退出SSH重新登陸試試,成功的話不需要輸入密碼就會直接進入遠程伺服器。