Linux网络服务之SSH

SSH基础
SSH概念

SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能;
SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令;
SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。
SSH使用传输层TCP协议的22号端口。
SSH客户端<--------------网络---------------->SSH服务端

SSH的优点
SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。
利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
S S H最初是U N I X系统上的一个程序,后来又迅速扩展到其他操作平台。
S S H在正确使用时可弥补网络中的漏洞。
客户端包含ssh程序以及像scp(远程拷贝)、slogin(远程登陆)、sftp(安全文件传输)等其他的应用程序。

数据传输的过程是加密的,具有安全稳定的特点
数据传输的方式是压缩的,可以提高传输速度

常见的SSH服务软件/工具
客户端软件:

Linux 客户端: ssh, scp, sftp,slogin
Windows 客户端:xshell, MobaXterm,putty, securecrt, ssh secure shell client
服务端软件:

软件名sshd,闭源。
软件名openssh,服务名sshd。CENTOS 7默认安装的是这个软件包。
二:ssh原理      
2.1(公钥传输原理)
1. ssh客户端通过ssh-keygen生成自己的公钥和私钥,将公钥发送给ssh服务端,并且放在指定的位置。
2.公钥发送完毕后。ssh客户端再向ssh 服务端进行登录请求。
3.ssh服务端收到ssh客户端的登录请求后,ssh服务端用对应的公钥加密一些随机数返回给ssh客户端。
4.ssh客户端收加密的随机数后使用私钥对其进行解密,再将解密的结果发送给ssh服务端进行验证。
5. ssh服务端接收到ssh客户端发送过来的解密数据,将其与原数据进行比对,保持一致则允许用户进行登录

2.2登录
 ssh  [远程主机用户名]@[远程服务器主机名或IP地址] [-p port]

  (如当前所登录的用户是 root 的话,当连接另一台主机时也是用 root 用户登录时,可以直接使用 ssh IP,端口默认即可,如果端口不是默认的情况下,需要使用-p 指定端口。)

 ssh -l [远程主机用户名] [远程服务器主机名或IP 地址] -p port

ssh连接时直接跟命令,连接后命令立即生效。例如跟 ls 命令:

 2.3 known_hosts 文件
文件位置:~/.ssh/known_hosts

ssh会把每个你访问过的服务端的公钥(public key)都记录在known_hosts 文件中。 同时服务端也会记录客户端的公钥。

A通过ssh首次连接到B,B会将公钥1(host key)传递给A,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。

3 sshd服务端配置
sshd服务端配置文件:/etc/ssh/sshd_config

#Port 22        //端口号,生产环境建议修改端口号
ListenAddress 0.0.0.0     #监听地址为任意网段,也可以指定OpenSSH服务器的具体IP
#LoginGraceTime 2m      //发起连接后多少时间内必须登录,超时断开连接
#PermitRootLogin yes    //是否允许root用户登录,ubantu不允许root远程ssh登录
#StrictModes yes    //检查.ssh/文件的所有者,权限等
#MaxAuthTries 6      //最多允许输错几次密码(centos7默认3次,修改也无效)
#MaxSessions 10    //同一时间最多允许10个远程连接
#PermitEmptyPasswords no    //是否允许空密码用户登录
PasswordAuthentication yes    //基于用户和密码验证  ​
#UseDNS no      //禁用反向解析,提高速度可设置为no
PubkeyAuthentication yes         #启用密钥对验证
#设置黑白名单    
AllowUsers yuji@192.168.72.10 lisi    白名单   //只允许yuji用户从192.168.72.10访问,允许lisi从所有地址访问
DenyUsers liwu    黑名单  //不允许使用liwu用户登录
#PermitRootLogin yes

注释掉是默认允许root远程登录

PermitRootLogin no

取消注释,yes改为no 是禁止root用户远程登录

 #白名单的优先级高于黑名单。如果一个用户同时加入了白名单和黑名单,那么该用户是可以访问的。  #如果不设置白名单,则所有用户都可以登录访问。一旦设置了白名单,那么只有白名单内的用户可以访问

 sftp命令scp远程复制
SFTP是SSH File Transfer Protocol的缩写,安全文件传送协议。SFTP与FTP有着几乎一样的语法和功能。SFTP为SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。

sftp命令格式:sftp [用户名@]IP地址

sftp连接后的常用命令:

 get    下载文件
 get -r    下载目录
put    上传文件
put -r    上传目录
quit、exit、bye    退出


scp远程复制
将远程主机的/etc/passwd文件复制到本机

[root@localhost opt]# scp root@192.168.233.22:/opt/yht.txt   /opt/rh  #复制文件
[root@localhost rh]# scp -r root@192.168.233.22:/opt/ky27/ /opt/    #复制目录
[root@localhost rh]# scp -rP 10022 root@192.168.233.22:/opt/ky27/ /opt/   #如果不是默认端口22,要加P 大写的

 注意书写格式  冒号前后没有空格

设置免密码登录
免密码原理流程:

首先在客户端生成一对密钥(ssh-keygen)。
并将客户端的公钥ssh-copy-id 拷贝到服务端。
当客户端再次发送一个连接请求时,包括ip、用户名。
服务端得到客户端的请求后,会到 authorized_keys 文件中查找,如果有相应的IP和用户,就会随机生成一个字符串,例如:kfc。
服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端。
得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端。
服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就进行免密码登录。
相关命令:

ssh-keygen -t ecdsa  (ssh-keygen命令的“-t”选项用于指定算法类型)

cd ~/.ssh/
 ssh-copy-id  -i id_ecdsa.pub zhangsan@192.168.72.129

设置ssh代理功能,实现免交互登录
ssh-agent bash
ssh-add

输入密钥后面就可以进行免密钥登录

 如果之前密钥生成时 不设密码,那么这里也就不需要输入密钥了  也就可以免密钥免密码登录了

如果之前设置了密钥密码,则要进行下面的操作

TCP Wrappers 访问控制
TCP_Wrappers是一个工作在第四层(传输层)的的安全工具,对有状态连接的特定服务进行安全检测并实现访问控制,凡是包含有libwrap.so库文件的的程序就可以受TCP_Wrappers的安全控制。它的主要功能就是控制谁可以访问,常见的程序有 rpcbind、vsftpd、sshd、telnet。

有些进程不受tcp_wrappers管理,例如 httpd、smb、squid等。

工作原理
TCP_Wrappers有一个TCP的守护进程叫作tcpd。以ssh为例,每当有ssh的连接请求时,tcpd即会截获请求,先读取系统管理员所设置的访问控制文件,符合要求,则会把这次连接原封不动的转给真正的ssh进程,由ssh完成后续工作;如果这次连接发起的ip不符合访问控制文件中的设置,则会中断连接请求,拒绝提供ssh服务。

保护机制实现方式:

方式1:通过tcpd程序对其他服务程序进行包装
方式2:由其他服务程序调用libwrap.so.*链接库
 访问控制策略的配置文件
白名单:/etc/hosts.allow

黑名单:/etc/hosts.deny

白名单的优先级高于黑名单,如果一个地址既在白名单也在黑名单中,该地址是可以访问的。


————————————————
版权声明:本文为CSDN博主「zhangchang3」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhangchang3/article/details/129431461

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值