歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux技術

連接Linux的服務器時使用SSH密鑰認證及解決自動斷連問題

A機器(ssh連接發起端,即客戶端):
 
添加一個測試用戶aaa
 
復制代碼代碼如下:
[root@A ~]# useradd aaa

su成aaa
 
復制代碼代碼如下:
[root@A ~]# su - aaa
[aaa@A ~]$

ssh-keygen創建rsa密鑰對
 
復制代碼代碼如下:
[aaa@A ~]$ ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key (/home/aaa/.ssh/id_rsa):       密鑰文件的保存位置
Created directory '/home/aaa/.ssh'.              默認的密鑰文件存放目錄
Enter passphrase (empty for no passphrase):              密鑰文件的保護密碼
Enter same passphrase again:
Your identification has been saved in /home/aaa/.ssh/id_rsa.              生成的私鑰
Your public key has been saved in /home/aaa/.ssh/id_rsa.pub.    生成的公鑰
The key fingerprint is:
81:d7:de:e7:cb:7c:4e:16:d6:76:da:9d:30:25:76:09 [email protected]
 
復制代碼代碼如下:
[aaa@A ~]$ ll

total 32K
drwx------  3 aaa  aaa  4.0K Sep 17 16:09 .
drwxr-xr-x  4 root root 4.0K Sep 17 16:09 ..
-rw-r--r--  1 aaa  aaa   304 Sep 17 16:09 .bash_logout
-rw-r--r--  1 aaa  aaa   191 Sep 17 16:09 .bash_profile
-rw-r--r--  1 aaa  aaa   124 Sep 17 16:09 .bashrc
-rw-r--r--  1 aaa  aaa   383 Sep 17 16:09 .emacs
drwx------  2 aaa  aaa  4.0K Sep 17 16:09 .ssh              創建出的.ssh目錄默認權限為700
 
注意生成的私鑰文件的默認權限是rw-------,即600(確保他人不能查看)
 
復制代碼代碼如下:
[aaa@A ~]$ ll .ssh/

total 16K
drwx------  2 aaa aaa 4.0K Sep 17 16:09 .
drwx------  3 aaa aaa 4.0K Sep 17 16:09 ..
-rw-------  1 aaa aaa  951 Sep 17 16:09 id_rsa         私鑰文件
-rw-r--r--  1 aaa aaa  231 Sep 17 16:09 id_rsa.pub   公鑰文件

B機器(ssh的被連接端,即服務端):
 
添加bbb用戶
 
復制代碼代碼如下:
[root@B ~]# useradd bbb

 
su成bbb
 
復制代碼代碼如下:
[root@B ~]# su - bbb

手工在家目錄下建立.ssh目錄(如果不使用ssh-keygen工具的話)
 
復制代碼代碼如下:
[bbb@B ~]$ mkdir .ssh

[bbb@B ~]$ ls -al

total 28
drwx------  3 bbb  bbb  4096 Sep 17 16:52 .
drwxr-xr-x  4 root root 4096 Sep 17 16:52 ..
-rw-r--r--  1 bbb  bbb   304 Sep 17 16:52 .bash_logout
-rw-r--r--  1 bbb  bbb   191 Sep 17 16:52 .bash_profile
-rw-r--r--  1 bbb  bbb   124 Sep 17 16:52 .bashrc
drwxrwxr-x  2 bbb  bbb  4096 Sep 17 16:52 .ssh
 
修改.ssh目錄的權限為700(非常重要!)
 
復制代碼代碼如下:
[bbb@B ~]$ chmod 700 .ssh

[bbb@B ~]$ ls -al

total 28
drwx------  3 bbb  bbb  4096 Sep 17 16:52 .
drwxr-xr-x  4 root root 4096 Sep 17 16:52 ..
-rw-r--r--  1 bbb  bbb   304 Sep 17 16:52 .bash_logout
-rw-r--r--  1 bbb  bbb   191 Sep 17 16:52 .bash_profile
-rw-r--r--  1 bbb  bbb   124 Sep 17 16:52 .bashrc
drwx------  2 bbb  bbb  4096 Sep 17 16:52 .ssh     確認權限為700
 
在.ssh目錄裡創建authorized_keys文件,並將A機器上aaa用戶的公鑰(id_rsa.pub)內容寫入此文件(關鍵操作!)
 
復制代碼代碼如下:
[bbb@B ~]$ cd .ssh/

[bbb@B .ssh]$ vi authorized_keys

粘貼aaa的id_rsa.pub內容進來
 
修改authorized_keys的權限為400(非常重要!)
 
復制代碼代碼如下:
[bbb@B .ssh]$ chmod 400 authorized_keys

[bbb@B .ssh]$ ls -l authorized_keys
-r-------- 1 bbb bbb 231 Sep 17 16:53 authorized_keys 確認權限為400

 
 
配置結束。

測試:從A機器上,在aaa用戶下,使用bbb帳號登錄B機器。
 
 
復制代碼代碼如下:
[aaa@A ~]$ ssh -l bbb xxx.xxx.xxx.xxx
Enter passphrase for key '/home/aaa/.ssh/id_rsa': 會提示輸入私鑰保護密碼(在創建密鑰對時輸的密碼,輸入正確後進入系統)
[bbb@B ~]$

 
安全的關鍵點在於如何安全地將id_rsa.pub的內容傳遞到服務端
 
 
測試完畢,清理系統(刪除測試用戶帳號及其家目錄)
 
 
A機器上,exit到root下
 
復制代碼代碼如下:
[root@A ~]# userdel -r aaa

B機器上,exit到root下
 
復制代碼代碼如下:
[root@B ~]# userdel -r bbb

PS:SSH連接自動斷開問題的解決
用putty/SecureCRT連續3分鐘左右沒有輸入, 就自動斷開, 然後必須重新登陸, 很麻煩.
在網上查了很多資料, 發現原因有多種, 環境變量TMOUT引起,ClientAliveCountMax和ClientAliveInterval設置問題或者甚至是防火牆的設置問題. 所以可以這麼嘗試:
1, echo $TMOUT
如果顯示空白,表示沒有設置, 等於使用默認值0, 一般情況下應該是不超時. 如果大於0, 可以在如/etc/profile之類文件中設置它為0.
Definition: TMOUT: If set to a value greater than zero, the value is interpreted as the number of seconds to wait for input after issuing the primary prompt. Bash terminates after waiting for that number of seconds if input does not arrive.

2. ClientAliveInterval 60
在/etc/ssh/sshd_config中增加ClientAliveInterval 60, ClientAliveInterval指定了服務器端向客戶端請求消息的時間間隔, 默認是0, 不發送.而ClientAliveInterval 60表示每分鐘發送一次, 然後客戶端響應, 這樣就保持長連接了.這裡比較怪的地方是:不是客戶端主動發起保持連接的請求(如FTerm, CTerm等),而是需要服務器先主動.
另外,至於ClientAliveCountMax, 使用默認值3即可.ClientAliveCountMax表示服務器發出請求後客戶端沒有響應的次數達到一定值, 就自動斷開. 正常情況下, 客戶端不會不響應.
 
 
3. 啟用putty keepalive
 
復制代碼代碼如下:
putty -> Connection -> Seconds between keepalives ( 0 to turn off ), 默認為0, 改為60.

 
4.SecureCRT設置反空閒
 
復制代碼代碼如下:
option->session option->Terminal->Anti-idle->Send protocol NO-OP every__seconds

每隔幾秒發送空字符串 保持鏈接不斷開

Copyright © Linux教程網 All Rights Reserved