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 常用命令:
- sftp user@ip
在 Linux 的 shell 中執行上面的命令後,Linux shell 會提示使用者輸入密碼, 輸入 password 之後就成功建立了 sftp 連線。 - help
建立連線後, Linux shell 中的 $ 變成 sftp>。 執行 help, 可以看 sftp 支援哪些命令。 - pwd 和 lpwd
pwd 是看遠端伺服器的目錄, 即 sftp 伺服器預設的當前目錄。
lpwd 是看 linux 本地目錄。 - ls 和 lls
ls 是看 sftp 伺服器下當前目錄下的內容
lls 是看 linux 當前目錄下的內容。 - put a.txt
這個是把 linux 當前目錄下的 a.txt 檔案上傳到 sftp 伺服器的當前目錄下。 - get b.txt
這個是把 sftp 伺服器當前目錄下的 b.txt 檔案下載到 linux 當前目錄下。$ get openssl-1.1.1i.tar.gz ~/
- !command
這個是指在 linux 上執行 command 這個命令, 比如!ls 是列舉 linux 當前目錄下的內容, !rm a.txt 是刪除 linux 當前目錄下的 a.txt 檔案。 這個命令非常有用, 因為在 sftp> 後輸入命令, 預設只針對 sftp 伺服器的, 所以執行 rm a.txt 刪除的是 sftp 伺服器上的 a.txt 檔案, 而非本地的 linux 上的 a.txt 檔案。 - 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
其中:
- Host 後邊的是名稱,以後可以根據這個名稱進行訪問;
- HostName 是你的主機 IP 地址;
- User 為主機登入的使用者名稱;
- IdentitiesOnly yes 固有配置;