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 固有配置;