zoukankan      html  css  js  c++  java
  • linux下的SSH服务

    SSH是 Secure Shell Protocol的简写,主要用于远程登录!

    以前使用telnet登录(23端口)他不是加密的,而ssh(22端口)是加密的

    ssh有两个重要功能

    1,远程连接登录服务

    2,SFTP功能(安全的FTP),可以使用scp传输文件,也是通过ssh协议工作

    ssh结构

    rpm -qa openssl openssh

    openssl-1.0.1e-42.el7.x86_64       加密
    openssh-6.6.1p1-11.el7.x86_64   远程连接

    SSH配置文件

    ssh配置文件(有用的)

    vim  /etc/ssh/sshd_config

    • Protocol  2  #协议
    • Port   22  #端口
    • ListenAddress  10.0.0.0/24:22  #监听的IP
    • PermitEmptyPasswords  #是否允许密码为空的用户登录,默认no
    • PermitRootLogin    #是否允许root 登录,默认yes(禁止SSH登录)
    • UseDNS   #禁止反向解析
    • GSSAPIAuthentication yes   #SSH远程登录慢,关闭改为no

    需要重启ssh服务才能生效

    /etc/init.d/sshd restart

    远程连接命令

    ssh -p22 daxian@10.0.0.123 /sbin/ifconfig eth0

    报错信息:

    ssh:connect to host 10.0.0.123 port 22:Connection refused

    解决办法:(连接被拒绝)

    1. 防火墙没关(/etc/init.d/iptables stop)
    2. 端口没开(更改端口 或者 服务没启)

    基于密钥安全认证

    管理服务器  相当于钥匙(私钥), 每台客户端服务器放锁(公钥)

    第一步创建用户跟密码(根据上图,所有服务器都要创建用户)

    useradd daxian007
    
    echo 12345|passwd --stdin daxian007

    第二步 生成密钥

    su - daxian007    #切换用户

    ssh-keygen
    -t dsa #创建密钥对

    cd .ssh
    ls
    id_dsa 私钥 id_dsa.pub 公钥

    一键生成密钥对(脚本中经常用到)

    ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa >/dev/null 2>&1

    第三部 发送公钥(发送到所有机器上)

    ssh-copy-id -i .ssh/id_dsa.pub daxian007@192.168.70.125

    如果端口更改了

    ssh-copy-id -i .ssh/id_dsa.pub -p 22 daxian007@192.168.70.125

    第四部 测试一下(查看IP地址)

     ssh -p22 daxian007@192.168.70.125 /sbin/ifconfig eth0

    ssh -p22 daxian007@192.168.70.126 /sbin/ifconfig eth0 

    命令最好使用全路径

    第五步 测试 分发hosts

    创建一些数据给hosts

    su -
    
    cat >>/etc/hosts<<EOF
    > 192.168.70.125 web01
    > 192.168.70.126 web02
    > 192.168.70.127 web03
    > 192.168.70.128 web04
    > 192.168.70.129 web05
    > EOF
    
    su - daxian007

    cp /etc/hosts ./


    发送hosts给所有服务器(如果拷贝到/etc/daxian007是没有权限的)

    sudo授权(所有机器)

    echo "daxian007 ALL=(ALL) NOPASSWD: /usr/bin/rsync " >>/etc/sudoers
    #也可以 放置cp命令 visudo
    -c

    开始分发

    cp /etc/hosts ./
    scp hosts 192.168.70.125:~ #拷贝hosts到125家目录下 hosts 100% 263 0.3KB/s 00:00
    ssh -t daxian007@192.168.70.125 sudo rsync ~/hosts /etc/hosts
    #使用ssh -t 执行sudo rsync 复制到/etc/下

    或者 rsync加密的,增量的
    rsync -avz ./hosts  -e 'ssh -p 22' daxian007@192.168.70.125:~
    ssh -t daxian007@192.168.70.125 sudo rsync ~/hosts /etc/hosts

    批量管理脚本实现

    #!/bin/sh
    . /etc/init.d/functions
    for n in 125 126 127 128 129
    do
      scp -P22 ~/hosts daxian007@192.168.70.${n}:~
      ssh -p22 -t daxian007@192.168.70.${n} sudo rsync ~/hosts /etc/hosts
    done
  • 相关阅读:
    Python-http请求
    MacOs Big Sur 11.0.1 安装python报错
    linux 根据时间删除某个目录下的文件
    记一次文件上传遇到的坑(文件名|文件格式乱码)
    json_schema参数校验
    K8s
    python实时视频流播放
    pycharm永久激活
    客户端ajax请求为实现Token验证添加headers后导致正常请求变为options跨域请求解决方法
    webstorm修改文件,webpack-dev-server及roadhog不会自动编译刷新
  • 原文地址:https://www.cnblogs.com/sky00747/p/8135832.html
Copyright © 2011-2022 走看看