SSH原理常見應用升級及埠轉發
阿新 • • 發佈:2020-06-13
#### SSH介紹
> SSH是`Secure Shell Protocol`的簡寫,由IETF網路工作小組(`Network working Group`)指定;在進行資料傳輸之前,SSH先對聯機資料包通過加密技術進行加密處理,加密後在進行資料傳輸。確保了傳遞的資料安全.
>
>
>
> SSH是專為`遠端登入會話`和其他網路服務提供的`安全性協議`。利用SSH協議可以有效的放置遠端管理過程中的資訊洩露問題,在當前的生產環境運維工作中,絕大多數企業普遍採用SSH協議服務來代替傳統的不安全的遠端聯機服務軟體,如`telnet`(23埠,非加密)
>
>
>
> 在預設狀態下,SSH服務主要提供了兩個服務功能,一個是提供類似Telnet遠端聯機伺服器的服務,即上面提到的SSH服務;另一個是類似FTP服務的`sftp-server`,藉助SSH協議來傳輸資料的,提供更安全的SFTP服務(`vsftp,proftp`)
>
> ssh 客戶端(ssh命令)還包含一個遠端安全拷貝命令scp,也是通過ssh協議工作.
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200613002012127-689307645.png)
`小結`
```shell
# 1、SSH是安全的加密協議,用於遠端連線linux伺服器
# 2、SSH預設埠是22,安全協議版本SSH2,除了2之外還有SSH1(漏洞)
# 3、SSH服務端主要包含兩個服務協議SSH遠端連線,SFTP服務
# 4、Linux SSH客戶端包含ssh遠端連線命令,以及遠端拷貝scp命令
```
#### SSH結構
```shell
# SSH服務由服務端軟體OpenSSH (openssl)
# 客戶端(常見的有SSH(linux),SecureCRT,Putty,Xshell)組成
# SSH服務預設使用22埠提供服務,它有兩個不相容的SSH協議版本分別是1.x和2.x
rpm -qa openssh
openssh-6.6.1p1-31.el7.x86_64 # 遠端連線安裝包
rpm -qa openssl
openssl-1.0.2k-19.el7.x86_64 # 加密安裝包
```
> OpenSSH同時支援SSH `1.x`和`2.x` 用SSH 2.x的客戶端程式不能連結到SSH1.x的服務程式上
>
> SSH服務是一個`守護程序`(daemon),他在後臺執行並響應來自客戶端的連線請求,`SSH服務端的程序名為sshd`,負責實時監聽`遠端`SSH客戶端的連線請求,並進行處理,一般包括公共金鑰認證、金鑰交換、對稱金鑰加密和非安全連線等。
>
> SSH客戶端包含`ssh`以及像`scp`(遠端拷貝)`slogin`(遠端登入)`sftp`(安全FTP檔案傳輸)等`應用程式`
>
> `SSH`的工作機制大致是本地的ssh客戶端傳送一個連線請求到遠端的ssh伺服器,伺服器檢查連線的客戶端傳送的資料包和ip地址,如果確認`合法`,就會發送金鑰給SSH的客戶端,此時,客戶端本地再將金鑰發回給服務端,自己建立連線。SSH1.x和SSH2.x在`連線協議上有一些安全方面`的差異
#### SSH加密技術
> SSH加密技術是將人類可以看得懂的資料,通過一定的特殊的程式演算法,把這些資料變成雜亂的無意義的資訊,然後,通過網路進行傳輸,二擋到了目的地後,在通過對應的解密演算法,把傳過來的加密的資料資訊解密成加密前的可讀取的正常資料。因此,當資料在網際網路上傳輸時即使被有心的黑客監聽竊取了,也很難獲取到真正需要的資料
>
> 網路上的資料包加密技術一般是通過所謂的一對`公鑰`和`私鑰`(Public key and Pivate key)組合撐的金鑰對進行`加密`與`解密`操作。
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200613002022900-1518557596.png)
##### SSH 1.x
> 每一臺SSH伺服器主機都可以使用RSA加密方式來產生一個`1024-bit`的RSA Key 這個RSA的加密方式就是用來產生公鑰和私鑰的演算法之一。
>
> 當服務`啟`動時,就會產生一個`768 bit的臨時公鑰存放在Server`中
```shell
grep ServerKey /etc/ssh/sshd_config
#ServerKeyBits 1024
```
##### SSH 2.x
> 在`SSH 1.x`的聯機過程中,當Server接收`Clinet端`的`Private Key`後,就不再針對該次聯機的Key pair進行檢驗。若此時有而已黑客對該聯機`key pair`插入而已的程式程式碼時,由於服務端你不會在檢驗聯機的正確性,因此可能會接收該程式程式碼,從而導致系統被黑.
>
> 為了改正這個缺點,SSH version2多加了一個確認聯機`正確`性的`Diffie-Hellman機制`
>
> 在每次資料傳輸中,Server都會以該機制檢查資料的來源是否正確,這樣,可以避免聯機過程中被插入而已程式程式碼的問題
>
> 另外,SSH2同時支援`RSA`和`DSA`金鑰,但是SSH1僅支援RSA金鑰
>
> 由於SSH1協議本身存在較大問題,建議使用SSH2的`聯機模式`
>
> 當Client端SSH聯機請求傳送過來時,Server就會將這個768-bit的公鑰傳給Client端
>
> 此時Client會將此公鑰與先前儲存的公鑰進行對比,看是否一致,判斷標準是Client端聯機使用者目錄下`~/.ssh/known_hosts`檔案的內容(`linux-客戶端`)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200613002031569-1775998614.png)
`不加使用者預設是`root` 不加`-p` 指定埠 預設是`22`
```shell
ssh -p22222 [email protected]
The authenticity of host '39.108.140.0 (39.108.140.0)' can't be established.
ECDSA key fingerprint is 17:33:ef:9b:05:b3:69:d3:20:48:49:e1:28:9b:7c:c8.
Are you sure you want to continue connecting (yes/no)?
# 連線密碼檔案存放路徑
cat /root/.ssh/known_hosts
121.36.43.223 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBDgQ7H6KDIPTzOklwMSOxgFI0Xc3rgvwPnCLIuXIuzaCfYQBouM6owCArpj2CXEyk40lSn96ktW1vETbP1JmjEY=
# 第一次SH連線的時候,本地會產生一個金鑰檔案~/.ssh/known_hosts
```
##### 如何防止SSH登入入侵
```shell
# 1、用金鑰登入,不用密碼登入
# 2、牤牛陣法:解決SSH安全問題
# 3、防火牆封閉SSH,指定源限制(區域網,信任公網)
# 4、開啟SSH只監聽本地內網IP(ListenAddress 10.0.0.8)
# 5、儘量不給伺服器外網IP
```
#### SSH客戶端附帶的scp命令
> scp的基本語法使用:`scp -sercure copy` (`remote file copy program`)
`推push`
```shell
scp -P22 -rp /root/test.txt [email protected]:/root/
```
`拉pull`
```shell
scp -p22 -rp [email protected]:/root/test.txt ./
# -P 指定埠,預設22,可忽略
# -p 表示拷貝前後保持檔案或目錄屬性
# -r 遞迴,表示拷貝目錄
# -l 限制速度
# 小結
# 1、scp是加密的遠端拷貝,而cp僅為本地拷貝
# 2、可以把資料從一臺機器推送到另一臺機器,也可以從其他伺服器把資料拉回到本地執行命令的伺服器
# 3、每次都是全量完成拷貝,因此效率不高,適合第一次拷貝用,如果需要增量拷貝,用rsync
```
##### ssh服務附帶的sftp功能服務
```shell
# 1. rz,sz(lrzsz)
# 2. winscp WinSCP-v4.0.5 基於SSH,sftp
# 3. SFX(xshell) 4) SFTP 基於SSH加密傳輸
# 4. samba,http,ftp,nfs
# FTP工具:vsftp、proftpd、SFTP
# linux sftp客戶端登入sftp服務方法
# 登入FTP的方法就是
sftp -oPort=22 [email protected]:
sftp> put test.txt
Uploading test.txt to /root/test.txt
test.txt 100% 0 0.0KB/s 00:00
sftp> ls test.txt
test.txt
```
#### SSH服務認證型別介紹
##### 基於口令安全認證
> 基於口令的安全驗證的方式就是大家現在一直在用的,只要知道伺服器的SSH`埠號`和`口令`,應伺服器的`IP`及開放的`埠`,預設都為`22`,就可以通過ssh客戶端登入到主機,此時聯機過程中所有傳輸都是`加密`的
##### 基於金鑰的安全驗證
> 基於金鑰的安全驗證方式是指,需要依靠`金鑰`,也就是必須事先建立一對`金鑰`,然後把公用金鑰(`Publickey`)放在需要訪問的目標伺服器上,另外,個還需要把`私有金鑰`(Private key)放到SSH客戶端或對應的客戶端伺服器上
>
> 此時,如果要想連線到這個帶有`公用金鑰`的SSH伺服器,客戶端SSH軟體或者客戶端端服務就會想SSH服務端發出請求,請求用聯機使用者金鑰進行安全連線。SSH服務會在收到請求之後,會現在改SSH伺服器上連線的使用者的加密路下 放上去的對應使用者金鑰,然後把它和連線的SSH客戶端發來進行金鑰,如果兩個金鑰一直SSH服務就會用公用金鑰加密“`質詢`”(challenge)並把它傳送給`SSH客戶端`
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200613002042052-1012526183.png)
##### 更改ssh 預設登入配置
> 修改SSH服務的執行引數,是通過修改配置檔案`/etc/ssh/sshd_config`實現的
>
> 一般來說SSH服務使用預設的配置已經夠很好的工作,如果對安全要求不高,僅僅提供SSH服務的情況不需要修改任何配置
`sshd_config配置檔案說明:`
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200613002054678-490245468.png)
##### 優化SSH配置檔案選項
```shell
cp /etc/ssh/sshd_config{,.bak}
vim /etc/ssh/sshd_config
Port 52113 # ssh連線埠預設為22,修改埠號可以提高級別
PermitRootLogin no # 禁止root遠端登入
PermitEmptyPasswords no # 禁止空密碼的使用者登入
UseDNS no # 不使用DNS進行解析
GSSAPIAuthentication no # 會導致SSH連線慢
# ssh遠端連線服務滿解決方法
sed -ri '13 iPort 52113\nPermitRootLogin no\nPermitEmptyPasswords no\nUseDNS no\nGSSAPIAuthentication no' /etc/ssh/sshd_config
```
#### SSH優化
##### 優化sshd_config
```shell
sed -i '13 iPort 52113\nPermitRootLogin no \n 禁止root登入
PermitEmptyPasswords no \n # 禁止使用密碼
UseDNS no\n # 禁用DNS
GSSAPIAuthentication no' # 禁用GSSAPI
sshd_config
```
##### 檢查hosts解析
```shell
cat >>/etc/hosts < /dev/null
sshpass -p youmen ssh -o StrictHostKeyChecking=no [email protected]
# 一鍵生成金鑰對
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa >/dev/null 2>&1
ssh-copy-id -i /root/.ssh/id_dsa.pub [email protected]
# -i 代表要傳送的檔案
# ssh-copy-id 只能發公鑰,不能發私鑰
# 1 免密碼登入是單向的,方向從私鑰(鑰匙)==》公鑰(鎖)
# 2 SSH免密碼登入基於使用者的,最好不要跨不同的使用者
# 3 ssh連線慢的問題解決
```
##### ssh批量管理步驟
```shell
# 1、ssh優化和hosts解析
# 2、建立使用者
# 3、生成金鑰對
# 4、分發公鑰到所有伺服器 ssh-copy-id
# 5、測試 遠端連線ssh 遠端執行命令ssh ifconfig
# 遠端拷貝檔案scp rsync-e隧道模式
```
#### ssh常見操作
##### 將本地hosts傳送指定IP
`1. sudo提權實現沒有許可權使用者拷貝`
```shell
echo“youmenALL= NOPASSWD:/usr/bin/rsync ”> >/etc/sudoers
visudo -c
scp -P52113 hosts [email protected]:~ # 最好傳送到家目錄下,直接傳送到/下是沒有許可權
ssh -p22 -t [email protected] sudo rsync ~/hosts /etc/hosts
# 需要授權sudo許可權
```
`2. 使用suid實現沒有許可權使用者拷貝`
```shell
chmod u+s `which rsync`
scp -P22 hosts [email protected]:~
ssh -p22 [email protected] rsync ~/hosts /etc/hosts
```
`3. 使用root進行操作`
```shell
# rsync使用
rsync -avz hosts -e ‘ssh -p 22’[email protected]:~
# 可以增量備份
```
##### 檢視hosts主機系統版本
```shell
cat view.sh
#!/bin/sh
for n in blog2 tenxun jd huawei
do
echo -n "====$n===="
ssh -p 22 $n $1
done
[root@nginx_test ~]# sh view.sh "cat /etc/redhat-release"
====blog2====CentOS Linux release 7.3.1611 (Core)
====tenxun====CentOS Linux release 7.6.1810 (Core)
====jd====CentOS Linux release 7.6.1810 (Core)
====huawei====CentOS Linux release 7.4.1708 (Core)
```
##### 分發檔案
```shell
cat file.sh
#!/bin/sh
. /etc/init.d/functions
if [ $# -ne 1 ];then
echo "USAGE:/bin/sh $0 FILENAME" $
exit 1
fi
for n in blog2 tenxun jd huawei
do
echo -n "====$n===="
scp -P22 $1 $n: &> /dev/null
if [ $? -eq 0 ];then
action "dis $1 to $n" /bin/true
else
action "$n" /bin/false
fi
done
sh file.sh /etc/hosts
====blog2====dis /etc/hosts to blog2 [ OK ]
====tenxun====dis /etc/hosts to tenxun [ OK ]
====jd====dis /etc/hosts to jd [ OK ]
====huawei====dis /etc/hosts to huawei [ OK ]
```
#### SSH埠轉發簡介
> SSH會自動加密和解密所有SSH客戶端與服務端之間的網路資料。但是,SSH還能夠將其他TCP埠的網路資料通SSH連結來轉發,並且自動提供了相應的加密及解密服務。這一過程也被叫做"**隧道**"(tunneling),這是因為SSH為其他TCP連結提供了一個安全的通道來進行傳輸而得名。例如,Telnet ,SMTP ,LDAP這些TCP應用均能夠從中得益,避免了使用者名稱,密碼以及隱私資訊的明文傳輸。而與此同時,如果工作環境許中的防火牆限制了一些網路埠的使用,但是允許SSH的連線,也能夠將通過將TCP用埠轉發來使用SSH進行通訊。
##### SSH埠轉發兩大功能
```shell
# 1. 加密SSH Client端至SSH Server端之間的通訊資料。
# 2. 突破防火牆的簡直完成一些之前無法建立的TCP連線。
```
#### 本地轉發
`命令 -L localport:remotehost:remotehostport sshserver`
`說明`
```shell
localport # 本機開啟的埠號
remotehost # 最終連線機器的IP地址
remotehostport # 轉發機器的埠號
sshserver # 轉發機器的IP地址
# -L 本機埠
# -f 後臺啟用,可以在本機直接執行命令,無需另開新終端
# -N 不開啟遠端shell,處於等待狀態,不跳到遠端主機,還在主機上,只是搭好了隧道,橋搭好,不ssh上去
# -g 啟用閘道器功能
# -R 服務埠
# 舉例:
ssh –L 9527:telnetsrv:23 -N sshsrv
telnet 127.0.0.1 9527
# 當訪問本機的9527的埠時,被加密後轉發到sshsrv的ssh服務,再解密被轉發到telnetsrv:23
data < >localhost:9527 < > localhost:XXXXX < > sshsrv:22 < > sshrv:yyyyy < > telnetsrv:23
```
##### 環境背景
> **背景:**企業內部C伺服器只允許telnet連線(23埠)訪問,不允許外部直接訪問,B伺服器是一個ssh伺服器;有一個使用者需要從外部連線到企業內部的C伺服器。
>
> **前提:**防火牆允許22埠進來(或者企業內部有一個堡壘機,ssh -t通過堡壘機進去)。
>
> **原理:** 資料一旦telnet以後,資料會發送到本機9527埠,再在本機開一個隨機埠,充當ssh客戶端,再把資料流量傳送到22埠的ssh服務端,收到資料以後,解密資料,臨時開一個隨機埠充當客戶端,再把流量傳送到23埠telnet服務端
>
> **機器:** blogA使用者,huawei模擬B機器,tenxun模擬C機器
| 節點名 | IP | 軟體版本 | 硬體 | 網路 | 說明 |
| :-------- | :------------ | :------- | :--- | :----- | :----- |
| CentOS7-A | 39.108.140.0 | | 1C2G | 公有云 | 阿里雲 |
| CentOS6-B | 121.36.43.223 | | 1C2G | 公有云 | 華為雲 |
| CentOS6-C | 49.233.69.195 | | 1C2G | 公有云 | 騰訊雲 |
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200613002109385-1677974260.jpg)
```shell
# ssh協議裡面封裝了telnet,一旦A連線了B主機,立即使用telnet連線C主機,此過程可以突破防火牆的限制
# 實驗
# A->C 訪問被限制
# A-B->C 使用B主機作為跳板突破訪問限制
```
##### 配置步驟
`C機器通過iptables拒絕A機器登入`
```shell
[root@C ~]# iptables -A INPUT -s 39.108.140.0 -j REJECT
[root@C ~]# yum -y install telnet-server xinetd
[root@C ~]# systemctl start telnet.socket
[root@C ~]# systemctl start xinetd
[root@C ~]# ss -tnl |grep 23
LISTEN 0 128 [::]:23 [::]:*
# 此時我們A機器是直接連線不上C機器的
[root@A ~]# ssh 49.233.69.195
ssh: connect to host 49.233.69.195 port 22: Connection refused
# 開啟埠轉發(telnet隧道)
[root@A ~]# ssh -L 10000:49.233.69.195:23 -Nf 121.36.43.223
# 通過本地9527埠訪問centos6-1伺服器IP地址使用telnet協議23埠,跳板機ip地址
# 隧道已經搭建好了,此時A主機可以通過telnet訪問C主機
telnet 127.0.0.1 10000
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
Kernel 3.10.0-1062.9.1.el7.x86_64 on an x86_64
c login: youmen
Password:
Last login: Fri Jun 12 22:32:04 from centos-b
[root@C ~]$
# 如何需要刪除這個連線使用killall ssh即可
killall ssh # 刪除搭建的橋
telnet 127.0.0.1 10000
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
```
#### 遠端轉發
`遠端轉發機制`
```shell
# -R sshserverport:remotehost:remotehostportsshserver
# 舉例
ssh–R 9527:telnetsrv:23 –N sshsrv
# 讓sshsrv偵聽9527埠的訪問,如有訪問,就加密後通過ssh服務轉發請求到本機ssh客戶端,再由本機解密後轉發到telnetsrv:23
Data < > sshsrv:9527 < > sshsrv:22 < > localhost:XXXXX < > localhost:YYYYY< >telnetsrv:23
# 需求:
# 在A(Centos7)上開啟smtp服務(postfix),B(Centos6)做跳板,C(Centos6-1)客戶端給Centos7傳送郵件
# 流程解釋
C-x->A (拒絕訪問)
C-B->A (通過遠端代理,接受訪問)
```
`環境依然是上面三臺機器,只是C伺服器換成116.196.83.113 (JD)這臺伺服器`
##### 配置步驟
```shell
[root@A ~]# vim /etc/postfix/main.cf
# inet_interfaces = localhost # 註釋此行,不讓介面直接繫結在127.0.0.1上
[root@A ~]# systemctl restart postfix
[root@A ~]# ss -tnl |grep 25
LISTEN 0 100 *:25 *:*
LISTEN 0 100 :::25 :::*
[root@A ~]# yum -y install telnet-server
[root@A ~]# systemctl start telnet.socket
# 如果B上面有一些影響的防火牆規則就將它刪掉
[root@B ~]# iptables -nL --line-number
[root@B ~]# iptables -D INPUT 1
# 測試下C能不能telnet 25埠連線A
[root@C ~]# 39.108.140.0 25
Trying 39.108.140.0...
Connected to 39.108.140.0.
Escape character is '^]'.
220 nginx_test.localdomain ESMTP Postfix
# 設定防火牆策略,使A不接受C的一切請求
[root@A ~]# iptables -A INPUT -s 39.108.140.0 -j REJECT
[root@C ~]# telnet 39.108.140.0 25
Trying 39.108.140.0...
telnet: connect to address 39.108.140.0: Connection refused
# 使用B遠端轉發,傳送郵件到
[root@B ~]# ssh-copy-id [email protected]:
# 使用B遠端轉發,傳送郵件到A,最好免密,否則需要手動口令驗證
[root@B ~]# ssh -R 50000:39.108.140.0:25 -fN 121.36.43.223
# 此時可以到C跳板機看到已經有埠在監聽了
[root@C ~]# ss -tnl |grep 50000
LISTEN 0 128 127.0.0.1:50000 *:*
[root@C ~]# telnet 127.0.0.1 5000
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
[root@zabbix ~]# telnet 127.0.0.1 50000
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 nginx_test.localdomain ESMTP Postfix
mail from:[email protected]
250 2.1.0 Ok
```
#### openssh升級
`下載地址`
http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/
##### 具體升級步驟
```shell
# 記錄sshd.pid路徑
find / -name sshd.pid
# 檢視openssh現有版本
ssh -V
# 使用rpm刪除現有的openssh
rpm -e --nodeps $(rpm -qa | grep openssh)
# 刪除舊的配置檔案
rm -rf /etc/ssh/*
# 安裝openssl-devel
yum -y install openssl-devel
# 下載tar.gz包,配置編譯,安裝
wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.0p1.tar.gz
# 編譯並安裝
tar xvf openssh-8.0p1.tar.gz
cd openssh-8.0p1
./configure --prefix=/usr/ --sysconfdir=/etc/ssh/ --with-ssl-dir=/etc/ssl --with-md5-passwords --mandir=/usr/share/man/
make && make install
# 設定ssh服務開機自啟動
# 複製啟動檔案至/etc/init.d/
cp -a contrib/redhat/sshd.init /etc/init.d/sshd
# 編輯/etc/init.d/sshd檔案, 將PID_FILE改為之前記下的sshd.pid路徑
sed -i "s/PID_FILE=\/var\/run\/sshd.pid/PID_FILE=\/run\/sshd.pid/" /etc/init.d/sshd
# 設定開機啟動sshd
chkconfig sshd on
chkconfig --list sshd
# 編輯/etc/ssh/sshd_config, 設定一些常用引數
sed -i "s/#PermitRootLogin prohibit-password/PermitRootLogin yes/" /etc/ssh/sshd_config
sed -i "s/#PubkeyAuthentication yes/PubkeyAuthentication yes/" /etc/ssh/sshd_config
sed -i "s/#PasswordAuthentication yes/PasswordAuthentication yes/" /etc/ssh/sshd_config
sed -i "s/#AllowTcpForwarding yes/AllowTcpForwarding yes/" /etc/ssh/sshd_config
sed -i "s/#X11Forwarding no/X11Forwarding yes/" /etc/ssh/sshd_config
sed -i "s/#PidFile \/var\/run\/sshd.pid/PidFile \/run\/sshd.pid/" /etc/ssh/sshd_config
# 加入系統服務
cat > /usr/lib/systemd/system/sshd.service << EOF
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
#After=network.target sshd-keygen.service
#Wants=sshd-keygen.service
After=network.target
[Service]
ExecStart=/usr/sbin/sshd
[Install]
WantedBy=multi-user.target
EOF
# 啟用sshd服務
systemctl enable sshd
# 重啟服務
systemctl restart sshd
# 檢視服務狀態
systemctl status sshd
# 驗證
ssh -V
OpenSSH_8.0p1, OpenSSL 1.0.2k-fips 26 Jan 2017
```
#### SSH設定登入歡迎資訊
`到/etc/motd裡面編寫內容,看個人愛好`
```shell
[root@nginx_test ~]# cat /etc/motd
/\/\
(_人|人_)
/‥\
ミ(_Y_)ミ
> <
(/ \)
_( )_
(_>―<_)
# 關閉當前會話再登入
/\/\
(_人|人_)
/‥\
ミ(_Y_)ミ
> <
(/ \)
_( )_
(_>―<_)
[root@nginx_test ~]#
```
##### 小熊圖案
```shell
┴┬┴┬/ ̄\_/ ̄\
┬┴┬┴▏ ▏▔▔▔▔\
┴┬┴/\ / ﹨
┬┴∕ / )
┴┬▏ ● ▏
┬┴▏ ▔█
┴◢██◣ \___/
┬█████◣ /
┴█████████████◣
◢██████████████▆▄
█◤◢██◣◥█████████◤\
◥◢████ ████████◤ \
┴█████ ██████◤ ﹨
┬│ │█████◤ ▏
┴│ │ ▏
┬ ∕ ∕ /▔▔▔\ ∕
┴/___/﹨ ∕ ﹨ /\
┬┴┬┴┬┴\ \ ﹨/ ﹨
┴┬┴┬┴┬┴ \___\ ﹨/▔\﹨ ▔\
▲△▲▲╓╥╥╥╥╥╥╥╥\ ∕ /▔﹨/▔﹨
**╠╬╬╬╬╬╬╬╬*﹨ / /