1 前提條件
- 主機A,用戶名為aris,IP地址為192.168.1.1
- 主機B,用戶名為leon,IP地址為192.168.1.2
- 這兩台主機上均安裝了SSH服務器,且已經打開ssh服務;
- 檢查主機上有沒有安裝SSH服務,使用命令:
ssh
- 若提示命令未找到,則需要安裝ssh服務;步驟如下:輸入
sudo apt-get update
命令以實現更新Ubuntu系統–>輸入sudo apt-get install openssh-server
命令以安裝ssh- 若輸出ssh命令的使用說明,則代表已經安裝了。
- 檢查主機上有沒有啟動SSH服務,使用命令:
service --status-all | grep ssh
- 若服務已經啟動的話,可以看到
[+] ssh
- 若服務還沒啟動的話,可以看到
[-] ssh
- 啟動ssh服務,使用命令
sudo service sshd start
2 主機A利用ssh免密登錄主機B
(1)在主機A上生成rsa密鑰對
在命令行下輸入命令:ssh-keygen -t rsa
,所有提示均按回車默認。

在這里插入圖片描述
之后你會發現在用戶的家目錄下回自動生成一個隱藏的文件夾“.ssh”,里面會有兩個文件,分別是id_rsa和id_rsa.pub。

在這里插入圖片描述
- id_rsa是本機的私鑰,在使用ssh協議向其它主機傳輸數據前,主機會使用該私鑰對數據進行加密;
- id_rsa.pub是本機的公鑰,因為ssh協議采用非對稱加密法(公鑰可以用來解密使用私鑰進行加密的數據,同樣,私鑰也可以用來解密公鑰進行加密的數據),所以主機一般將該公鑰放到其它需要遠程登錄到的主機的ssh服務器中;
(2)將主機A上生成的公鑰傳到主機B中
有兩種方法:
一是使用命令:
- 在主機A的命令行上執行
ssh-copy-id leon@192.168.1.2
,就可以將主機A上生成的公鑰傳到主機B中。
二是手動操作:
- 首先在主機A上執行命令
scp .ssh/id_rsa.pub leon@192.168.1.2:~/home
,命令執行成功后會將主機A的公鑰傳到主機B的家目錄里。 - 切換到主機B,命令行執行
cat ~/home/id_rsa.pub >> ~/.ssh/authorized_keys
,將主機A的公鑰添加到主機B的授權列表中。
(3) 主機A上重啟ssh服務
完成以上2步之后,在主機A上重啟ssh服務后即可免密碼登錄主機B了
- 在主機A上執行命令
sudo service ssh restart
- 再執行
ssh leon@192.168.1.2
,你會發現已經免密登錄了。
在這里插入圖片描述 - 說明:圖中輸入的命令是
ssh leon@ubuntu
,為何不是IP地址呢?
這是因為我們在/etc/hosts
文件中指定了ubuntu的ip地址為192.168.1.2
3 主機B利用ssh免密登錄主機A
- 道理是一樣一樣的,只需要將主機B的公鑰添加到主機A的授權列表中即可達到免密登錄的目的。在此,就不再演示了。
4 彩蛋——配置別名,一鍵登錄
- 有些“懶人”可能會說,每次使用ssh命令登錄的時候,都要輸入遠程主機的用戶名、IP地址,挺麻煩的。有沒有好的辦法,能輸一個簡單的命令就好了呢?
- 答案,是肯定的!因為科技就是懶人創造的。
想要達到的目的:主機A下鍵入“ssh mac”就可以免密登錄到主機B
(1)主機A命令行下打開config文件
- 執行命令
vim ~/.ssh/config
,創建或打開ssh配置文件
(2)在config文件中添加如下內容:
Host mac
HostName 192.168.1.2
User leon
Port 22
(3)保存內容后退出
現在,你就可以愉快的登錄了。當然,此處的mac你可以根據自己的喜好,隨意指定;User、HostName根據你需要連接的遠程端主機確定。
獲取更多知識,請點擊關注: