1 SSH  Secure Shell Protocol。 远程登录,sftp服务。


2 ssh linux下的客户端就是ssh,可以实现远程拷贝 scp。


3 linux下的ssh 服务  /etc/init.d/sshd start

   ps -ef | grep sshd     netstat -lntup | grep sshd

  

4 检测是否可连上某个服务器的服务

   a: 检测物理网络是否通   ping ip

   b: telnet 端口 ,看看服务是不是开了


5 ssh 两个版本,2稳定,1有漏洞。


6 linux ssh客户端功能包括ssh远程连接和scp远程拷贝; ssh服务端包括远程登录服务和sftp服务。


7 rpm -qa openssh openssl

   远程连接是 openssh  ,远程加密是openssl


8 ssh 版本不同是连接不上的 ,ssh 是daemon进程


9 ssh 配置文件

   /etc/ssh/ssh_config  客户端

   /etc/ssh/sshd_config  服务端

  

10 ssh 2版本支持两种秘钥 RSA 和 DSA , ssh1 只支持 RSA


11 ssh 认证类型

    a:基于口令的验证, 账号密码形式

    b:基于秘钥的验证,服务端产生秘钥对,公钥放到服务端,私钥放到客户端。


12  ssh 企业级安装设置

     a: 修改端口,限制某一个ip登录,只允许内网IP登录,不允许root登录


13  sshd_conf 编辑(ssh 服务端优化)

      Port 端口修改

      ListenAddress  接听地址修改  IP:Port

      GSSAPIAuthentication no  将yes注释掉,连接慢就是这个影响的

      UseDNS no  将use dns改成no,连接慢也是这个影响的

      PermitRootLogin no禁止root用户登录

      PermitEmptyPasswords no  禁止空密码登录

      /etc/init.d/sshd reload 平滑重启


14  远程连接 ssh -p{Port}  {username}@IP


15  visudo   给用户提权

       添加    username   All=(All)  NOPASSWORD:All



16 如何防止ssh登录入侵

     用秘钥登录,上面sshd_conf 配置(牤牛阵法),防火墙关闭ssh,制定源IP限制(局域网,信任公网),开启ssh只监听本地内网IP,尽量不给服务器外网IP

     

17 ssh 命令

   连接 :  ssh -p{端口号}  {用户名}@ip  {command}

   ~/.ssh/know_hosts 客户端存放服务端公钥的文件

   

   scp 远程拷贝

   

    scp  -P{端口号}  -r(目录拷贝) -p(保持属性) /etc/hosts   {username}@ip:/tmp


     例子: 推数据 :  scp -P5213 -rp /etc  sshuser@ip:/tmp

                拉数据:   scp -P5213  -rp   sshuser@ip:/tmp  /etc


       -l  属性 限速,防止在拷贝的时候占满带宽。

       -t  属性 打开终端。


    sftp 上传


    sftp -oPort={端口号}   {远程用户名}@ip

   

    上传:

    连上后, put {文件}   将本地文件上传到服务端

    例子 :  put   /etc/hosts   上传到家目录


                put  /etc/hosts   /tmp  上传到/tmp 目录下


    下载:

          get  /etc/hosts /home



    sftp 不支持目录,需要打包。(限定sftp登录后只限定指定目录下,不允许切换到其他目录)


   18  ssh 批量管理

         a:创建用户及密码(在所有机器上创建用户)

            useradd test

            echo 123456 | passwd --stdin test

        b: 生成秘钥

           su - test

           ssh-keygen -t rsa

           非交互式创建秘钥

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

       c: 将公钥发到管理机上

           ssh-copy-id  -i  ~/.ssh/id_rsa.pub "-p {port} test@ip"

           (最终的在管理机上的名字  .ssh/authorized_keys,文件名是在 /etc/ssh/sshd_conf 中配置的)

   

     19: sudo 实现没有权限用户拷贝

           suid  实现没有权限用户拷贝(工作中不要用)

           sudo 提权方法


           visudo


          底下添加

           test         ALL=(ALL)          NOPASSWORD: /usr/bin/rsync

           用户名         所有角色,可以 ALL=  就是root     不需要password可以执行的命令


          echo "test  ALL=(ALL)  NOPASSWORD: /usr/bin/rsync" >>/etc/sudoers

         visudo -c 检查语法

         使用远程sudo,需要加参数 -t     /etc/sudoers 里查-t


20 非交互式  expect (sshpass,pssh)

     rpm -qa expect

     非交互式生成密钥并批量管理

     !#/usr/bin/expcet

     spawn ssh-copy-id  -i  ~/.ssh/id_rsa.pub "-p {port} test@ip"

     expect {

               "yes/no"  {send "yes\r" :exp_continue}

               "password {send "$password\r"}

       }