一、介紹
1、SSH(22端口)是Secure Shell Protocol的簡寫,由IETF網絡工作小組(Network Working Group)制定;在進行數據傳輸之前,SSH先對聯機數據包通過加密技術進行加密處理,加密后在進行數據傳輸。確保了傳遞的數據安全。SSH服務支持安全認證機制,就是密鑰登錄,這種方式是比較安全的登入方式。本文將實際操作在服務器中創建新用戶,同時使用密鑰進行登錄(免密碼)。
2、客戶端使用iterm2 和 FinalShell進行遠程連接,服務器系統為CentOS7.4。
3、記錄一些常用日志的查看方式。
二、步驟簡介
1、購買阿里ECS服務器,配置相關安全組,設置root密碼等(這些過程省略介紹)。
2、在服務器上創建其他用戶。
3、使用相應用戶登錄服務器,並創建密鑰對。
4、在服務器安裝公鑰,同時,將創建好的私鑰,下載到本地保存。
5、設置服務器ssh的配置文件。
6、在本地的各類終端中加載私鑰,實現遠程(免密碼)登錄。
Attention:本文主要講述的是客戶端登錄到遠程服務器上生成密鑰對,同時密鑰對記錄在服務器上,私鑰拷貝到本地。當然,也可以客戶端在本地生成好密鑰對,然后將公鑰上傳到服務器,自己保留好本地生成的私鑰,同樣按照上面第4步進行服務器公鑰的安裝,這里不做特殊說明了。
三、詳細步驟說明
1、用戶操作
(1) 創建用戶 ,/home 目錄下會自動生成相應的用戶文件夾
1 [root@cleven_server ~]# adduser new_user 2 [root@cleven_server ~]# passwd new_user 3 更改用戶 new_user 的密碼 。 4 新的 密碼: 5 重新輸入新的 密碼: 6 passwd:所有的身份驗證令牌已經成功更新。 7 [root@cleven_server ~]#
(2)查看、刪除用戶
<1> 查看系統中有哪些用戶:cut -d : -f 1 /etc/passwd
<2> 查看可以登錄系統的用戶:cat /etc/passwd | grep -v /sbin/nologin | cut -d : -f 1
<3> 用戶列表文件:/etc/passwd 用戶組列表文件:/etc/group
<4> 查看登錄用戶:who 查看某一用戶:w 用戶名
<5> 查看用戶登錄歷史記錄:last
<6> 刪除用戶:userdel -rf name
(3)為用戶分配root權限 (可選)
[root@cleven_server ~]# vim /etc/sudoers
或者,root用戶下 直接輸入命令 visudo 也即可修改
[root@cleven_server ~]# visudo
找到該行:
##Allow root to run any commands anywhere
root ALL=(ALL) ALL
在下面添加:
1 ## Allow root to run any commands anywhere 2 root ALL=(ALL) ALL 3 new_user ALL=(ALL) ALL
2、生成密鑰 (客戶端連接服務器,在服務器端生成密鑰)
(1)確認服務器SSH服務
<1> 檢查ssh的安裝 :service sshd status 或者 systemctl status sshd
<2> 如果提示錯誤,則進行安裝:yum install sshd 或者 yum install openssh-server
<3> 啟動:service sshd start 或者 systemctl start sshd
<4> 重啟:service sshd restart 或者 systemctl restart sshd
(2)切換new_user登錄,生成密鑰對
1 [new_user@cleven_server /]$ ssh-keygen -t rsa 2 Generating public/private rsa key pair. 3 Enter file in which to save the key (/home/new_user/.ssh/id_rsa): 4 Created directory '/home/new_user/.ssh'. 5 Enter passphrase (empty for no passphrase): 6 Enter same passphrase again: 7 Your identification has been saved in /home/new_user/.ssh/id_rsa. 8 Your public key has been saved in /home/new_user/.ssh/id_rsa.pub. 9 The key fingerprint is: 10 SHA256:0KrowSHBBZ16tHjaQhr+2bcbEyqonlFvkjHxjrMfKCI new_user@cleven_server 11 The key's randomart image is: 12 +---[RSA 2048]----+ 13 | .o.. | 14 |. .+ . | 15 |..+.. . . | 16 |.= +o o | 17 |=.*+ ...S | 18 |.*o+O.. . | 19 |E+*B+* o | 20 |+.++*...o | 21 |oo.....oo | 22 +----[SHA256]-----+ 23 [new_user@cleven_server /]$
(3)上文注解
ssh-keygen -t rsa 命令后一路回車即可:
<1> Enter file in which to save the key (/home/new_user/.ssh/id_rsa):
該命令提示的意思是:讓我們定義私鑰的存放路徑,默認存在的路徑是/home/new_user/.ssh/id_rsa (如果是root賬號,路徑在/root/.ssh/id_rsa)
<2> Enter passphrase (empty for no passphrase):
該命令提示的意思是:定義私鑰的密碼,一般為了免密默認的留空,直接的回車
<3> Enter same passphrase again:
該命令提示的意思是:確認密碼設置
經過上面三次回車后,最后在/home/new_user/.ssh/id_rsa下面生成了公鑰和私鑰
(4)查看生成的密鑰(.pub為公鑰)
1 [new_user@cleven_server /]$ cd /home/new_user/.ssh 2 [new_user@cleven_server .ssh]$ ll 3 總用量 8 4 -rw------- 1 new_user new_user 1675 5月 21 13:06 id_rsa 5 -rw-r--r-- 1 new_user new_user 404 5月 21 13:06 id_rsa.pub 6 [new_user@cleven_server .ssh]$
3、服務器上安裝公鑰
注意:使用ssh-keygen -t rsa方式生成相關密匙信息,此時默認的會有對應的:/home/new_user/.ssh/這個目錄存在,如果沒有的話(使用其他ssh工具生成密鑰或者在客戶端本地生成密鑰的時候)就需要手動創建此目錄。
(1)安裝公鑰:主要是把 id_rsa.pub 內容復制到 /home/new_user/.ssh/authorized_keys
1 [new_user@cleven_server ~]$ cd /home/new_user/.ssh 2 [new_user@cleven_server .ssh]$ cat id_rsa.pub >> authorized_keys 3 [new_user@cleven_server .ssh]$ chmod 600 authorized_keys (僅用戶自身有讀寫權限) 4 [new_user@cleven_server .ssh]$ chmod 700 /home/new_user/.ssh (僅用戶自身有讀寫權限) 5 [new_user@cleven_server .ssh]$
(2)查看安裝
注意:文件authorized_keys 和 文件夾.ssh 的所有者必須是后面進行SSH遠程登錄的用戶(同名),如果不同,使用命令:chown 用戶名 文件名 -R 來更改所有者。
1 [new_user@cleven_server .ssh]$ ll 2 總用量 12 3 -rw------- 1 new_user new_user 404 5月 21 13:29 authorized_keys 4 -rw------- 1 new_user new_user 1675 5月 21 13:06 id_rsa 5 -rw-r--r-- 1 new_user new_user 404 5月 21 13:06 id_rsa.pub 6 [new_user@cleven_server .ssh]$
4、下載私鑰到本地,后面將使用此密鑰進行登錄(可以將id_rsa重命名為 new_user_ECS.pem,方便管理和區分)
(1)使用scp命令從遠程拷貝到本地,以下是在本地終端輸入:
Cleven:~ Cleven$ scp new_user@39.xx.xx.xx:/home/new_user/.ssh/id_rsa /User/Cleven/Desktop
(2)客戶端使用FTP軟件(FileZilla)
5、在服務器上配置SSH
(1)編輯配置文件。注意,是sshd_config(服務端配置文件) ,不是ssh_config(客戶端配置文件)
[root@cleven_server ~]# vim /etc/ssh/sshd_config
(2)配置內容(幾個關鍵處)
#root用戶能否通過 SSH 登錄,默認為yes PermitRootLogin yes #完成全部設置並以密鑰方式登錄成功后,可以禁用密碼登錄。為了安全,建議禁用,但是注意實在密鑰登錄可行之后禁用 PasswordAuthentication yes #默認為yes,是否讓 sshd 去檢查用戶家目錄或相關檔案的權限數據。如果設置成yes必需保證存放公鑰的文件夾的擁有者與登陸用戶名是相同的。 #這是為了擔心使用者將某些重要檔案的權限設錯,可能會導致一些問題所致。例如使用者的 ~.ssh/ 權限設錯時,某些特殊情況下會不許用戶登入(設置成no可登錄) #這通常是必要的,因為新手經常會把自己的目錄和文件設成任何人都有寫權限。 StrictModes no #是否允許密鑰登錄,僅針對SSH第一代通信協議
#在CentOS7.4中被廢除了,CentOS7開始預設使用第二代通訊協議
#第二代SSH通訊協議的密鑰驗證選項是 PubkeyAuthentication
RSAAuthentication yes
#允許公鑰認證(密鑰登錄),自制的公鑰數據就放置於用戶家目錄下的.ssh/authorized_keys 內
#替代了第一代協議中的 RSAAuthentication
PubkeyAuthentication yes
AuthorizedKeysFile ~/.ssh/authorized_keys
6、本地使用密鑰完成登錄 ,如出現異常,可使用 ssh -v檢查
(1)iterm2
<1> 配置描述文件
<2> 本地添加密鑰:第4步中下載到本地的密鑰
➜ / ssh-add -k /Users/cleven/Desktop/new_user_ECS.pem
<3> 開啟登錄
(2)FinalShell
四、查看常用日志及包括用戶登錄記錄
1、列舉一些常見的日志文件:/var/log
注:可以用file命令查看文件的類型。大多數日志文件是純文本文件,可以用cat 、head來查看。還有一些是二進制日志文件,需要用專用的命令來查看。
日志 | 類 型 | 打開命令 | 解釋 |
secure |
文本 |
cat、head、tail 等 |
安全相關,主要是用戶認證,如登錄 、創建和刪除賬號 、sudo等 |
audit/audit.log | 文本 | cat、head、tail | 審計日志。跟用戶賬號相關 |
messages | 文本 | cat、head、tail | 記錄系統和軟件的絕大多數消息。如服務啟動 、停止 、服務錯誤等。 |
boot.log | 文本 | cat、head、tail | 系統啟動日志。能看到啟動流程。 |
cron | 文本 | cat、head、tail | 計划任務日志。會記錄crontab計划任務的創建、執行信息。 |
dmesg | 文本 | dmesg、cat等 | 硬件設備信息(device)。純文本,也可以用dmesg命令查看。 |
yum.log | 文本 | cat、head、tail | yum軟件的日志。記錄yum安裝、卸載軟件的記錄。 |
lastlog | 二進制 | lastlog | 最后登錄的日志。 |
btmp | 二進制 | lastb | 登錄失敗的信息(bad)。 |
wtmp | 二進制 | last | 所有正確登錄的用戶,往回搜索wtmp來顯示自從文件第一次創建以來登錄過的用戶。 |
utmp | 二進制 | w,who ,user |
記錄當前登錄進系統的各個用戶。 w命令查詢utmp文件並顯示當前系統中每個用戶和它所運行的進程信息。 who命令查詢utmp文件並報告當前登錄的每個用戶。 user用單獨的一行打印出當前登錄的用戶,每個顯示的用戶名對應一個登錄會話 |
2、剔除在線用戶步驟
(1)查看在線用戶 : who , w
(2)查看在線用戶pid : ps -ef | grep pts/1
(3)殺掉進程,剔除用戶:kill -9 23091