CentOS生成秘鑰
ssh-keygen -t rsa
用這個指令生成私鑰和公鑰,在輸入檔案名稱和密碼後,會在目前目錄裡面生成一個[filename]、[filename].pub檔案。其中.pub檔案是公鑰檔案,這個key可以用到任意使用者中,如果需要放到root使用者放到/home目錄下,建立.ssh檔案夾,并把自己的key放到authorized_keys上面即可,記得增加相關通路授權,詳細指令如下:
ROOT使用者
cd ~
mkdir .ssh
echo filename.pub >> ~/.ssh/authorized_keys
chmod 755 ~/.ssh
chmod 644 ~/.ssh/authorized_keys
非ROOT使用者
adduser yohoph
cd /home/yohoph
mkdir .ssh
echo filename.pub >> /home/yohoph/.ssh/authorized_keys
chown yohoph.yohoph /home/yohoph/.ssh -R
chown yohoph.yohoph /home/yohoph/.ssh/authorized_keys -644
開啟public_key支援
vi /etc/ssh/sshd_config
重點修改配置項
#開啟pubkey登入
PubkeyAuthentication yes
#禁用使用者名密碼登入
PasswordAuthentication no
重新開機服務
service sshd restart
檢視登入日志
tail /var/log/secure
用戶端(xshell)登入
先把上面的私鑰下下來,也就是[filename]
工具-->使用者密鑰管理者-->導入
設定連接配接會話
重點是登入驗證裡面使用PublicKey,選擇指定的使用者名,剛才導入的密鑰和對應的密鑰密碼即可使用
其他Linux用戶端登入
将私鑰拷貝進到目前作業系統伺服器:my17_rsa
#使用my17_rsa進行登入
[[email protected] .ssh]# ssh -i my17_rsa [email protected]
Enter passphrase for key 'my17_rsa':
如果想去掉-i 使用預設檔案,需要将檔案存入/home/.ssh/檔案中,并将檔案命名為id_rsa,這樣SSH的時候預設會讀這個檔案
使用ssh-agent免密碼登入
使用ssh-agent,儲存id_rsa密鑰到目前會話,下次使用ssh的時候,可以免密碼登入。
#将目前的密鑰添加到ssh-agent中
[[email protected] .ssh]# ssh-add
Could not open a connection to your authentication agent.
#如果無法正常識别ssh-agent,可以補充一個操作
[[email protected] .ssh]# eval $(ssh-agent)
Agent pid 7427
#接着可以正常使用了
[[email protected] .ssh]# ssh-add
Enter passphrase for /root/.ssh/id_rsa:
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
[[email protected] .ssh]# ssh [email protected]
Last login: Thu Jul 26 13:49:53 2018 from 192.168.10.17
[email protected]:~#
但是由于ssh-agent在每次登入的時候都會使用一個新的會話,每次都需要重新add一遍。但是如果這樣的話,我們就失去了免密碼登入的意義了。這樣有兩個思路來解決這個問題。1,優化ssh-agent登入方式,去掉每次開新視窗的時候使用一個新的ssh-agent,使用同樣的環境變量
使用keychain配置免密碼登入
普通版本的CentOS直接使用yum安裝就可以了。
yum install keychain
CentOS7下面官方源下并沒有這個keychain,需要安裝擴充源來安裝keychain
rpm -Uvh http://packages.psychotic.ninja/7/base/x86_64/RPMS/psychotic-release-1.0.0-1.el7.psychotic.noarch.rpm
yum --enablerepo=psychotic install keychain
添加環境變量
vi ~/.bash_profile
使用chain儲存private-key。注意:我這次測試的時候發現,chain-key需要帶着公鑰一起用,一起放到id_rsa旁邊,以id_rsa_pub命名即可
#儲存id_rsa
keychain $HOME/.ssh/id_rsa
#重新整理配置
source $HOME/.keychain/$HOSTNAME-sh
添加配置項中,每次進入會話時,自動重新整理配置
#passwordless to centos7
/usr/bin/keychain $HOME/.ssh/id_rsa
source $HOME/.keychain/$HOSTNAME-sh
結束
好了,剩下的就OK了。以一個成功的指令結尾
[[email protected] ~]# ssh [email protected]
Last login: Thu Jul 26 15:11:29 2018 from 192.168.10.1
[email protected]:~#