Linux服务之---ssh服务

更多架构文章猛戳这里:超大型集群架构技术文档
1. 什么是ssh?
1. ssh是建立在应用层上的安全远程管理协议,可为远程登录会话和其他网络服务提供安全性
2. ssh的登录验证模式有哪些?
1. 账户密码验证 (1) 客户端向服务器发送请求连接 (2) 服务器发送公钥给客户端 (3) 客户端使用公钥加密账户密码并发送给服务器 (4) 服务器用私钥解密,获取到账户密码,与服务器本地的信息匹配才允许登录 2. 密钥对验证 (1) 首先需要在客户端创建一对密钥,并且需要把公钥放在需要访问的服务器上 (2) 客户端请求连接服务器时,需向服务器发送登录请求,请求使用密钥对中的公钥进行安全验证 (3) 服务端收到请求后,会在请求用户的家目录下查询公钥文件,并将客户端请求公钥与家目录下的进行对比 (4) 如果公钥一致的话,服务端会使用客户端公钥加密一串"质疑"信息,并发送给客户端,客户端收到后会使用本地的私钥进行解密,再使用服务端公钥加密再发给服务端,服务端验证成功则允许登录
3. 用户登录验证
1. 账户密码登录 'ssh 用户名@IP地址' ssh root@192.168.5.3 2. linux主机之间只是用密钥对验证登录,此时需要两台linux机器 '客户端: 192.168.5.3 client' '服务端: 192.168.5.4 server' # client配置 # 1. 首先在cliet生成密钥对文件 [root@client ~]# ssh-keygen -t rsa -b 2048 -t 指定加密类型 -b 指定密钥对加密长度 '输入此命令之后 会出现两条询问信息,解释走一波' 1. 密钥文件保存位置默认为用户家目录下的.ssh/目录下 2. 是否使用密码加密密钥对文件,加密时调用密钥文件需先使用密码,不加密则可直接使用 # 2. 将公钥文件上传至server(注意 使用下面的命令后,只针对于root有用) '将自己的公钥上传至对方服务器的用户家目录下,即可使用此用户免密登录服务器' [root@client .ssh]# ssh-copy-id root@192.168.5.4 # 需输入yes,以及服务端root的密码 # 3. 直接使用client连接server '密钥对验证优先级大于账户密码的优先级' [root@client ~]# ssh root@192.168.5.4 # 这个就相当于设置了免密码登录... 3. windows客户端使用xshell连接服务器 (1) xshell---工具---新建用户密钥生成导向---密钥类型(rsa)密钥长度(2048)---下一步---? '此时上面的?号里面其实是是否给用户密钥加密,如果加密的话使用密钥对登陆时还需要密码验证' (2) 将公钥导入到服务器的指定用户下的指定公钥配置文件---authorized_keys(此时先用root) '如果上述文件没有,则需先新建此文件,另外公钥可以从xshell里面的用户密钥的属性里获取' (3) 尝试使用xhell客户端进行登录,选择密钥登录即可
4. sshd的几个小小配置内容
1. 禁止使用root远程登录 [root@client ~]# vim /etc/ssh/sshd_config PermitRootLogin yes # 将上述yes更改为no即可禁止使用密码登录,默认为yes '禁用root登陆后,还可使用su、sudo等来临时获取root权限' 2. 禁止使用密码登录 [root@client ~]# vim /etc/ssh/sshd_config PasswordAuthentication yes # 将上述yes修改为no即可禁止使用密码登录,默认为yes 3. 修改默认端口、限制ssh监听ip [root@client ~]# vim /etc/ssh/sshd_config Port 50000 # 尽量修改一个高位端口(1-65535),默认为22 ListenAddress 192.168.5.1 '多网卡情况下可以使用监听内网ip,即别人不能通过另一个外网ip访问到本机' # ssh root@192.168.5.1 100 # 修改ssh请求登录的端口为100 # ssh -p 100 root@192.168.5.1 # 此条命令适用于linux
5. ssh服务相关的命令
1. scp命令----用于安全的远程文件复制命令(很常用!!!最起码初学常用) # 主要用于linux下进行远程拷贝文件的命令,加密传输,可能会影响速度,但不会占用太多性能 scp 本地文件 用户名@服务器IP:目录 '默认情况下使用本条命令即可' scp /root/init.sh root@192.168.5.4:/root/ '在更改过ssh端口号的情况下,需要使用-P来设置端口选项' scp -P 100 /root/init.sh root@192.168.5.4:/root/ 'scp传输限速处理' # 限速默认单位为kb,如要限速10M,则 10*1024*8=81920 [root@server ~]# scp -P 100 -l 81920 1111.txt root@172.16.5.5:/tmp/ 2. sftp----安全的文件复制命令 # 跟scp基本上一模一样,,,不过会比scp更安全一些,自然传输效率也就比scp慢一些 sftp -oPort=100 root@172.16.5.4 # 如果端口默认为22则不需要使用-oPort '将文件上传到服务器' put [本地文件的地址] [服务器上文件存储的位置] # 将本地nginx文件上传到172.16.5.4/root/test # sftp> put nginx.sh /root/test/ '将文件从服务器下载到客户端' get [服务器上文件存储的位置] [本地要存储的位置] # 将172.16.5.4/root/test/index.html文件下载到本地的/root/newnew.html # sftp> get /root/test/index.html /root/newnew.html
6. TCP Wrappers(这是个什么东西)
1. Tcp_Wrapper是一个工作在传输层的安全工具,主要功能就是控制谁可以访问,常见的程序有vsftp,sshd,telnet等 2. Tcp_Wrapper的工作原理 以ssh为例,当有ssh请求连接时会先读取设置的访问控制文件,符合要求,则会把这此连接原封不动转给ssh进程,由ssh完成后续操作,如果不符合,则会终端连接请求 3. Tcp_Wrapper使用方法 '主要依靠两个配置文件/etc/hosts.allow和/etc/hosts.deny' (1) # 拒绝单个IP使用ssh远程连接,需要在hosts.deny里面添加 sshd:192.168.1.1 (2) # 拒绝某一网段使用ssh远程连接,需要在hosts.deny里面添加 sshd:192.168.1. (3) # 仅允许某一个ip使用ssh远程连接 hosts.allow: sshd:192.168.1.1 hosts.deny: sshd:ALL 'allow优先级大于deny,所以先允许192.168.1.1,接着拒绝所有'
7. 补充内容 telnet(有时候测试会用到此命令)
# 现在telnet主要就是用于测试网络以及端口连通性。。 '使用telnet不支持登录root用户' [root@client ~]# yum -y install telnet [root@client ~]# telnet 192.168.5.4 22 Trying 192.168.5.4... Connected to 192.168.5.4. Escape character is '^]'. -------出现此状态则表示端口已打开 SSH-2.0-OpenSSH_7.4 # windows使用cmd窗口连接linux,其linux端需要安装telnet-server 1. linux端安装telnet-server(安装telnet服务端) [root@server ~]# yum -y install telnet-server 2. linux端启动telnet-server [root@server ~]# systemctl start telnet.socket 3. linux端创建用户并设置密码 [root@server ~]# useradd zhangsan [root@server ~]# echo "123" | passwd zhangsan --stdin 4. windows端打开telnet服务(控制面板---卸载程序---启用或关闭windows功能----勾选telnet客户端即可) 5. windows端打开cmd窗口 6. 输入 telnet 172.16.5.5 接着输入linux创建的用户名密码即可
更多架构文章猛戳这里:超大型集群架构技术文档
更多架构文章猛戳这里:超大型集群架构技术文档
更多架构文章猛戳这里:超大型集群架构技术文档


还没有评论,来说两句吧...