介紹
SSH(Secure Shell)是一項創建在應用層和傳輸層基礎上得安全協議,爲shell提供安全得傳輸和使用環境。具體協議以及服務相關知識不再贅述,下面主要介紹如何配置服務器之間的信任關係。以配置A免密登錄到B爲例
生成密鑰
在A機器上通過ssh key-gen
生成密鑰
[root@suhw ~]# eval `ssh-agent -s`
[root@suhw ~]# ssh-keygen -t rsa
若不指定存放密鑰的路徑以及名字的話,會默認生成在當前用戶家目錄下的.ssh
目錄中生成一個私鑰和一個公鑰
[root@suhw ~]# ll /root/.ssh/
-rw------- 1 root root 2590 Jun 28 15:41 id_rsa
-rw-r--r-- 1 root root 563 Jun 28 15:41 id_rsa.pub
注:不可能每次生成密鑰都覆蓋掉之前的 ~/.ssh/id_rsa
文件,建議在生成密鑰第一步時指定文件名,便於區分管理
配置公鑰
將生成的公鑰追加到B機器的authorized_keys
文件中
1、如果B機器.ssh
目錄下不存在authorized_keys
文件,則通過touch命令新建,並將權限修改爲600
[root@suhw ~]# cd ~/.ssh && touch authorized_keys && chmod 600 authorized_keys
2、將A機器生成的id_rsa.pub
公鑰追加到authorized_keys
中
相關配置
ssh
的配置文件包含以下兩個:
- ~/.ssh/config:用戶配置文件
- /etc/ssh/ssh_config:系統配置文件
其中config配置中最常用的就是管理多組密鑰對,對於多個服務器指定對應的密鑰對,可以參考如下配置
HOST host1 # 關鍵詞
User root # 登錄用戶名
HostName 10.47.119.96 # 主機名
IdentityFile /root/.ssh/host1_id_rsa # 私鑰存儲地址
HOST host2
User root
HostName 10.47.119.97
IdentityFile /root/.ssh/host2_id_rsa
有了上面的配置,當我們在A機器上執行ssh host1
時就會匹配到對應Host
的配置,相當於執行了
ssh -i /root/.ssh/host1_id_rsa [email protected]
這樣不論是ssh
還是scp
都會通過host
匹配到對應的密鑰文件進行連接,十分方便
配置項說明
- Host:執行
ssh
命令時如果匹配到該配置,例如將HOST
修改爲kylin
,在A機器上執行ssh kylin
就相當於執行了ssh -i /data/suhw/.ssh/suhw_id_rsa [email protected]
- HostName:主機地址
- IdentityFile:指定讀取的認證文件路徑
其他具體參數可參考文章最後的鏈接
FAQ
1、若遇到報錯Could not open a connection to your authentication agent.
先執行 eval`ssh-agent -s`
參考
- https://deepzz.com/post/how-to-setup-ssh-config.html