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