Linux下 SSH遠端管理服務

合合合襯發表於2018-09-10

第1章 SSH基本概述

1.1 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)。

1.2 SSH遠端服務主要功能

提供遠端連線伺服器的服務
對傳輸的資料進行加密

1.3 遠端連線方式有哪些

ssh屬於密文連線方式
監聽在本地22/tcp埠
telnet屬於明文連線方式 監聽在本地23/tcp埠

1.4 ssh知識要點

ssh是安全的加密協議,用於遠端連結linux伺服器

ssh 預設埠是22,安全協議版本sshv2,出來2之外還有1(有漏洞)

ssh服務端主要包括兩個服務功能 ssh遠端連結和sftp服務

linux ssh 客戶端包括ssh 遠端連結命令,以及遠端拷貝scp命令

1.5 私鑰和公鑰

ssh實現安全連結建立,利用鑰匙和鎖頭

1. 鑰匙=私鑰 鎖頭=公鑰,私鑰可以解密公鑰

2. 公鑰可以再網路中傳輸,私鑰再本地主機儲存

第2章 SSH相關命令

SSH是典型的客戶端和服務端的互動模式, 客戶端廣泛的支援各個平臺
WIndows有很多工具可以支援SSH連線功能, 建議使用Xshell

2.1 openssh軟體分析

(與資料加密相關的軟體--openssl)

[root@backup ~]# rpm -ql openssh-server

/etc/ssh/sshd_config    --- ssh服務配置檔案

/usr/sbin/sshd          --- ssh服務程式啟動命令

[root@backup ~]# rpm -ql openssh-clients

/usr/bin/scp            --- 遠端拷貝命令

/usr/bin/sftp           --- 遠端檔案傳輸命令

/usr/bin/slogin         --- 遠端登入命令

/usr/bin/ssh            --- 遠端連線登入命令

/usr/bin/ssh-copy-id    --- 遠端分發公鑰命令

ssh客戶端包含ssh以及像scp(遠端拷貝)、slogin(遠端登陸)、sftp(安全FTP檔案傳輸)等應用程式。

2.2 ssh遠端登入伺服器命令

ssh -p22 oldboy@10.0.0.150 [命令]

 

# SSH連線遠端主機命令的基本語法;

# ssh 命令

# -p(小寫), 用於指定遠端主機埠,預設22埠可省略

# oldboy@remotehost

# "@"前面為使用者名稱,如果用當前使用者連線,可以不指定使用者

# "@"後面為要連線的伺服器的IP

2.3 scp命令詳解

scp複製資料至遠端主機命令(全量複製)
 SSH連線遠端主機命令的基本語法;

 scp 命令

 -P(大寫) 指定埠,預設22埠可不寫

 -r 表示遞迴拷貝目錄

 -p 表示在拷貝檔案前後保持檔案或目錄屬性不變

 -l 限制傳輸使用頻寬(預設kb)

2.3.1 推:PUSH,上傳

# scp -P22 -rp /tmp/oldboy oldboy@10.0.0.150:/tmp

# /tmp/oldboy為本地的目錄。

# “@”前為使用者名稱

# “@”後為要連線的伺服器的IP。

# IP後的:/tmp目錄,為遠端的目標目錄。

# 說明: 以上命令作用是把本地/tmp/oldboy推送至遠端伺服器10.0.0.150的/tmp目錄

2.3.2 拉:PULL,下載

# scp -P22 -rp root@10.0.0.7:/tmp/oldboy /opt/

# 還可以將遠端目錄或檔案拉取至本地

2.3.3 SCP命令結論

scp通過加密進行遠端拷貝檔案或目錄的命令。

scp拷貝許可權為連線的使用者對應的許可權。

scp支援資料的推送和拉取,但每次都是全量拷貝,效率低下。

2.4 Sftp命令詳解

Sftp遠端資料傳輸命令

sftp連線遠端

sftp root@192.168.56.12

sftp -oPort=52113 root@10.0.0.41 <-sftp的特殊埠連線

 

下載檔案, 至於本地伺服器

sftp> get conf.txt /tmp/

 

上傳本地伺服器檔案, 至遠端伺服器

sftp> put /root/t1.txt /root/

sftp-->XFTP

    1.支援批量上傳檔案

    2.支援單個檔案超過4G

    3.支援斷點續傳

2.5 SSH服務軟體詳細說明

2.5.1 什麼是ssh服務

SSH服務端是一個守護講程 (daemon).他在後臺執行並響應來自客戶端的連線請求。 SSH服務端的講程名為sshd,負責實時監聽遠端SSH客戶端的遠端連線請求,並進行處理,一般包括公共金鑰認證、金鑰交換、對稱金鑰加密和非安全連線等。這個SSH服務就是我們前面基礎系統優化中保留開機自啟動的服務之。

ssh客戶端包含ssh以及像scp(遠端拷貝) slogin(遠端登陸) sftp(安全FTP檔案傳輸)等應用程式。

ssh的工作機制大致是本地的ssh客戶端先傳送一個連線請求到遠端的ssh服務端,服務端檢查連線的客戶端傳送的資料包和IP地址,如果確認合法,就會傳送金鑰給 SSH的客戶端,此時,客戶端本地再將金鑰發回給服務端,自此連線建立。

2.5.2 ssh軟體安裝

客戶端

[root@nfs01 ~]# rpm -qf `which ssh`

openssh-clients-5.3p1-122.el6.x86_64

服務端軟體

[root@nfs01 ~]# rpm -qf `which sshd`

openssh-server-5.3p1-122.el6.x86_64

注意:使用sshd採用絕對路徑進行啟動

[root@test ~]# sshd

sshd re-exec requires execution with an absolute path

第3章 SSH連線方式

3.1 基於賬戶密碼遠端登入

基於口令的安全驗證的方式就是大家現在一直在用的,只要知道伺服器的SSH連線帳號和口令(當然也要知道對應伺服器的 IP及開放的 SSH埠,預設為22 ),就可以通過 ssh客戶端登入到這臺遠端主機。此時,聯機過程中所有傳輸的資料都是加密的。

知道伺服器的IP埠,賬號密碼, 即可通過ssh客戶端登陸遠端主機, 遠端主機聯機過程中傳輸資料庫都是加密的。

  ~ ssh -p22 root@10.0.0.60

root@10.0.0.60`s password:

[root@m01 ~]#

3.2 基於祕鑰遠端登入

預設情況下,通過ssh客戶端登陸遠端伺服器, 需要提供遠端系統上的帳號與密碼,但為了降低密碼洩露的機率和提高登陸的方便性, 建議使用金鑰驗證方式.

 

1.在管理伺服器上生成金鑰,-t金鑰型別, -C指定使用者郵箱

[root@m01 ~]# ssh-keygen -t rsa -C 943271736@qq.com

...

預設一路回車即可, 當然也可以根據不同需求進行修改

...

2.將A伺服器上的公鑰推送至B伺服器

命令示例: ssh-copy-id [-i [identity_file]] [user@]machine

ssh-copy-id 命令

-i          指定下發公鑰的路徑

[user@]     以什麼使用者身份進行公鑰分發(root),如果不輸入,表示以當前系統使用者身份分發公鑰

machine     下發公鑰至那臺伺服器, 填寫遠端主機IP地址

 

祕鑰分發, [會將A伺服器的公鑰寫入B伺服器~/.ssh/authorized_keys檔案中]

[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.41

3.A伺服器通過金鑰方式連線B伺服器

遠端登入對端主機方式

[root@m01 ~]# ssh root@172.16.1.41

[root@nfs ~]#

不登陸遠端主機執行命令

[root@m01 ~]# ssh root@172.16.1.41 "hostname -i"

172.16.1.41

可能遇到錯誤

1.no route to host  防火牆

2.Connection refused  防火牆或服務未啟用

3.3 telnet連線

telnet連線 不加密  無法使用root使用者連線

安裝telnet服務,然後使用root登入測試

[root@web01 ~]# yum install telnet-server -y

[root@web01 ~]# systemctl start telnet.socket

使用xshell的新建標籤,輸入如下指令[登入不上]

[e:~]$ telnet 10.0.0.7

Kernel 3.10.0-862.el7.x86_64 on an x86_64

web01 login: root

Password:

Login incorrect

建立一個普通使用者,再次使用telnet登入測試

[root@web01 ~]# useradd od

[root@web01 ~]# echo "1" | passwd --stdin od

 

[e:~]$ telnet 10.0.0.7

web01 login: od

Password:

Last login: Mon Sep 10 09:57:39 from ::ffff:10.0.0.1

[od@web01 ~]$

第4章 ssh服務配置檔案

配置檔案中所有註釋資訊,表示預設引數配置

配置檔案中#空格 後面內容表示說明資訊

              #引數 表示配置引數資訊

配置檔案引數資訊修改後,一旦變為註釋,即還原為預設配置

4.1 ssh服務的配置檔案路徑

vim  /etc/ssh/sshd_config

修改SSH服務的執行引數,是通過修改配置檔案/etc/ssh/sshd_config實現的。

一般來說SSH服務使用預設的配置已經能夠很好的工作了,如果對安全要求不高,僅僅提供SSH服務的情況,可以不需要修改任何配置。

4.2 配置檔案中常用配置說明

[root@backup ~]# vim /etc/ssh/sshd_config

#       $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $

 

# This is the sshd server system-wide configuration file.  See

# sshd_config(5) for more information.

 

# This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin

 

# The strategy used for options in the default sshd_config shipped with

# OpenSSH is to specify options with their default value where

# possible, but leave them commented.  Uncommented options change a

# default value.

 

# OpenSSH is to specify options with their default value where

# possible, but leave them commented.  Uncommented options change a

# default value.

 

Port 25113                   #

ListenAddress 10.0.0.41      #監聽地址(本地網路卡地址),指定本地網路卡那個網路卡提供服務

PermitRootLogin no           #是否允許root使用者登陸

#PermitEmptyPasswords no     #禁止空密碼登陸

#UseDNS no                   #不使用DNS

GSSAPIAuthentication no      #API認證

連線慢的解決

#AddressFamily any         #指定監聽ipv4地址,或是ipv6地址,或者所有都監聽
 

配置檔案內容說明:

井號(#)註釋的引數資訊為預設配置

井號(#)後面有空格的為描述資訊

井號(#)後面沒有空格的為引數資訊

另外:配置檔案引數資訊修改後,一旦變為註釋,即還原為預設配置

4.3 配置檔案語法檢查方法

使用sshd -t 命令 對配置檔案的語法進行檢查

正確

[root@backup ~]# sshd -t /etc/ssh/sshd

Extra argument /etc/ssh/sshd.

語法格式有錯誤

[root@test ~]# sshd -t /etc/ssh/sshd_config

/etc/ssh/sshd_config: line 50: Bad configuration option: uthorizedKeysFile

/etc/ssh/sshd_config: terminating, 1 bad configuration options

4.4 SSH配置檔案相關引數

 

命令引數

引數說明

Port

指定sshd程式監聽的埠號,預設為22.可以使用多條指令監聽多個埠.

預設將在本機的所有網路接□上監聽,但是可以通過ListenAddress指走只在某個特定的介面上監聽.

PermitEmptyPasswords

是否允許密碼為空的使用者遠端登入.預設為”no”

PermitRootLogin

是否允許root登入.可用值如下:”yes”(預設)表示允許.”no”表示禁止.

“without-password”表示禁止使用密碼認證登入.”forced-commands-only”表示只有在指走了command選項的情況下才允許使用公鑰認證登入.同時其它認證方法全部被禁止.這個值常用於做遠端備份之類的事情.

1.多開一個視窗

2.臨時多部署一條連線方式

3.給普通使用者sudo許可權

UseDNS

指定定sshd是否應該對遠端主機名進行反向解折,以檢查此主機名是否與其IP地址真實對應.預設值為”yes”.

ListenAddress

指定監聽並提供服務相應的網路卡地址資訊

相關文章