Skip to content

antony@notes:~/misc$ cat "etc-ssh-sshd-config-的說明.md"

`/etc/ssh/sshd_config` 的說明

2022-08-07· misc ·Linux

/etc/ssh/sshd_config 的說明

一、修改nano /etc/ssh/sshd_config 文件

1、修改默認端口:默認Port為22,並且已經註釋掉了;修改是把註釋去掉,並修改成其它的端口。 2、禁止root用戶遠程登陸:修改PermitRootLogin,默認為yes且註釋掉了;修改是把註釋去掉,並改成no。 3、PermitEmptyPasswords no不允許空密碼用戶login

二、ssh的公鑰認證配置: 修改vi /etc/ssh/sshd_config 文件 RSAAuthentication yes # 啟用RSA 認證(默認是註釋掉的,將註釋去掉,如果不是yes,改為yes) PubkeyAuthentication yes # 啟用公鑰認證(默認是註釋掉的,將註釋去掉,如果不是yes,改為yes) PasswordAuthentication no # 禁止密碼認證(改為no,默認為yes是用密碼認證) StrictModes no #修改為no,默認為yes.如果不修改用key登陸是出現server refused our key(如果StrictModes為yes必需保證存放公鑰的文件夾的擁有與登陸用戶名是相同的.“StrictModes”設置ssh在接收登錄請求之前是否檢查用戶家目錄和rhosts文件的權限和所有權。這通常是必要的,因為新手經常會把自己的目錄和文件設成任何人都有寫權限。)

之後重新啟動ssh服務:/etc/init.d/ssh restart

生成登陸公鑰與私鑰, [root@usousou192_168_0_21 ssh]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): /home/linden.guo/.ssh/id_rsa (生成私鑰與公鑰存放位置) Enter passphrase (empty for no passphrase): 輸入密碼 Enter same passphrase again:再次輸入密碼 Your identification has been saved in /home/linden.guo/.ssh/id_rsa. (生成的私鑰) Your public key has been saved in /home/linden.guo/.ssh/id_rsa.pub. (生成的公鑰) The key fingerprint is: 76:04:4d:44:25:37:0f:b1:a5:b7:6e:63:d4:97:22:6b root@usousou192_168_0_21

將生成的公鑰匙id_rsa.pub傳到要登陸的服務器上並追加到authorized_keys文件中,放到用戶目錄的.ssh中cat id_rsa.pub » .ssh/authorized_keys (如果沒有authorized_keys,可直接將id_rsa.pub重命名為authorized_keys,自己認為,沒有測試過)

使用putty連接ssh服務器。為了使用公鑰認證,我們需要同時下載puttygen 這個工具來生成putty 所使用的密鑰 如果你按照上面的介紹,在Linux下生成了公鑰和密鑰的話,那麼需要利用puttygen 將密鑰轉換成putty 使用的格式。將Linux下生成的密鑰id_rsa 複製到Windows 下。啟動puttygen,然後單擊Load按鈕,選擇文件類型為所有文件,然後選擇id_rsa,打開。若在生成密鑰時輸入了密碼,則打開時需要輸入該密碼(用linux生成密鑰時輸入的密碼)。之後就可以在puttygen 的主界面上單擊Save private key,保存成putty 格式的密鑰。

最好確定用戶目錄下的.ssh文件夾對於擁有者有讀寫執行的權限,最低要有執行權限,如700或者100;authorized_keys文件中有讀的權限

注:AuthorizedKeysFile .ssh/authorized_keys(認證文件的目錄與公鑰文件名稱,可以修改,並且相應目錄也要修改,如AuthorizedKeysFile .sshd/linden.guo_keys,需要在用戶目錄下建立.sshd文件夾,將linden.guo_keys文件放到下面)

三、為什麼要使用公鑰認證 通常,通過ssh登錄遠程服務器時,使用密碼認證,分別輸入用戶名和密碼,兩者滿足一定規則就可以登錄。但是密碼認證有以下的缺點:

用戶無法設置空密碼(即使系統允許空密碼,也會十分危險) 密碼容易被人偷窺或猜到 服務器上的一個帳戶若要給多人使用,則必須讓所有使用者都知道密碼,導緻密碼容易洩露,而且修改密碼時必須通知所有人 而使用公鑰認證則可以解決上述問題。

公鑰認證允許使用空密碼,省去每次登錄都需要輸入密碼的麻煩 多個使用者可以通過各自的密鑰登錄到系統上的同一個用戶 公鑰認證的原理 所謂的公鑰認證,實際上是使用一對加密字符串,一個稱為公鑰(public key),任何人都可以看到其內容,用於加密;另一個稱為密鑰(private key),只有擁有者才能看到,用於解密。通過公鑰加密過的密文使用密鑰可以輕鬆解密,但根據公鑰來猜測密鑰卻十分困難。

ssh 的公鑰認證就是使用了這一特性。服務器和客戶端都各自擁有自己的公鑰和密鑰。為了說明方便,以下將使用這些符號。

Ac 客戶端公鑰 Bc 客戶端密鑰 As 服務器公鑰 Bs 服務器密鑰

在認證之前,客戶端需要通過某種方法將公鑰Ac 登錄到服務器上。

認證過程分為兩個步驟。

會話密鑰(session key)生成 客戶端請求連接服務器,服務器將As 發送給客戶端。 服務器生成會話ID(session id),設為p,發送給客戶端。 客戶端生成會話密鑰(session key),設為q,併計算r = p xor q。 客戶端將r 用As 進行加密,結果發送給服務器。 服務器用Bs 進行解密,獲得r。 服務器進行r xor p 的運算,獲得q。 至此服務器和客戶端都知道了會話密鑰q,以後的傳輸都將被q 加密。 認證 服務器生成隨機數x,並用Ac 加密後生成結果S(x),發送給客戶端 客戶端使用Bc 解密S(x) 得到x 客戶端計算q + x 的md5 值n(q+x),q為上一步得到的會話密鑰 服務器計算q + x 的md5 值m(q+x) 客戶端將n(q+x) 發送給服務器 服務器比較m(q+x) 和n(q+x),兩者相同則認證成功 服務器端設置 使用公鑰認證需要對服務器進行一些設置。修改/etc/sshd_config 的以下配置。

RSAAuthentication yes # 啟用RSA 認證 PubkeyAuthentication yes # 啟用公鑰認證 PasswordAuthentication no # 禁止密碼認證StrictModes no #修改為no,默認為yes.如果不修改用key登陸是出現server refused our key然後重新啟動sshd。

/etc/init.d/ssh restart客戶端設置 Linux 假設客戶端的用戶charlee 要以guest 用戶登錄到服務器上。首先在客戶端執行下面的命令。

[charlee@client:~]$ ssh-keygen -t rsa Generating public/private rsa1 key pair. Enter file in which to save the key (/home/charlee/.ssh/id_rsa): Enterpassphrase (empty for no passphrase): 輸入密碼 Enter same passphrase again: 再次輸入密碼 Your identification has been sabed in /home/charlee/.ssh/id_rsa Your public key has been saved in /home/charlee/.ssh/id_rsa.pub生成的文件保存在主目錄的.ssh 目錄下,id_rsa為客戶端密鑰,id_rsa.pub 為客戶端公鑰。

之後,通過U 盤等方式將公鑰id_rsa.pub 複製到服務器上,並執行下列命令。

[guest@server:~]$ cat id_rsa.pub » .ssh/authorized_keys其中id_rsa.pub 是客戶端的用戶charlee 的公鑰。

這樣在客戶端即可通過以下的命令連接服務器。

[charlee@client:~]$ ssh -l guest server若不想每次登錄服務器時都輸入密碼,可以先執行下列命令:

[charlee@client:~]$ ssh-add Enter passphrase for /home/charlee/.ssh/id_rsa: 輸入密碼 Identity added: /home/charlee/.ssh/id_rsa (/home/charlee/.ssh/id_rsa)以後登錄服務器就不需要輸入密碼了。

Windows 假設我們使用putty連接ssh服務器。為了使用公鑰認證,我們需要同時下載puttygen 這個工具來生成putty 所使用的密鑰。

使用Linux下生成的公鑰和密鑰的情況 如果你按照上面的介紹,在Linux下生成了公鑰和密鑰的話,那麼需要利用puttygen 將密鑰轉換成putty 使用的格式。

將Linux下生成的密鑰id_rsa 複製到Windows 下。啟動puttygen,然後單擊Load按鈕,選擇文件類型為所有文件,然後選擇id_rsa,打開。若在生成密鑰時輸入了密碼,則打開時需要輸入該密碼。之後就可以在puttygen 的主界面上單擊Save private key,保存成putty 格式的密鑰。

使用puttygen生成公鑰和密鑰 你也可以利用puttygen 直接生成公鑰和密鑰。打開puttygen,然後在畫面下方的Parameters 欄選擇加密算法和加密長度(一般取默認值即可),最後單擊Generate。畫面上會出現一個進度條,在界面上隨意移動鼠標以生成隨機數。最後提示生成結束,單擊Save private key 按鈕保存密鑰。最後將上方的Public key for pasting into OpenSSH authorized_keys file欄中的內容複製到Linux 下用戶主目錄下的~/.ssh/authorized_keys 文件中。

設置putty 使用公鑰認證 先在putty中設置好連接的主機名、端口等信息(說明省略)。使用公鑰認證需要設置兩個地方:一個是Connection 中的Auto-login username,輸入在服務器上的用戶名;另一個是Connection->SSH->Auth中的Private key file for authentication,選擇剛才轉換或生成的.ppk 格式的密鑰。之後即可使用公鑰認證進行連接了。

tags: Linux