Linux下 SSH遠程管理服務

第1章 SSH基本概述

1.1 SSH服務協議說明

SSH 是 Secure Shell Protocol 的簡寫,由 IETF 網絡工做小組(Network Working Group )制定html

在進行數據傳輸以前,SSH先對聯機數據包經過加密技術進行加密處理,加密後在進行數據傳輸。確保了傳遞的數據安全。linux

SSH是專爲遠程登陸會話和其餘網絡服務提供的安全性協議。利用 SSH 協議能夠有效的防止遠程管理過程當中的信息泄露問題,在當前的生產環境運維工做中,絕大多數企業廣泛採用SSH協議服務來代替傳統的不安全的遠程聯機服務軟件,如telnet(23端口,非加密的)等。web

在默認狀態下,SSH服務主要提供兩個服務功能:shell

一是提供相似telnet遠程聯機服務器的服務,即上面提到的SSH服務。數據庫

另外一個是相似FTP服務的sftp-server,藉助SSH協議來傳輸數據的.提供更安全的SFTP服務(vsftp,proftp)。vim

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

指定監聽並提供服務相應的網卡地址信息

相關文章
相關標籤/搜索