咱們登陸服務器,無論你是經過ssh,仍是經過工具登陸,老是須要輸入用戶名和密碼,頻繁操做太浪費時間了,這個時候就要了解一下免密登陸了。java
下面主要給你們介紹一下免密登陸的步驟,跟着操做基本就能夠配置成功了,後續就能夠直接登陸服務器,不須要輸入密碼了。node
首先咱們須要在本身的本機上生成祕鑰對,在任何一個文件夾中均可以,可是最好在本身 home 目錄下中的 .ssh 文件夾中進行,這樣就能夠省掉後續將生成祕鑰對移動到這個文件夾的操做。linux
在 mac 上能夠經過 cd ~/.ssh
進入該文件夾,window 的用戶自行搜索吧。bash
進入文件夾以後,經過一下命令生成祕鑰對:服務器
ssh-keygen -t rsa -C "你本身的名字" -f "你本身的名字_rsa"
複製代碼
生成以後,你會發現多了兩個文件,一個是你本身的名字_rsa
,一個是你本身的名字_rsa.pub
,帶 pub 的是公鑰,後續須要放到服務器上,不帶 pub 的是祕鑰,須要放到 home/.ssh
下,若是上面你已經進入到這個文件夾中,那咱們不須要移動就能夠了,能夠直接跳過第二步,進行第三步的操做。若是沒進入這個文件夾,那咱們就接着往下操做配置本地祕鑰。ssh
若是第一步中你是進入本機 home 目錄下的 .ssh/ 文件夾執行的,那能夠直接跨過這一步,若是不是,須要按照說明執行這一步。工具
把第一步生成的祕鑰複製到你的 home 目錄下的.ssh/ 路徑下。能夠經過 mv XX_rsa ~/.ssh
命令,將生成的 XX_rsa
文件進行移動。spa
若是遇到問題,仍是同樣,可能權限不夠,須要將你的祕鑰文件訪問權限設置爲 600。命令行
chmod 600 你的祕鑰文件名
複製代碼
生成祕鑰對以後,咱們須要將公鑰上傳到服務器對應帳號的 home 路徑下的.ssh/中,經過如下命令便可。code
ssh-copy-id -i "公鑰文件名" 用戶名@服務器ip或域名
複製代碼
輸入完成以後須要輸入服務器密碼
上傳完成以後,登陸指定的服務器,進入到指定用戶名下的 .ssh 文件夾以後,你會發現,其中有兩個文件:
經過 cat authorized_keys
,會發現 authorized_keys 中已經存在你的公鑰了。
若是在中途遇到問題的話,咱們能夠登陸服務器,將配置公鑰文件 authorized_keys 訪問權限設置爲 600,而後再執行上面將公鑰上傳服務器的指令就能夠了。
經過如下命令能夠修改權限:
chmod 600 authorized_keys
複製代碼
祕鑰對配置好以後,咱們須要修改本地的免密配置文件。
編輯本身 home 目錄下的 .ssh/ 路徑下的 config 文件,首先須要將 config 文件的訪問權限設置爲 644。
其次經過 vi
對配置文件進行操做。配置文件中能夠配置多主機配置和單主機配置。多主機配置就是能夠經過一個祕鑰訪問多個 linux 服務器,單主機的意思就不言而喻了,一個祕鑰訪問一個 linux 服務器。
配置方式以下:
# 多主機配置
# 免密配置完成以後經過host機型登陸,ssh 具體的Host
Host java-produce
# 須要綁定到那個ip的linux服務器下
HostName IP或綁定的域名
# 端口號
Port 22
# 下面是另一個主機的配置
Host node-produce
HostName IP或綁定的域名
Port 22
# 上面主機的配置中凡是Host以-produce結尾的,都走下面的祕鑰
Host *-produce
# 登陸的用戶
User root
# 具體哪一個祕鑰文件,你本機的
IdentityFile ~/.ssh/produce_key_rsa
Protocol 2
Compression yes
ServerAliveInterval 60
ServerAliveCountMax 20
LogLevel INFO
# 單主機配置,具體某個字段什麼意思和上面多主機同樣
# 只不過不須要將主機和祕鑰的配置分開,一塊兒配置就行
Host evil-cloud
User root
HostName IP或綁定的域名
IdentityFile ~/.ssh/produce_key_rsa
Protocol 2
Compression yes
ServerAliveInterval 60
ServerAliveCountMax 20
LogLevel INFO
複製代碼
配置完 config 文件以後,試一下在命令行輸入
ssh 配置的Host名稱 # 好比上面我配置的 java-produce
複製代碼
就能夠直接訪問具體的服務器了,不須要輸入密碼的哦。