微信公衆號「後端進階」,專一後端技術分享:Java、Golang、WEB框架、分佈式中間件、服務治理等等。
老司機傾囊相授,帶你一路進階,來不及解釋了快上車!git
做爲後端開發者,不免要常常與服務器打交道,部署項目,查看日誌,排查問題等等,除了開發工做,其他時間基本都在終端上,那麼你是怎麼鏈接上服務器的呢?直接粗暴地用帳號密碼?可是直接用帳號密碼鏈接服務器存在安全風險,由於服務器有多人擁有權限,在密碼拷貝給各個成員過程當中,很是容易暴露出去,因此一般咱們是經過 SSH 來鏈接遠程終端。vim
SHH 可分爲客戶端和服務端,服務端是一個守護進程,通常是 sshd 進程,在後臺運行並響應來自客戶端的請求,提供了對遠程請求的處理,通常包括公共密鑰認證、密鑰交換、對稱密鑰加密和非安全鏈接;客戶端通常是 ssh 進程,另外還包含 scp、slogin、sftp 等其餘進程。後端
這篇文章主要講如何 ssh 鏈接遠程終端,以此記錄一下整個配置過程。安全
用 git 命令 ssh-keygen -t rsa ,會在 ~/ 下生成一個 .ssh 的隱藏文件夾,裏面包含 id_rsa 密鑰和 id_rsa.pub 公鑰,等下把公鑰添加到服務器。bash
$ yum install openssh-server -y
複製代碼
OpenSSH 的主配置文件:/etc/ssh/sshd_config服務器
如下是一些經常使用設置:微信
# 設置SSH的端口號是22(默認端口號爲22)
Port 22
# 使用ssh驗證登錄
RSAAuthentication yes
pubkeyAuthentication yes
# 公鑰文件路徑
AuthorizedKeysFile .ssh/authorized_keys
# 禁止密碼登錄
PasswordAuthentication no
複製代碼
開啓 sshd:網絡
$ systemctl start sshd.service #啓動
$ systemctl stop sshd.service #中止
$ systemctl restart sshd.service #重啓
複製代碼
查看進程:框架
$ ps -ef | grep sshd
複製代碼
在 ssh 啓動後,會在 ~/ 下建立一個 .ssh 隱藏文件夾,裏面有一個 authorized_keys 文件,能夠在這個文件添加須要鏈接的服務器的客戶端的公鑰,可是通常不會這麼作,這會有安全隱患,由於在 root 目錄下的公鑰的客戶端登錄到服務器後會直接取得 root 權限,因此我會建立一個用戶,在用戶全部在目錄下添加 .ssh 目錄,在 .ssh 目錄下建立 authorized_keys 文件,最後把本地公鑰添加到 authorized_keys 文件中:ssh
$ adduser chenghui.zhang
複製代碼
若是建立 .ssh 目錄和 authorized_keys 文件的時候是用 root 建立的,那麼須要將其改爲 chenghui.zhang 的用戶權限:
chown chenghui.zhang|chenghui.zhang /home/chenghui.zhang/.ssh
chown chenghui.zhang|chenghui.zhang /home/chenghui.zhang/.ssh/authorized_keys
複製代碼
以下:
在客戶端 ~/.ssh 裏面建立一個 config 文件:
$ touch config
複製代碼
編輯:
$ sudo vim config
複製代碼
添加內容:
# 測試服務器
Host test
HostName xxx.xx.xxx.xxx #服務器ip地址
Port 22 #服務器配置的ssh端口號
User chenghui.zhang #在服務器的用戶名(對應用戶文件夾名字)
複製代碼
而後在終端( macOS 推薦使用 iTerm2 )輸入:
$ ssh test
複製代碼
到這裏,就能夠登上服務器了,但如今你還沒得到 root 權限。
接下來就是給用戶配置須要輸入密碼獲取 root 權限的操做,在服務器 root 權限下給 chenghui.zhang 用戶添加密碼:
$ passwd chenghui.zhang
複製代碼
而後就是輸入密碼。
這時還須要在 /etc/sudoers 給該用戶臨時提高權限( sudo 就是咱們經常使用的命令,僅須要輸入當前用戶密碼,即可以完成權限的臨時提高)
$ sudo vim /etc/sudoers
複製代碼
添加下面內容:
# 格式爲(用戶名 網絡中的主機=(執行命令的目標用戶) 執行的命令範圍)
$ chenghui.zhang ALL=(ALL) ALL
複製代碼
這時候退出保存可能會遇到文件只讀狀態,咱們還須要給該文件更改權限:
$ chmod 700 /etc/sudoers
複製代碼
在登錄服務器以後,須要取得臨時 root 權限:
$ sudo su -
複製代碼
提示你輸入密碼,輸入剛剛的密碼,這時候你就擁有了root權限了。爲安全起見,記得操做完後切換回用戶目錄:
$ su - chenghui.zhang
複製代碼