歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> 關於Unix >> Linux服務器之間怎麼樣SSH不需密碼

Linux服務器之間怎麼樣SSH不需密碼

日期:2017/3/6 15:50:01   编辑:關於Unix
軟硬件環境: 兩台 linux 服務器 A和B 都編譯安裝上最新版的openSSH(建議) openSSH的默認設置是允許root可以直接login. (PermitRootLoginyes),暫且保留這種設置,我們先考慮如何用SSH直接從A到B不需要密碼,假設用用戶root登錄到A,想SSH到B也作為root不需要
  軟硬件環境:
  兩台linux服務器A和B
  都編譯安裝上最新版的openSSH(建議)
  
  openSSH的默認設置是允許root可以直接login. (PermitRootLoginyes),暫且保留這種設置,我們先考慮如何用SSH直接從A到B不需要密碼,假設用用戶root登錄到A,想SSH到B也作為root不需要密碼。
  
  1。分別從A和B上登錄作為root後運行ssh-keygen,目的是簡單地在/root下創建目錄.ssh,當提示輸入
  passphase時打入兩次回車。這將生成/root/.ssh/identity and/root/.ssh/identity.pub
  
  2。 先測試一下,從A登錄作為root,打入#ssh B,會要求提示root password。
  
  3。 現在從A登錄作為root,運行scp /root/.ssh/identity.pubB:/root/.ssh/authorized_keys。
  文件名必須不能弄錯。
  
  4。現在再從A運行#ssh B則不需要密碼了:)
  
  基本原理:
  1。 如果你希望從A作為用戶user1 SSH 到B 作為用戶user2,若要用RSA鍵對法認證且不需要密碼,則B上的ssh後台程序拿出~user2/.ssh/authorized_keys中的與A有關的RSA公鑰來對A上的以user1身份運行的ssh客戶程序進行挑戰,前面我們已經把A上的identity.pub拷貝到B上作為authorized_keys了。則A保持私鑰identity,而B上的sshd又拿出A的公鑰來挑戰,因此成功,你可以加很多行到authorized_keys以允許其它服務器的公鑰可以加進來。
  
  常見應用舉例:
  1。 在A上以用戶rootSSH到B上作為普通用戶user而不是root,因為為了安全,有時不需要作為root,只需要作為普通用戶不需要密碼以完成相應工作即可。
  
  登錄作為root在A上
  A# scp /root/.ssh/identity.pub href="mailto:user@B:/home/user/.ssh/authorized_keys">user@B:/home/user/.ssh/authorized_keys
  
  2. tar一批文件從A到B。
  A# tar cvf - /etc | ( ssh B tar xvf -)
  
  3. 運行A上的cronjob,對某文件作改動後傳到B
  0 1 * * * cat /etc/shadow | awk -F: '{print $1":"$2}' | (ssh B 'cat >/home/passwd')
  
  常見問題:
  1。 這種方式的SSH需要B上的sshd_config中允許直接的root login (PermitRootLoginyes).
  2. 我有服務器A和其它服務器B,C,D。我想從ASSH到這些服務器但不要自動,最好輸入RSA passphase,但太麻煩,怎麼辦?
  a. 要A上運行ssh-keygen時輸入passphase字。
  b. 要登錄到A上後運行A#ssh-agent bash
  c. 再運行ssh-add加passphase進入內存
  d. 再運行ssh B or SSH C or SSH D,則不再需要密碼,密碼對只需輸一次
  
  e. 最後退出shell前輸入ssh-agent -k 。

Copyright © Linux教程網 All Rights Reserved