溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

linux下ssh和sshd-RH124學(xué)習(xí)筆記

發(fā)布時(shí)間:2020-07-25 16:46:16 來(lái)源:網(wǎng)絡(luò) 閱讀:189 作者:李超超超超 欄目:系統(tǒng)運(yùn)維

什么是ssh?

Secure Shell,協(xié)議
作用:數(shù)據(jù)在網(wǎng)絡(luò)中可以加密傳輸
實(shí)現(xiàn):openssh
客戶(hù)端:openssh-client
服務(wù)器端:openssh
端口:22

實(shí)現(xiàn):dropbear

遠(yuǎn)程登錄

telnet 
明文
客戶(hù)端:telnet 
服務(wù)器端:telnet-server 
端口:23
默認(rèn)情況下,禁止用root使用telnet登錄系統(tǒng)
生產(chǎn)環(huán)境中使用telnet,測(cè)試和目標(biāo)主機(jī)的指定端口是否可以正常的通信,也就是測(cè)試目標(biāo)主機(jī)的指定端口是否開(kāi)放(通過(guò)端口來(lái)判斷服務(wù)是否處于開(kāi)啟狀態(tài))

進(jìn)程

守護(hù)進(jìn)程:一個(gè)服務(wù)維護(hù)一個(gè)進(jìn)程,讓進(jìn)程工作在后臺(tái),每個(gè)進(jìn)程都有自己的服務(wù),可用service服務(wù)名 start|stop...進(jìn)行管理
超級(jí)守護(hù)進(jìn)程:一個(gè)服務(wù)維護(hù)多個(gè)進(jìn)程
xinetd
瞬時(shí)守護(hù)進(jìn)程:由超級(jí)守護(hù)進(jìn)程負(fù)責(zé)管理的子進(jìn)程就是瞬時(shí)守護(hù)進(jìn)程
telnet
瞬時(shí)進(jìn)程沒(méi)有自己的服務(wù),他的啟動(dòng)和管理依賴(lài)xinetd

ssh

telnet 
scp 
總結(jié):ssh的功能
    1、遠(yuǎn)程登錄
    2、遠(yuǎn)程文件傳輸
    3、類(lèi)似于ftp的文件傳輸功能,sftp

ssh的客戶(hù)端和服務(wù)器端
    ssh安全
    ssh v1 <<廢棄
        RSA
    ssh v2
        RSA DSA
    如何通過(guò)公鑰來(lái)判斷服務(wù)器是合法的?

ssh的配置文件

客戶(hù)端配置文件:/etc/ssh/ssh_config
服務(wù)器端配置文件 /etc/ssh/sshd_config   
linux ssh客戶(hù)端收到的公鑰文件的保存位置
~/.ssh/known_hosts 
ssh服務(wù)器端的ip 加密算法  秘鑰

客戶(hù)端工具1-SSH

客戶(hù)端使用ssh兩種使用方式
基于口令做登錄方式
基于秘鑰做登錄方式   
基于口令的認(rèn)證方式
格式
    ssh [options][user@]host [COMMAND]
    ssh [options][-l user] host [COMMAND]
說(shuō)明:
    user:指定以哪個(gè)用戶(hù)的身份登錄遠(yuǎn)程主機(jī),如果不指定user,
    則是以當(dāng)前系統(tǒng)的用戶(hù)來(lái)登錄遠(yuǎn)程主機(jī)
    command:直接在遠(yuǎn)程主機(jī)上執(zhí)行命令,執(zhí)行完畢后自動(dòng)退出
    選項(xiàng):
        -p port:指定遠(yuǎn)程主機(jī)的ssh所使用的端口,如果不指定此選項(xiàng),默認(rèn)連接22端口
        -t :遠(yuǎn)程執(zhí)行sudo命令

客戶(hù)端配置文件

/etc/ssh/ssh_config

基于秘鑰做登錄認(rèn)證(免密碼登錄)

原理:
客戶(hù)端 
    一對(duì)秘鑰
        將公鑰保存在服務(wù)器端的對(duì)應(yīng)賬戶(hù)的家目錄下的隱藏文件中(.ssh)
    登錄
        服務(wù)器端就會(huì)向客戶(hù)端發(fā)送質(zhì)詢(xún)
            服務(wù)器端會(huì)用預(yù)先保存的公鑰來(lái)加密一段數(shù)據(jù),然后將加密數(shù)據(jù)發(fā)送給客戶(hù)端,如果客戶(hù)端可以
            解密,則是合法用戶(hù)。

linux免密碼登錄實(shí)現(xiàn)過(guò)程
    準(zhǔn)備linux虛擬機(jī)
        172.20.225.70 clinet
        172.20.225.71 server

第一步:在客戶(hù)端生成一對(duì)秘鑰
        #ssh-keygen -t rsa
        默認(rèn)秘鑰對(duì)的位置 /root/.ssh/id_rsa
            id_rsa         <<<秘鑰文件
            id_rsa.pub     <<<公鑰文件
        ls ~/.ssh/
        id_rsa  id_rsa.pub  

第二步:將公鑰文件傳到服務(wù)器端
    root登錄172.20.225.70,因此,這個(gè)公鑰文件需要放在172.20.225.70的root用戶(hù)的家目錄下
    ssh-copy-id [-i identifile] [user@]host
    說(shuō)明:-i 指定公鑰文件的
          user@host:指定傳遞到那個(gè)主機(jī)的那個(gè)用戶(hù)的家目錄下
    工作原理:
        1、將公鑰文件傳遞到服務(wù)器端
        2、將傳遞的文件改名為authorized_keys
        3、修改文件的權(quán)限為600

實(shí)現(xiàn)命令
    ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.20.225.71
    服務(wù)器收到客戶(hù)端的公鑰文件后,會(huì)自動(dòng)改名為:authorized_keys

openssh客戶(hù)端
    windows客戶(hù)端
        xshell
        putty
        secureCRT
        ……
    linux客戶(hù)端
        ssh、sftp、scp

客戶(hù)端工具2-scp

作用:在兩個(gè)主機(jī)上互相的傳遞文件
格式:
    pull(拉?。簊cp [options] [user@]host:/pat/to/file /path/to/save
    push(推送):scp [options] /path/to/push [user@]host:/path/to/save

    選項(xiàng):
        -r:遞歸
        -t:保留文件的屬性不變(權(quán)限、時(shí)間戳)
        -q:靜默模式
        -P port:指定使用的端口(默認(rèn)使用22端口)

        推送例子:將本地文件/root/new1.txt推送到172.20.225.71的tmp目錄下
            #scp /root/new1.txt root@172.20.225.71:/tmp/

        拉取例子:將172.20.225.71下/root/11.sh 拉取到本機(jī)/home/下
            #scp root@172.20.225.71:/root/11.sh /home

客戶(hù)端工具3-sftp

格式:sftp IP 

ssh的服務(wù)器端的配置文件
/etc/ssh/sshd_config

#Port 22                       <<<< ssh服務(wù)所監(jiān)聽(tīng)的端口
#ListenAddress 0.0.0.0         <<<< ssh服務(wù)所監(jiān)聽(tīng)的地址
#PermitRootLogin yes           <<<< 是否允許root遠(yuǎn)程登錄
#MaxAuthTries 6                <<<< 指定最大嘗試次數(shù)
#MaxSessions 10                <<<< 最大并行連接會(huì)話數(shù)量(同時(shí)多少個(gè)用戶(hù)嘗試連接服務(wù)器)
AuthorizedKeysFile  .ssh/authorized_keys   <<<<指定秘鑰認(rèn)證文件名稱(chēng)和路徑
#PubkeyAuthentication yes      <<<< 是否支持秘鑰認(rèn)證
PasswordAuthentication yes     <<<< 是否支持口令認(rèn)證
#UseDNS no                     <<<<  禁止做DNS反向解析
#ClientAliveInterval 0         <<<< 設(shè)置ssh登錄的空閑超時(shí)時(shí)間,單位是秒
    變量:TMOUT=xx 

#AllowUsers= user1 user2 ……    <<<< 設(shè)置白名單
#AllowGroups=gp1 gp2           <<<< 設(shè)置白名單
#DenyUsers= user1 user2        <<<< 設(shè)置黑名單
#DenyGroups=gp1 gp2            <<<< 設(shè)置黑名單
#PermitEmptyPasswords no       <<<< 設(shè)置是否允許空密碼

日志設(shè)施
    記錄日志的方式
    SyslogFacility AUTHPRIV
        AUTHPRIV意味著日志信息會(huì)記錄到/var/log/secure

    ssh服務(wù)器端日志
        /var/log/secure
            這個(gè)日志需要經(jīng)???            普通用戶(hù)沒(méi)有權(quán)限查看和修改

配置ssh實(shí)戰(zhàn)
    1、配置監(jiān)聽(tīng)的端口
    2、配置監(jiān)聽(tīng)的地址
    3、禁止使用ssh v1
    4、設(shè)置用戶(hù)白名單
    5、設(shè)置空閑超時(shí)時(shí)間
    6、結(jié)合防火墻設(shè)置ssd規(guī)則
    7、禁止使用弱密碼(數(shù)字 字母 特殊符號(hào) 長(zhǎng)度位8字符以上)
    8、盡量使用秘鑰認(rèn)證
    9、禁止使用空密碼登錄
    10、禁止root遠(yuǎn)程ssh
    11、限制嘗試次數(shù)與并行連接數(shù)量
    12、將日志文件做異地備份
    13、經(jīng)常分析查看日志文件

    centos6和centos7的區(qū)別
    service sshd status
    systemctl status sshd.service

用三個(gè)虛擬機(jī)實(shí)現(xiàn)如下效果

1、從A主機(jī)可以直接登錄B C 兩個(gè)主機(jī)
2、從A主機(jī)可以直接以遠(yuǎn)程的方式在B C 兩個(gè)主機(jī)上執(zhí)行命令
3:從A主機(jī)可以直接向B C 兩個(gè)主機(jī)發(fā)送文件
案例:讓baskup主機(jī)可以使用秘鑰的方式登錄web1 web2……且以普通用戶(hù)身份

執(zhí)行秘鑰分發(fā)和文件傳輸?shù)炔僮?
1、創(chuàng)建普通用戶(hù)(三個(gè)主機(jī)都創(chuàng)建)
[root@localhost ~]# useradd tuser
[root@localhost ~]# echo "123456" | passwd --stdin tuser

2、生成秘鑰對(duì)
[root@localhost ~]# su - tuser
[tuser@localhost ~]$ ssh-keygen -t rsa

3、傳遞秘鑰
[tuser@localhost ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub tuser@172.20.225.70
[tuser@localhost ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub tuser@172.20.225.71

4、登錄
[tuser@localhost ~]$ ssh root@172.20.225.70
root@172.20.225.70's password: 
免密登錄 
[tuser@localhost ~]$ ssh tuser@172.20.225.70
[tuser@client ~]$ 

總結(jié):在進(jìn)行登錄的時(shí)候,必須保證當(dāng)前用戶(hù)的家目錄下有.ssh/id_rsa
在對(duì)方主機(jī)的指定用戶(hù)的家目錄下,必須要有公鑰文件.ssh/authorized_keys

[tuser@localhost root]$ ssh tuser@172.20.225.70 '/sbin/ip add'
[tuser@localhost root]$ ssh tuser@172.20.225.71 '/sbin/ip add'

批量獲取主機(jī)的信息
userName="tuser"
for i in 67 68 69 70 71
do
        ip="172.20.225.$i"
        if ! ping -c1 -W1 $ip &>/dev/null;then
                echo "The host $ip is not exist."
        else
                res=`ssh ${userName}@${ip} '/bin/df -h | grep sda1'`
                echo "==========================ip:$ip====================="
                echo "The disk use infomation:$res"
        fi
done

批量向主機(jī)傳遞文件
    讓用戶(hù)輸入一個(gè)文件,則將文件傳遞到所有的主機(jī)
    如果傳輸成功,提示綠色成功,如果傳輸失敗,提示紅色失敗,如果文件不存在,則提示無(wú)此文件。
#!/bin/bash
#author:lichao
#date:20190809
#function: use ssh to send file
#mail:chao.il@qq.com

userName="tuser"
funFile=/etc/init.d/functions
if [ ! -e $funFile ];then
    echo "Error. the funcation file not exist."
    exit 19
else
    . $funFile
fi

read -p "Please enter a file: " fileName
if [ ! -e $fileName ];then
    echo "no such file."
    echo "bye."
    exit 12
fi 

for i in 70 71
do
    ip="172.20.225.$!"
    if ping -c1 -W1 $ip &>/dev/null;then
        if scp -rq $fileName $userName@$ip:~/;then
            action "send file to $ip" /bin/true
        else
            aciton "send file to $ip" /bin/false
        fi
    else
        action "send file to $ip" /bin/false
    fi 
done

案例:將文件傳遞到目標(biāo)主機(jī)的非家目錄下
[tuser@localhost root]$ echo "test page".test.page
test page.test.page
[tuser@localhost ~]$ scp test.page tuser@172.20.225.70:/etc/
scp: /etc//test.page: Permission denied
[tuser@localhost ~]$ scp test.page tuser@172.20.225.70:~/
test.page

沒(méi)有權(quán)限

分兩步:
    1、將文件傳遞到目標(biāo)主機(jī)的家目錄下
    2、遠(yuǎn)程執(zhí)行移動(dòng)命令,將家目錄下的文件移動(dòng)到目標(biāo)位置

    [tuser@localhost ~]$ scp test.page2 tuser@172.20.225.70:~/
    test.page2                          100%   10    10.8KB/s   00:00

    bash-4.2# ls /home/tuser/
    .bash_history  .bash_logout   .bash_profile  .bashrc        .ssh/          test.page      test.page2 
    bash-4.2# visudo
    tuser   ALL=(ALL)       NOPASSWD: /bin/mv

    [tuser@localhost ~]$ ssh -t tuser@172.20.225.70 'sudo mv ~/test.page2 /etc/'
    Connection to 172.20.225.70 closed.

    bash-4.2# ls /etc/te
    terminfo/   test.page1  test.page2  

配置sshd服務(wù)

    端口
    0-65535
    小于1024的端口:是由系統(tǒng)保留使用的
    自定義端口通常用1024以上的端口

    端口的作用:在系統(tǒng)當(dāng)中唯一的標(biāo)識(shí)一個(gè)進(jìn)程
    這樣就可以現(xiàn)實(shí)將發(fā)送給指定端口的數(shù)據(jù)轉(zhuǎn)發(fā)到指定的進(jìn)程中
    系統(tǒng)中每個(gè)進(jìn)程在啟動(dòng)的時(shí)候,會(huì)自動(dòng)個(gè)向注冊(cè)使用一個(gè)端口,當(dāng)有發(fā)送到這個(gè)端口的數(shù)據(jù)的時(shí)候,
    內(nèi)核會(huì)根據(jù)端口的記錄轉(zhuǎn)發(fā)給指定的進(jìn)程。
    一個(gè)主機(jī)向另一個(gè)主機(jī)發(fā)送數(shù)據(jù)包的時(shí)候,在數(shù)據(jù)包中已經(jīng)指定了這個(gè)數(shù)據(jù)包是給多少號(hào)端口的
    作用:用來(lái)實(shí)現(xiàn)讓客戶(hù)端使用22端口來(lái)遠(yuǎn)程登錄
     配置文件:
     /etc/ssh/sshd_config       <<<<<這是服務(wù)端的配置文件
     /etc/ssh/ssh_config        <<<<<這是客戶(hù)端的配置文件

     安全操作
    1、修改sshd的服務(wù)端口
    # vi /etc/ssh/sshd_config
      Port ***
     # service sshd restart

    2、解決xshell登錄緩慢的問(wèn)題
        將UseDNS yes 改為 UseDNS no
        將GSSAPIAuthentication 改為  GSSAPIAuthentication no
    3、允許root用戶(hù)登錄
    PermitRootLogin yes 改為no 后root用戶(hù)登錄不了系統(tǒng)
向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI