快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

ssh和sshd服务端的介绍和使用方法-创新互联

什么是ssh?

扬州ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!

SSH是Secure Shel 的缩写,由IETF的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH是比较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。

Secure Shell,协议
作用:数据在网络中可以加密传输
实现:openssh
客户端:openssh-client
服务器端:openssh
端口:22

实现:dropbear

telnet 
明文
客户端:telnet 
服务器端:telnet-server 
端口:23
默认情况下,禁止用root使用telnet登录系统
生产环境中使用telnet,测试和目标主机的指定端口是否可以正常的通信,也就是测试目标主机的指定端口是否开放(通过端口来判断服务是否处于开启状态)

进程

守护进程:一个服务维护一个进程,让进程工作在后台,每个进程都有自己的服务,可用service服务名 start|stop...进行管理
超级守护进程:一个服务维护多个进程
xinetd
瞬时守护进程:由超级守护进程负责管理的子进程就是瞬时守护进程
telnet
瞬时进程没有自己的服务,他的启动和管理依赖xinetd

ssh

telnet 
scp 
总结:ssh的功能
   1、远程登录
   2、远程文件传输
   3、类似于ftp的文件传输功能,sftp

ssh的客户端和服务器端
   ssh安全
   ssh v1 <<废弃
     RSA
   ssh v2
     RSA DSA
   如何通过公钥来判断服务器是合法的?

ssh的配置文件

客户端配置文件:/etc/ssh/ssh_config
服务器端配置文件 /etc/ssh/sshd_config  
linux ssh客户端收到的公钥文件的保存位置
~/.ssh/known_hosts 
ssh服务器端的ip 加密算法  秘钥

客户端工具1-SSH

客户端使用ssh两种使用方式
基于口令做登录方式
基于秘钥做登录方式  
基于口令的认证方式
格式
   ssh [options][user@]host [COMMAND]
   ssh [options][-l user] host [COMMAND]
说明:
   user:指定以哪个用户的身份登录远程主机,如果不指定user,
   则是以当前系统的用户来登录远程主机
   command:直接在远程主机上执行命令,执行完毕后自动退出
   选项:
     -p port:指定远程主机的ssh所使用的端口,如果不指定此选项,默认连接22端口
     -t :远程执行sudo命令

客户端配置文件

/etc/ssh/ssh_config

基于秘钥做登录认证(免密码登录)

原理:
客户端 
   一对秘钥
     将公钥保存在服务器端的对应账户的家目录下的隐藏文件中(.ssh)
   登录
     服务器端就会向客户端发送质询
       服务器端会用预先保存的公钥来加密一段数据,然后将加密数据发送给客户端,如果客户端可以
       解密,则是合法用户。

linux免密码登录实现过程
   准备linux虚拟机
     172.20.225.70 clinet
     172.20.225.71 server

第一步:在客户端生成一对秘钥
     #ssh-keygen -t rsa
     默认秘钥对的位置 /root/.ssh/id_rsa
       id_rsa     <<<秘钥文件
       id_rsa.pub   <<<公钥文件
     ls ~/.ssh/
     id_rsa  id_rsa.pub  

第二步:将公钥文件传到服务器端
   root登录172.20.225.70,因此,这个公钥文件需要放在172.20.225.70的root用户的家目录下
   ssh-copy-id [-i identifile] [user@]host
   说明:-i 指定公钥文件的
      user@host:指定传递到那个主机的那个用户的家目录下
   工作原理:
     1、将公钥文件传递到服务器端
     2、将传递的文件改名为authorized_keys
     3、修改文件的权限为600

实现命令
   ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.20.225.71
   服务器收到客户端的公钥文件后,会自动改名为:authorized_keys

openssh客户端
   windows客户端
     xshell
     putty
     secureCRT
     ……
   linux客户端
     ssh、sftp、scp

客户端工具2-scp

作用:在两个主机上互相的传递文件
格式:
   pull(拉取):scp [options] [user@]host:/pat/to/file /path/to/save
   push(推送):scp [options] /path/to/push [user@]host:/path/to/save

   选项:
     -r:递归
     -t:保留文件的属性不变(权限、时间戳)
     -q:静默模式
     -P port:指定使用的端口(默认使用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 拉取到本机/home/下
       #scp root@172.20.225.71:/root/11.sh /home

客户端工具3-sftp

格式:sftp IP 

ssh的服务器端的配置文件
/etc/ssh/sshd_config

#Port 22            <<<< ssh服务所监听的端口
#ListenAddress 0.0.0.0     <<<< ssh服务所监听的地址
#PermitRootLogin yes      <<<< 是否允许root远程登录
#MaxAuthTries 6         <<<< 指定大尝试次数
#MaxSessions 10         <<<< 大并行连接会话数量(同时多少个用户尝试连接服务器)
AuthorizedKeysFile  .ssh/authorized_keys  <<<<指定秘钥认证文件名称和路径
#PubkeyAuthentication yes    <<<< 是否支持秘钥认证
PasswordAuthentication yes   <<<< 是否支持口令认证
#UseDNS no           <<<<  禁止做DNS反向解析
#ClientAliveInterval 0     <<<< 设置ssh登录的空闲超时时间,单位是秒
   变量:TMOUT=xx 

#AllowUsers= user1 user2 ……   <<<< 设置白名单
#AllowGroups=gp1 gp2      <<<< 设置白名单
#DenyUsers= user1 user2     <<<< 设置黑名单
#DenyGroups=gp1 gp2       <<<< 设置黑名单
#PermitEmptyPasswords no    <<<< 设置是否允许空密码

日志设施
   记录日志的方式
   SyslogFacility AUTHPRIV
     AUTHPRIV意味着日志信息会记录到/var/log/secure

   ssh服务器端日志
     /var/log/secure
       这个日志需要经常看
       普通用户没有权限查看和修改

配置ssh实战
   1、配置监听的端口
   2、配置监听的地址
   3、禁止使用ssh v1
   4、设置用户白名单
   5、设置空闲超时时间
   6、结合防火墙设置ssd规则
   7、禁止使用弱密码(数字 字母 特殊符号 长度位8字符以上)
   8、尽量使用秘钥认证
   9、禁止使用空密码登录
   10、禁止root远程ssh
   11、限制尝试次数与并行连接数量
   12、将日志文件做异地备份
   13、经常分析查看日志文件

   centos6和centos7的区别
   service sshd status
   systemctl status sshd.service

用三个虚拟机实现如下效果

1、从A主机可以直接登录B C 两个主机
2、从A主机可以直接以远程的方式在B C 两个主机上执行命令
3:从A主机可以直接向B C 两个主机发送文件
案例:让baskup主机可以使用秘钥的方式登录web1 web2……且以普通用户身份

执行秘钥分发和文件传输等操作

1、创建普通用户(三个主机都创建)
[root@localhost ~]# useradd tuser
[root@localhost ~]# echo "123456" | passwd --stdin tuser

2、生成秘钥对
[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 ~]$ 

总结:在进行登录的时候,必须保证当前用户的家目录下有.ssh/id_rsa
在对方主机的指定用户的家目录下,必须要有公钥文件.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'

批量获取主机的信息
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

批量向主机传递文件
   让用户输入一个文件,则将文件传递到所有的主机
   如果传输成功,提示绿色成功,如果传输失败,提示红色失败,如果文件不存在,则提示无此文件。
#!/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

案例:将文件传递到目标主机的非家目录下
[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

没有权限

分两步:
   1、将文件传递到目标主机的家目录下
   2、远程执行移动命令,将家目录下的文件移动到目标位置

   [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服务

   端口
   0-65535
   小于1024的端口:是由系统保留使用的
   自定义端口通常用1024以上的端口

   端口的作用:在系统当中唯一的标识一个进程
   这样就可以现实将发送给指定端口的数据转发到指定的进程中
   系统中每个进程在启动的时候,会自动个向注册使用一个端口,当有发送到这个端口的数据的时候,
   内核会根据端口的记录转发给指定的进程。
   一个主机向另一个主机发送数据包的时候,在数据包中已经指定了这个数据包是给多少号端口的
   作用:用来实现让客户端使用22端口来远程登录
   配置文件:
   /etc/ssh/sshd_config    <<<<<这是服务端的配置文件
   /etc/ssh/ssh_config     <<<<<这是客户端的配置文件

   安全操作
   1、修改sshd的服务端口
   # vi /etc/ssh/sshd_config
    Port ***
   # service sshd restart

   2、解决xshell登录缓慢的问题
     将UseDNS yes 改为 UseDNS no
     将GSSAPIAuthentication 改为  GSSAPIAuthentication no
   3、允许root用户登录
   PermitRootLogin yes 改为no 后root用户登录不了系统

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章标题:ssh和sshd服务端的介绍和使用方法-创新互联
网站链接:http://6mz.cn/article/ddosgc.html

其他资讯