在Linux下設置最簡單的ssh安全自動登錄

A爲本地主機(即用於控制其他主機的機器) ;

  B爲遠程主機(即被控制的機器Server), 假如ip爲172.24.253.2 ;

  A和B的系統都是Linux

  在A上的命令:

  # ssh-keygen -t rsa (連續三次回車,即在本地生成了公鑰和私鑰,不設置密碼)

  # ssh [email protected] "mkdir .ssh;chmod 0700 .ssh" (需要輸入密碼)

  # scp ~/.ssh/id_rsa.pub [email protected]:.ssh/id_rsa.pub (需要輸入密碼)

  在B上的命令:

  # touch /root/.ssh/authorized_keys2 (如果已經存在這個文件, 跳過這條)

  # cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys2 (將id_rsa.pub的內容追加到 authorized_keys2 中)

  回到A機器:

  # ssh [email protected] (不需要密碼, 登錄成功)

  如果能保護好自己的私鑰, 這種方法相對在shell上輸入密碼, 要安全一些

  深入一點點:

  從表面上簡單的理解一下登錄的過程,

  首先 ssh-keygen -t rsa 命令生成了一個密鑰和一個公鑰, 而且密鑰可以設置自己的密碼

  可以把密鑰理解成一把鑰匙, 公鑰理解成這把鑰匙對應的鎖頭,

  把鎖頭(公鑰)放到想要控制的server上, 鎖住server, 只有擁有鑰匙(密鑰)的人, 才能打開鎖頭, 進入server並控制

  而對於擁有這把鑰匙的人, 必需得知道鑰匙本身的密碼,才能使用這把鑰匙 (除非這把鑰匙沒設置密碼), 這樣就可以防止鑰匙被了配了(私鑰被人複製)

  當然, 這種例子只是方便理解罷了,

  擁有root密碼的人當然是不會被鎖住的, 而且不一定只有一把鎖(公鑰), 但如果任何一把鎖, 被人用其對應的鑰匙(私鑰)打開了, server就可以被那個人控制了

  所以說, 只要你曾經知道server的root密碼, 並將有root身份的公鑰放到上面, 就可以用這個公鑰對應的私鑰"打開" server, 再以root的身分登錄, 即使現在root密碼已經更改!

  如果想控制n個機器, 那就需要n對鑰匙(密鑰和公鑰), ssh-keygen 命令可以隨意更改鑰匙對的名字, 比如:

  [root@wwy .ssh]# ssh-keygen -t rsa

  Generating public/private rsa key pair.

  Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/id_rsa_192.168.102.12

  ......

  這樣私鑰和公鑰的名字分別就是:

  id_rsa_192.168.102.12 和 id_rsa_192.168.102.12.pub

  然後將 id_rsa_192.168.102.12.pub 文件的內容, 追加到sever的 ~/.ssh/authorized_keys2 文件中,

  最後, 在本地用ssh命令的 -i 參數指定本地密鑰, 並登錄:

  # ssh -i /root/.ssh/id_rsa_192.168.102.12 192.168.102.12

  如果密鑰設置了密碼, 就用密鑰的密碼登錄, 沒設密碼, 就直接登錄進去了

  scp也是一樣的

  來源:chinaunix 作者:wwy

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章