登陸Linux伺服器,四種方法
管理機:10.8.8.160
遠端主機:10.8.8.161、10.8.8.162
一、使用者名+密碼
[10.8.8.160]$ssh [email protected]輸入密碼
[10.8.8.160]$ssh [email protected]輸入密碼
二、密鑰認證
需要管理幾台就需要建立多少對密鑰公鑰,為了便于管理,針對每台主機建立不同名的密鑰
[10.8.8.160]$mkdir .ssh
[10.8.8.160]$ssh-keygen –t rsa –f /home/yuchunyun/.ssh/id_rsa.161密鑰為空直接回車
[10.8.8.160]$ssh-keygen –t rsa –f /home/yuchunyun/.ssh/id_rsa.162密鑰為空直接回車
-t 指定密鑰對類型
-f 指定密鑰對存放路徑(建議使用絕對路徑)。
會在.ssh/檔案夾下生成id_rsa.161(密鑰)、id_rsa.161.pub(公鑰)id_rsa.162(密鑰)、id_rsa.162.pub(公鑰)
[10.8.8.160]$scp .ssh/id_rsa.161.pub [email protected]
[10.8.8.160]$scp .ssh/id_rsa.162.pub [email protected]
在被管理的主機上
mkdir .ssh
cat id_rsa.161.pub >> .ssh/authorized_keys
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
必須使用此權限,否則公鑰不生效
vi /etc/ssh/sshd_config(注釋去掉)
PubkeyAuthenticationyes
AuthorizedKeysFile.ssh/authorized_keys
/etc/init.d/sshdrestart
然後在管理機上:ssh –i ./ssh/ id_rsa.161 [email protected]不用輸入密碼
ssh –i ./ssh/ id_rsa.162 [email protected]不用輸入密碼
三、密鑰+密鑰密碼認證
在二步驟過程中,建立密鑰對時輸入密碼即可,可以為每台遠端主機建立不同的密鑰密碼,也可以使用同一個密鑰密碼
在管理機上:ssh –i ./ssh/ id_rsa.161 [email protected]輸入對應的密鑰密碼
ssh –i ./ssh/ id_rsa.162 [email protected]
四、SSH代理:密鑰+密鑰密碼(但不用輸入密碼)
通過ssh-agent程序暫時把密鑰密碼儲存在記憶體中,後期再ssh就不用輸入密鑰密碼了
被管理機上
vi/etc/sss/sshd_config(注釋去掉)
AllowAgentForwardingyes
在管理機上
啟動ssh-agent守護程序指令:
[10.8.8.160]$ssh-agent bash
SSH_AUTH_SOCK=/tmp/ssh-lFDTy14894/agent.14894;export SSH_AUTH_SOCK;
SSH_AGENT_PID=14895;export SSH_AGENT_PID;
echo Agentpid 14895;
[10.8.8.160]$ps –ef | grepssh
這樣就啟動了ssh認證代理。認證代理産生UNIX套接字,該套接字被存放在/tmp/ssh-username/agent-socket-processID中。套接字名定位在環境變量SSH_AUTH_SOCK中。Secure Shell為維護認證代理安全性所做的一件事是使它隻能被使用者自身通路。然而,超級使用者可以通路它,并且如果同一個使用者啟動另外的ssh-agent程序,這可能産生問題。注意記住,運作ssh-agent将不會把你的密鑰載入記憶體。你必須用ssh-add指令自己把密鑰載入記憶體。
[10.8.8.160]$ssh-add ~/.ssh/id_rsa.161(輸入密鑰密碼)
[10.8.8.160]$ssh-add ~/.ssh/id_rsa.162(輸入密鑰密碼)
[10.8.8.160]$ssh-add –l(列出所有存儲在認證代理中的目前身份)
-h(可以檢視幫助)-d (移除身份)
停止ssh-agent
[10.8.8.160]$kill -9 $SSH_AGENT_PID或者
[10.8.8.160]$ssh-agent -k
五、ssh-agent結合keychain
由于ssh-agent是通過ssh-add把解密過的密鑰進行高速緩存,如果ssh-agent程序kill之後、或者重新登入shell,那麼密鑰密碼就從緩存中清除了,需要再把每一個遠端主機的密鑰密碼ssh-add一次
通過keychain,可自動調用ssh-agent守護程序和加載密鑰密碼
下載下傳keychain-2.6.9.tar.bz2
tar jxvf keychain-2.6.9.tar.bz2
cd keychain-2.6.9
sh keychain.sh
make
先確定ssh-agent程序不存在
cat key.sh
#!/bin/bash
/home/yuchunyun/keychain-2.6.9/keychain~/.ssh/id_rsa.161
/home/yuchunyun/keychain-2.6.9/keychain~/.ssh/id_rsa.162
/home/yuchunyun/keychain-2.6.9/keychain~/.ssh/id_rsa.163
/home/yuchunyun/keychain-2.6.9/keychain~/.ssh/id_rsa.141
/home/yuchunyun/keychain-2.6.9/keychain~/.ssh/id_rsa.156
sh key.sh (依次輸入每一個密鑰密碼)
ps -ef | grep ssh (ssh-agent程序已啟動)
echo $SSH_AGENT_PID (空)
ssh-add –l (空)
. ~/.keychain/t17.wq-sh
ssh-add –l (key.sh中定義的密鑰都已被加入緩存中)
echo $SSH_AGENT_PID (ssh-agent的程序号變量)
ssh [email protected](不用輸入密碼)
退出shell,重新登入
會發現ssh-agent程序依然存在,但echo $SSH_AGENT_PID為空,ssh-add –l為空
隻需要再執行. ~/.keychain/t17.wq-sh即可
ssh-add
-l 列出目前已緩存的密鑰
-L 列出目前已緩存的公鑰
-d /home/yuchunyun/.ssh/id_rsa.161删除某一條緩存中的密鑰
-D 删除所有緩存中的密鑰
-x 鎖定agent,需要設定“鎖密碼”(跟之前的密鑰密碼不同),鎖定之後緩存中的密鑰都失效
-X 解除agent鎖定,需要輸入“鎖密碼”
批量管理的腳本
#cd /home/yuchunyun/shell && cat clientset.sh
用戶端設定的腳本
#cd /home/yuchunyun/shell && cat clientset.sh
被連接配接的端的IP存放在host.txt
#cd /home/yuchunyun && cat host.txt
10.8.8.140
10.8.8.141
10.8.8.144
#. .keychain/t10.wq-sh
#ssh-add -l 即可發現密鑰儲存起來了