顯示廣告
隱藏 ✕
看板 Knuckles_note
作者 Knuckles (站長 那克斯)
標題
 [CentOS] 主機間使用公鑰免密碼登入ssh

時間 2013年09月10日 Tue. PM 12:07:36


參考
http://linux.vbird.org/linux_server/0310telnetssh.php#ssh_nopasswd

在兩台主機間互相使用ssh登入、使用scp傳檔案、或是用rsync同步檔案時
每次都要打密碼很麻煩,而且要寫成shell script時也沒辦法輸入密碼
可以改成使用金鑰的方法認証,之後就不用打密碼了

金鑰的認証方式就是使用者建立一組成對的公鑰與私鑰(像是鎖頭與鑰匙),
將公鑰放到想要登入的伺服器端,
之後登入時伺服器會檢查使用者的私鑰看能不能跟儲存的公鑰配對,
可以的話就能登入了


例如我們想要在 client-host 用使用者 knuckles
免密碼登入 server-host 的使用者 knuckles

== 在client-host端 (使用 Linux) ==

建立client-host的私鑰與公鑰

[knuckles@client-host ~]$ ssh-keygen

後面問的都不用輸入,直接按Enter用預設值即可

Generating public/private rsa key pair.
Enter file in which to save the key (/home/knuckles/.ssh/id_rsa):
Created directory '/home/knuckles/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/knuckles/.ssh/id_rsa.
Your public key has been saved in /home/knuckles/.ssh/id_rsa.pub.
The key fingerprint is:

會在使用者帳號的家目錄下產生兩個檔,分別為私鑰與公鑰
~/.ssh/id_rsa
~/.ssh/id_rsa.pub


用vim複製公鑰的內容
或是將公鑰傳給 server-host
$ scp ~/.ssh/id_rsa.pub knuckles@server-host:~


== 在server-host端 ==

在 server-host 的家目錄建一個權限為 700 的 .ssh 目錄
$ cd ~; mkdir .ssh; chmod 700 .ssh;

然後在 ~/.ssh 目錄下建立一個權限為 600 的文字檔 authorized_keys

將剛剛複製的公鑰內容貼進 authorized_keys
或是將 client-host 傳來的公鑰 id_rsa.pub 寫入 ~/.ssh/authorized_keys 檔
$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys



== 若是在 client 端為 windows 使用 pietty 登入 ==

先下載 puttygen.exe
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

產生一組公鑰和私鑰後,複製公鑰的文字,並將私鑰儲存為檔案
[圖]
 
[圖]
 
[圖]
 

在使用 pietty 時載入私鑰,點「選項」/「詳細設定」
[圖]
 
在 Connection/SSH/Auth 點 Browser 載入剛剛儲存的私鑰檔案
[圖]
 

登入 server 將剛剛複製的公鑰貼到 authorized_keys 裡

若沒有 ~/.ssh/ 目錄,自己建立一個
$ cd ~; mkdir .ssh; chmod 700 .ssh;
編輯 authorized_keys 檔
$ vim ~/.ssh/authorized_keys

修改 ~/.ssh/authorized_keys 檔案的存取權限
$ chmod 600 ~/.ssh/authorized_keys



使用 Xshell 的話參考這篇 [Xshell] Windows 下好用的 SSH 登入程式 - KnucklesNote板 - Disp BBS


◎ 設定 ssh 禁止使用密碼登入

設定好登入免密碼後,可將 ssh 設為禁止使用密碼登入,以增加安全性

$ vim /etc/ssh/sshd_config

尋找 PasswordAuthentication yes
改成 PasswordAuthentication no

$ service sshd restart



□ 問題解決記錄

scp 使用 root 時,不能用 ~ 代表家目錄,要用 /root


◎ 使用 Pietty 登入時,顯示 server refused our key
只能用輸入密碼登入
參考: http://callmepeanut.blog.51cto.com/7756998/1336864

修改 /etc/ssh/sshd_config 設定

#StrictModes yes
StrictModes no

#PubkeyAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys
AuthorizedKeysFile .ssh/authorized_keys

儲存後重啟 sshd

--
※ 作者: Knuckles 時間: 2013-09-10 12:07:36
※ 編輯: Knuckles 時間: 2017-02-12 12:43:25
※ 看板: KnucklesNote 文章推薦值: 0 目前人氣: 0 累積人氣: 4228 
※ 文章分類: Linode CentOS 架站筆記
分享網址:
r)回覆 e)編輯 d)刪除 M)不收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇