ssh 遠端登入免密碼 with RSA
當凍仁還是專題生時,Shawn 學長曾提過 ssh 可用金鑰連線,這樣就不怕會被鎖在家門外,那時有用個登入三次失敗帳號會上鎖的機制,最近凍仁才知道這用到了大學資訊安全課堂上提過的公開金鑰加密 (RSA 演算法),也就是先將公開金鑰 (public key) 給對方,之後的通訊將透過此 public key 加密,之後再用私鑰 (private key) 解密。
1. 建立 RSA 金鑰。
2. 新增 public key 至遠端 Server。
3. ssh 免密碼遠端登入。
切記 id_rsa 要妥善保管,不然會被闖空門。
接下來可以用 rsync 之類的小程式寫一堆 Shell scripts 來異地備份,凍仁是都會先將 Server 的 $PS1 跟 Client 來點顏色區別,才不會發生關錯機的烏龍事件。
近來遇到權限問題,同時也是超容易忽略的問題!
不然在 putty 上會有「Server refused our key」拒絕金鑰的錯誤訊息,至於要不要 restorecon 就不確定了。
預設權限 (umask) 的部份 CentOS 5 為 0002,而 Debian 6 則是 0022,看出來了嘛?這在手動建立的情形下會差很多!看了下表以後就會知道為什麼 Debian 可以無痛免 key 登入了!
當遠端 Server 的家目錄 ($HOME) 的 file-system 權限 (permission) 大於 755 時也會造成無法使用之情形。
如果以上操作後還是遇上無法正常使用 ssh key 登入的話,不妨再次確認一下 server 上的 ~/.ssh/authorized_keys 是否設置正確,凍仁前幾天才在 OpsWorks 上踏到第 2 把 key 沒有正確換行的雷。
密碼學與網路安全一書簡報。 |
1. 建立 RSA 金鑰。
jonny@client:~$ ssh-keygen -t rsa [Enter]
# PubkeyAuthentication: RSA key for SSH2
Generating public/private rsa key pair. Enter file in which to save the key (/home/jonny/.ssh/id_rsa): [Enter] Created directory '/home/jonny/.ssh'. Enter passphrase (empty for no passphrase): [Enter] Enter same passphrase again: [Enter] Your identification has been saved in /home/jonny/.ssh/id_rsa. Your public key has been saved in /home/jonny/.ssh/id_rsa.pub. The key fingerprint is: 37:e7:80:1a:77:fe:85:ea:12:7a:ef:bf:b3:ca:11:b8 jonny@debian The key's randomart image is: +--[ RSA 2048]----+ | | | | | | | o | | . S * . | | +.= * . | | ..E.o o . | | . o. +.. | | . =Bo=+ | +-----------------+ # id_rsa.pub = public key. # id_rsa = private key.
2. 新增 public key 至遠端 Server。
jonny@client:~$ cat .ssh/id_rsa.pub | ssh \
jonny@server.exmample.tw "cat - >> .ssh/authorized_keys" [Enter]
# jonny = user name.
# server.exmample.tw = Domain name or IP address.
3. ssh 免密碼遠端登入。
jonny@client:~$ ssh server.exmample.tw [Enter]
接下來可以用 rsync 之類的小程式寫一堆 Shell scripts 來異地備份,凍仁是都會先將 Server 的 $PS1 跟 Client 來點顏色區別,才不會發生關錯機的烏龍事件。
2011-01-05
近來遇到權限問題,
- 目錄 $HOME/.ssh/ 必須為 drwx------
- 檔案 $HOME/.ssh/authorized_keys 必須為 -rw-r--r--
不然在 putty 上會有「Server refused our key」拒絕金鑰的錯誤訊息,至於要不要 restorecon 就不確定了。
預設權限 (umask) 的部份 CentOS 5 為 0002,而 Debian 6 則是 0022,看出來了嘛?這在手動建立的情形下會差很多!看了下表以後就會知道為什麼 Debian 可以無痛免 key 登入了!
Type | CentOS | Debian |
---|---|---|
Directory | drwxrwxr-x | drwxr-xr-x |
File | -rw-rw-r-- | -rw-r--r-- |
2015-08-25
當遠端 Server 的家目錄 ($HOME) 的 file-system 權限 (permission) 大於 755 時也會造成無法使用之情形。
# 700: work
jonny@server:~$ $ ls -l /home/ [Enter]
total 4
drwx------. 10 jonny jonny 4096 Aug 24 08:59 jonny
# 750: work
jonny@server:~$ $ ls -l /home/ [Enter]
total 4
drwxr-x---. 10 jonny jonny 4096 Aug 24 08:59 jonny
# 755: work
jonny@server:~$ $ ls -l /home/ [Enter]
total 4
drwxr-xr-x. 10 jonny jonny 4096 Aug 24 08:59 jonny
# 775: not work
jonny@server:~$ $ ls -l /home/ [Enter]
total 4
drwxrwxr-x. 10 jonny jonny 4096 Aug 24 08:59 jonny
# 777: not work
jonny@server:~$ $ ls -l /home/ [Enter]
total 4
drwxrwxrwx. 10 jonny jonny 4096 Aug 24 08:59 jonny
# 若有更動過 sshd_config 裡的 authorized_keys 路徑,則其上層目錄的 file-system 權限皆需留意一下 。
2016-11-10
如果以上操作後還是遇上無法正常使用 ssh key 登入的話,不妨再次確認一下 server 上的 ~/.ssh/authorized_keys 是否設置正確,凍仁前幾天才在 OpsWorks 上踏到第 2 把 key 沒有正確換行的雷。
相關連結:
★公開鑰匙密碼學與 RSA 簡報 by 密碼學與網路安全
★Debian Reference - 6.9.3. Connecting without remote passwords
★Debian 參考手冊 | 9.5.3 以少許密碼連線 – RSA
★Putty 的 Server refused our key | richliu`s blog
★檔案預設權限:umask | 鳥哥的私房菜
這篇好棒,看完簡報後整整上了一課
回覆刪除感謝分享~
只不過是以前上課的簡報罷了,只不過格式還會跑掉有點對不起大家 XDD
回覆刪除太感謝了!原來我遇到了權限問題!試了超多次的說...,感動得快哭了,謝謝~
回覆刪除恭喜!Enjoy it ~
刪除