1. 程式人生 > 其它 >Centos免密登陸

Centos免密登陸

證書登入:

這裡說的證書其實就是金鑰. 在非對稱加密中, 金鑰分為公鑰和私鑰. 私鑰, 即金鑰所有人持有. 公鑰則公佈給他人. 公鑰和私鑰成對使用, 互相解密. 公鑰加密資料只能用私鑰解密; 私鑰加密則只能用公鑰解密(驗證)

證書登入原理:

金鑰對生成後, 公鑰儲存於遠端伺服器. 登入時遠端伺服器向客戶端傳送隨機字串, 客戶端以私鑰加密後返回伺服器, 伺服器再以公鑰解密. 解密成功則證明客戶端合法, 允許登入,生成的金鑰僅對當前使用者有效. 

SSH免密碼原理

1、client向Server 發出連線請求,

2、Server 端向client發出自己的公鑰

3、client使用Server端的公鑰加密通訊金鑰然後發給Serve端

4、如果通訊過程被截獲,由於竊聽者即使獲知公鑰和經過公鑰加密的內容,但不擁有私鑰依然無法解密(RSA演算法)

5、 Server端接收到密文後,用私鑰解密,獲知通訊金鑰

/root/.ssh目錄存放檔案清單:

authorized_keys:存放遠端免密登入的公鑰,主要通過這個檔案記錄多臺機器的公鑰
id_rsa : 生成的私鑰檔案
id_rsa.pub : 生成的公鑰檔案
know_hosts : 已知的主機公鑰清單
如果希望ssh公鑰生效需滿足至少下面兩個條件:
1) .ssh目錄的許可權必須是700
2) .ssh/authorized_keys檔案許可權必須是600

1.建立公鑰私鑰:

ssh-keygen -t rsa

ssh-keygen是一個用來生成和管理ssh金鑰的工具

-t引數用於指定金鑰型別, 或者說加密演算法. 本次使用rsa演算法. 除此以外還有rsa1, dsa可選

2、將本地公鑰寫入authorized_keys. 目錄下多出一個檔案authorized_keys

3、將其他機器的公鑰拷貝到伺服器authorized_keys檔案中:

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

.常用以下幾種方法:
通過ssh-copy-id的方式 

1、ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

2、scp -p ~/.ssh/id_rsa.pub 10.0.1.4:/root/.ssh/authorized_keys

然後執行以下命令來將公鑰匯入到~/.ssh/authorized_keys這個檔案中 $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

 

 

 

 

設定禁用密碼登入

sudo vim /etc/ssh/sshd_config

# 禁止密碼登入。原先為PasswordAuthentication yes
PasswordAuthentication no    

# 禁止 root 登入,看情況是否需要。原先為PermitRootLogin yes
PermitRootLogin no 

service restart sshd.service 

證書登陸:

如果使用證書登陸需要下載私鑰

home/.ssh下私鑰id_rsa下載到本地

sftp 常用命令:

    1. sftp user@ip
      在 Linux 的 shell 中執行上面的命令後,Linux shell 會提示使用者輸入密碼, 輸入 password 之後就成功建立了 sftp 連線。
    2. help
      建立連線後, Linux shell 中的 $ 變成 sftp>。 執行 help, 可以看 sftp 支援哪些命令。
    3. pwd 和 lpwd
      pwd 是看遠端伺服器的目錄, 即 sftp 伺服器預設的當前目錄。
      lpwd 是看 linux 本地目錄。
    4. ls 和 lls
      ls 是看 sftp 伺服器下當前目錄下的內容
      lls 是看 linux 當前目錄下的內容。
    5. put a.txt
      這個是把 linux 當前目錄下的 a.txt 檔案上傳到 sftp 伺服器的當前目錄下。
    6. get b.txt
      這個是把 sftp 伺服器當前目錄下的 b.txt 檔案下載到 linux 當前目錄下。
      $ get openssl-1.1.1i.tar.gz ~/
    7. !command
      這個是指在 linux 上執行 command 這個命令, 比如!ls 是列舉 linux 當前目錄下的內容, !rm a.txt 是刪除 linux 當前目錄下的 a.txt 檔案。 這個命令非常有用, 因為在 sftp> 後輸入命令, 預設只針對 sftp 伺服器的, 所以執行 rm a.txt 刪除的是 sftp 伺服器上的 a.txt 檔案, 而非本地的 linux 上的 a.txt 檔案。
    8. exit 和 quit
      退出。

SSH 設定別名訪問遠端伺服器

使用 cd ~/.ssh/ 進入 ssh 目錄,會看到有 config、known_hosts 兩個檔案,一般沒有設定的話,只會有 known_hosts,可以使用 touch config 命令建立 config 檔案。
使用 vim 編輯 config 檔案,新增如下內容(或直接只用 cat >> 新增內容):
cat >>~/.ssh/config<<EOF
Host xxx1
HostName 192.168.100.101
User root
IdentitiesOnly yes

Host xxx2
HostName 192.168.100.102
User root
IdentitiesOnly yes

Host xxx5
HostName 192.168.100.103
User root
IdentitiesOnly yes
EOF

其中:

    1. Host 後邊的是名稱,以後可以根據這個名稱進行訪問;
    2. HostName 是你的主機 IP 地址;
    3. User 為主機登入的使用者名稱;
    4. IdentitiesOnly yes 固有配置;