当前位置:   article > 正文

SSH远程登陆协议和TCP_ssh协议和tcp协议

ssh协议和tcp协议

目录

SSH服务

定义

优点

客户端和服务端

SSH服务端服务功能

SSH服务的开启、端口号和配置文件

SSH服务的开启

端口号

配置文件

作用

服务端常见配置

服务配置

登录

方法一

 方法二

 ssh  ip  命令

 禁止root登录

 修改端口

黑白名单

 ssh服务安全管理

使用密钥登录

原理

 sftp

scp远程复制

下行复制

 上行复制


SSH服务

定义

ssh:是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能(先加密在压缩)

  • 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,ssh为建立在应用层和传输层基础上的安全协议

优点

  • 数据传输是加密的,可以防止信息泄露
  • 数据传输是压缩的,可以提高传输速度

客户端和服务端

客户端:Xshell

服务端:Openssh

  • openssh是实现ssh协议的开源软件项目,适用于各种UNIX、Linux操作系统
  • cengtos7系统默认已安装openssh相关软件包,并将sshd服务添加为开机自启动

SSH服务端服务功能

  • ssh远程连接
  • sftp服务

SSH服务的开启、端口号和配置文件

SSH服务的开启

执行“systemctl start sshd”命令即可启动sshd服务

端口号

sshd服务默认使用的是TCP的22端口,安全协议版本sshv2,出来2之外还有1(有漏洞)

配置文件

sshd_config 是针对服务端的配置文件

ssh_config  是针对客户端的配置文件

作用

sshd服务使用SSH协议可以用来进行远程控制,或在计算机之间传送文件、相比较之前用Telnet方式来传输文件要安全很多,因为Telnet使用明文传输,ssh是加密传输

  1. sshd #服务名称
  2. /usr/sbin/sshd #服务端主程序
  3. /etc/ssh/sshd_config #服务端配置文件
  4. /etc/ssh/ssh_config #客户端配置文件

服务端常见配置

  1. Port 22 #端口
  2. ListenAddress ip #监听服务器的ip地址,可以写本地,也可0.0.0.0代表所有
  3. LoginGraceTime 2m #设定登录失败,在切断连接前服务器需等待时间,单位为秒
  4. PermitRootLogin yes #允许root登录
  5. StrictModes yes #检查ssh/文件的所有者、权限等
  6. MaxAuthTries 6 #用来设置最大失败尝试登录次数
  7. MaxSessions 10 #同一个连接最大会话
  8. PubkeyAuthentication yes #基于key验证
  9. PermitEmptyPasswords no #密码验证
  10. PasswordAuthentication yes #基于用户名和密码连接
  11. GatewayPorts no #是否允许远程主机连接本地的转发端口
  12. ClientAliveInterval 10 #设置以秒记得时长,超过该时间没收到客户端的数据会发送“alive”并等待回复,为0表示不发送“alive”仅对SSH-2有效
  13. ClientAliveCountMax 3 #在未收到客户端回应前最多允许发送多少个“alive”消息
  14. UseDNS yes #内网改为no ,禁用反向解析
  15. GSSAPIAuthentication yes #是否用户退出登录后自动销毁用户凭证缓存(仅适用于SSH-2)
  16. MaxStartups #最大允许保持多少个未认证的连接

服务配置

登录

方法一

ssh  远程主机用户名@远程服务器主机名或ip   -p  port(端口号)

      当在一台linux主机上连另一台linux主机时,如当前用户是root,对面也是root登录,可以直接使用ssh  ip   ; 端口默认,如果端口不是默认的,需要使用 -p 指定端口。

 方法二

ssh  -l  远程主机用户名   远程服务器主机名或ip    -p   port

  • -l  :指定登录名称
  • -p :指定登录端口

 ssh  ip  命令

后面可以直接跟命令,不登录查看相关信息

 禁止root登录

[root@mmm ~]# vim /etc/ssh/sshd_config

 修改端口

首先确保想改的端口号未被其他进程占用

[root@mmm ~]# vim /etc/ssh/sshd_config

 

黑白名单

  1. AllowUsers user1 user2@ip(限制主机)
  2. DenyUsers user1 user2
  3. AllowGroups g1 g2
  4. DenyGroups g1 g2

  1. [root@yyy ~]# useradd aa
  2. [root@yyy ~]# echo '123'|passwd --stdin aa
  3. [root@yyy ~]# useradd bb
  4. [root@yyy ~]# echo '123' |passwd --stdin bb
  5. [root@yyy ~]# useradd cc
  6. [root@yyy ~]# echo '123' |passwd --stdin cc

 ssh服务安全管理

  • 1、不使用默认端口
  • 2、禁止使用protocol version 1 (协议版本1)
  • 3、限制可登录用户(白名单)
  • 4、设定空闲会话超时时间
  • 5、利用防火墙设置ssh访问策略
  • 6、仅监听特定的ip地址 、公网 、内网
  • 7、设置密码复杂度,可以用“tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12| xargs”生成随机密码
  • 8、使用密钥认证
  • 9、禁止使用空密码
  • 10、禁止root用户登录
  • 11、限制ssh访问频率
  • 12、分析日志分离

使用密钥登录

原理

1、首先在客户端生成一对密钥(ssh-keygen)

2、并将客户端的公钥ssh-copy-id 拷贝到服务端

3、当客户端再次发送一个连接请求,包括ip、用户名

4、服务端得到客户端的请求后,会到authorized_keys中查找,如果有响应ip和用户,就会随机生成一个字符串,例如:ky

5、服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端

6、得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端

7、服务端接收到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录

 

 

 ssh免密登入脚本

  1. #!/bin/bash
  2. #----设置ssh免密登入-----
  3. HOST_IP_NODE=192.168.1.1
  4. HOST_PASS_NODE=0000
  5. #安装expect软件包
  6. yum install -y expect
  7. expect << EOF
  8. set timeout 5
  9. spawn ssh-keygen -t rsa
  10. expect "id_rsa):"
  11. send "\r"
  12. expect "passphrase):"
  13. send "\r"
  14. expect "again:"
  15. send "\r"
  16. expect eof
  17. EOF
  18. expect << EOF
  19. set timeout 5
  20. spawn ssh-copy-id root@$HOST_IP_NODE
  21. expect "(yes/no)?"
  22. send "yes\r"
  23. expect "password:"
  24. send "$HOST_PASS_NODE\r"
  25. expect eof
  26. EOF

免密登入多台主机

  1. #!/bin/bash
  2. #----设置ssh免密登入多台主机-----
  3. 设置要登陆的节点ip地址
  4. HOST_IP_NODE=(ip1 ip2 ip3 ip4....)
  5. HOST_PASS_NODE=(ps1 ps2 ps3 ...)
  6. #安装expect软件包
  7. yum install -y expect
  8. expect << EOF
  9. set timeout 5
  10. spawn ssh-keygen -t rsa
  11. expect "id_rsa):"
  12. send "\r"
  13. expect "passphrase):"
  14. send "\r"
  15. expect "again:"
  16. send "\r"
  17. expect eof
  18. EOF
  19. copy-id(){
  20. expect << EOF
  21. set timeout 5
  22. spawn ssh-copy-id root@$1
  23. expect "(yes/no)?"
  24. send "yes\r"
  25. expect "password:"
  26. send "$2\r"
  27. expect eof
  28. EOF
  29. }
  30. #循环遍历
  31. num=${#HOST_IP_NODE[*]}
  32. fun(){
  33. for i in 0 1 2... $num
  34. do
  35. copy-id root@${$HOST_IP_NODE[i]} ${HOST_PASS_NODE[i]}
  36. done
  37. }

 

 sftp

通过sftp可以利用ssh安全连接与远程主机上传、下载文件,采用与ftp类似的登录过程和交互式环境,便于目录资源管理

由于使用加密/解密技术,所以传输效率比普通的ftp要低,但安全性更高

scp远程复制

下行复制

从对面主机下载内容到本地

 上行复制

上传本地的内容到对面主机

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/514986
推荐阅读
相关标签
  

闽ICP备14008679号