文章目錄
- 1. 背景
- 2. ssh連接
- 2.1 win 下通過終端工具進行連接
- 2.2 Linux下通過ssh指令連接
- 2.3 ssh使用publickey來連接
1. 背景
最近開始接觸docker技術、mysql技術,加上本人工作基本都在Linux下進行,因此需要一套Linux環境進行練習。雖然本人有一臺ARM架構的Linux設備,但好多軟件沒有現成的,需要交叉編譯,影響實際的效率。思之又之,決定租賃一臺云服務器進行快速開始。
🎯 🏹 總之,為了快速實現我們的需求,選擇了 云服務器方式。
此處省略云服務器搭建過程,一般購買后,設置對應的OS,設置一下密碼,開啟對應的端口就可以進行連接了。
2. ssh連接
云服務器可以直接打開網站,在網站上通過CloudShell
進行連接,缺點是必須要進入對應的網頁。對于我們這種懶人來說,當然是在本地使用ssh遠程連接更方便的。
在使用 ssh 進行連接之前,我們需要獲取一下公網IP:
2.1 win 下通過終端工具進行連接
本人這里的終端工具是免費版的 mobaxterm
,有需要的可以進行下載 mobaxterm下載,打開軟件后,按照下面進行操作:
上面輸入IP后,點擊OK進入下面的界面,輸入用戶名和密碼后即可進行登錄
2.2 Linux下通過ssh指令連接
當我們有一臺Linux設備,或者本身就雙系統的時候,在Linux下沒有Mobaxterm軟件,想要連接云服務器的時候,就需要通過ssh
指令進行操作了:
ssh 連接的時候,直接 ssh + 公網IP 就可以了,但是初次竟然失敗了:
折騰了好久,查詢資料以及看云服務器測的失敗說明,都沒有解決問題,后面猛然間發現用戶名怎么是cat
不是我們的root
,猜測應該是繼承了我們的設備主機名,因此換一個連接方式試一下:
ssh root@xx.xx.xx.xx #后面的xx.xx.xx.xx 公網IP,前面的root是云服務器用戶名
這一次密碼輸入后一下子就連接上了。
你以為到這就結束了,no,每次進入都要輸入密碼,我還是不想輸入密碼怎么辦,請看下面我們使用publickey
來解決這個問題。
2.3 ssh使用publickey來連接
如果我們在 Linux 服務器上正確配置了免密碼登錄,也就是使用用密鑰認證代替密碼認證,就可以實現不用輸入密碼就能遠程登錄到服務器。免密碼登錄的需求主要是為了方便、安全和高效。
-
實現方式
- 在客戶機生成秘鑰對,然后把公鑰傳給遠程機
-
實現原理
- 自己的公鑰儲存在遠程主機上。當我們嘗試登錄時,遠程主機會向客戶端發送一段隨機字符串。客戶端使用自己的私鑰進行加密,并將加密后的結果發送回遠程主機。遠程主機隨后使用事先存儲的客戶端的公鑰來嘗試解密這個字符串。如果解密成功,遠程主機就會確認客戶端是可信的,并直接允許客戶端登錄到shell,無需再輸入密碼。
- 加密和解密涉及到非對稱加密算法(RSA),有興趣的可以去研究下。
-
生成秘鑰對
ssh-keygen -t rsa
中間按3次回車即可生成秘鑰對。
cat@lubancat:~$ ls ~/.ssh/ id_rsa id_rsa.pub known_hosts known_hosts.old
上面的
id_rsa
是我們生成的私鑰,id_rsa.pub
是我們的公鑰。通過
ssh-copy-id
指令將本地的公鑰傳輸到服務器端,指令格式如下:ssh-copy-id [選項] [用戶名@]遠程主機
參數說明
-i
:指定要復制的本地公鑰文件路徑,默認為~/.ssh/id_rsa.pub
。用戶名
:遠程主機上的登錄用戶名,如果省略,則使用當前本地主機的用戶名。遠程主機
:可以是遠程主機的IP地址或域名。
此處,本人使用如下指令完成公鑰傳輸:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@xx.xx.xx.xx #xx.xx.xx.xx為公網IP
# 可以使用下面的簡化指令,默認會追加,不覆蓋
ssh-copy-id root@xx.xx.xx.xx #xx.xx.xx.xx為公網IP
? 注意事項
-
如果遠程主機的
~/.ssh/authorized_keys
文件不存在,ssh-copy-id
命令會自動創建該文件。 -
確保遠程主機的SSH服務已啟動,并且允許公鑰認證登錄。
-
可以使用
cat /etc/ssh/sshd_config
指令查看是否是能公鑰認證PermitRootLogin yes PasswordAuthentication yes UseDNS no HostKeyAlgorithms +ssh-rsa PubkeyAcceptedKeyTypes +ssh-rsa #本機此處是指定使用ssh-rsa進行認證,若發現沒有開啟,執行搜索開啟
-
然后我們在服務器側查看 ~/.ssh/authorized_keys
對比本地的公鑰就知道有沒有上傳成功了。
后面我們再次連接ssh就發現不需要密碼了。
行認證,若發現沒有開啟,執行搜索開啟
```
然后我們在服務器側查看 ~/.ssh/authorized_keys
對比本地的公鑰就知道有沒有上傳成功了。
后面我們再次連接ssh就發現不需要密碼了。