Linux(11):期中架构--- SSH远程管理服务 & ansible 批量管理服务
Posted neozheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux(11):期中架构--- SSH远程管理服务 & ansible 批量管理服务相关的知识,希望对你有一定的参考价值。
SSH远程管理服务
1. 远程管理服务知识介绍
# 1.1 SSH远程登录服务介绍说明 SSH是Secure Shell Protocol的简写,由 IETF 网络工作小组(Network Working Group)制定; 在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密处理,加密后在进行数据传输。确保了传递的数据安全。 SSH是专为远程登录会话和其他网络服务提供的安全性协议。 利用SSH协议可以有效的防止远程管理过程中的信息泄露问题,在当前的生产环境运维工作中, 绝大多数企业普遍采用SSH协议服务来代替传统的不安全的远程联机服务软件,如telnet(23端口,非加密的)等。 在默认状态下,SSH服务主要提供两个服务功能: a 一是提供类似telnet远程联机服务器的服务,即上面提到的SSH服务; ? b 另一个是类似FTP服务的sftp-server,借助SSH协议来传输数据的,提供更安全的SFTP服务(vsftp,proftp)。 # 1.2 SSH远程登录服务排错思路 01. 检查链路是否通畅---ping(icmp协议)/tracert/traceroute 02. 检查链路是否阻断---将防火墙功能关闭 03. 检查服务是否开启---ss/netstat -lntup(服务端检查) /telnet/nmap/nc(客户端检查) # 远程管理服务对比说明: # 安装 telnet 客户端软件: yum install -y telnet # 安装 telnet 服务端软件(备份服务器): yum install -y telnet-server [[email protected] ~]# yum install -y telnet-server telnet ... [[email protected] ~]# cat /etc/xinetd.d/telnet # default: on # description: The telnet server serves telnet sessions; it uses \ # unencrypted username/password pairs for authentication. service telnet { flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/in.telnetd log_on_failure += USERID disable = no # 把 disable 由默认的 yes 改成 no ,表示 telnet 能由 xinetd 服务 } [[email protected] ~]# /etc/init.d/xinetd restart # 重启 xinetd 服务 Stopping xinetd: [ OK ] Starting xinetd: [ OK ] [[email protected] ~]# # 此时就把 telnet 服务启动了 Type `help‘ to learn how to use Xshell prompt. Xshell:\> telnet 10.0.0.41 # 用 telnet 连接远程服务器 (telnet 不能用 root 用户连接;使用 telnet ip 之前要先把 xinetd服务开启) Type `help‘ to learn how to use Xshell prompt. Xshell:\> ssh 10.0.0.41 # ssh 连接远程服务器 既可用 root 用户,也可用 普通用户
2. 远程管理服务概念详解
2.1 SSH远程管理服务加密技术 ssh连接登录过程: ①. ssh客户端发(m01主机)出连接请求 ②. ssh服务端会发出确认信息,询问客户端你是否真的要连接我 ③. ssh客户端输入完成yes,会等到一个公钥信息 [[email protected] /]# cat /root/.ssh/known_hosts 10.0.0.41 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxk0wkLuvRML5GrK8p+EU6yLAvLf5aOsnu2ydGzvn8mXuE4EdhGzGC1h9cwvMYwY7xD47aBRP/q+13T6Jh8/A580m6AaZmagS/OawtcVaseTMJEehysIqPBOD9xqPGOWK5c3vWFcW0yC1rp64axYAbrXgOEX8TddxF4rPAyinOpqMPe1ncF6hY8Zq3VxCDKIFJk//RPpO1eqM8eXLl7P1tLCLYHVvRWdjDQ2k275cPOAXiLr2Wc+KuzQUMAeLV0e/41DtMHHdI8bkrMfMMFXFPR04nZv+uv4DvX7Md/5NoGB6PkH9ozvDyqLFS7Z2m0hpomhqkaM5OtbN6rm+YrJXqQ== [[email protected] /]# ④. ssh服务端(如:备份服务器)将公钥信息发送给ssh客户端 [[email protected] ~]# cd /etc/ssh # 公钥、密钥存放路径 [[email protected] ssh]# ll total 160 -rw-------. 1 root root 125811 Mar 22 2017 moduli -rw-r--r--. 1 root root 2047 Mar 22 2017 ssh_config -rw------- 1 root root 3876 Apr 30 18:43 sshd_config -rw-------. 1 root root 3879 Mar 22 2017 sshd_config.bak -rw-------. 1 root root 668 Oct 16 2018 ssh_host_dsa_key -rw-r--r--. 1 root root 590 Oct 16 2018 ssh_host_dsa_key.pub -rw-------. 1 root root 963 Oct 16 2018 ssh_host_key -rw-r--r--. 1 root root 627 Oct 16 2018 ssh_host_key.pub -rw-------. 1 root root 1675 Oct 16 2018 ssh_host_rsa_key -rw-r--r--. 1 root root 382 Oct 16 2018 ssh_host_rsa_key.pub [[email protected] ssh]# cat ssh_host_rsa_key.pub ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxk0wkLuvRML5GrK8p+EU6yLAvLf5aOsnu2ydGzvn8mXuE4EdhGzGC1h9cwvMYwY7xD47aBRP/q+13T6Jh8/A580m6AaZmagS/OawtcVaseTMJEehysIqPBOD9xqPGOWK5c3vWFcW0yC1rp64axYAbrXgOEX8TddxF4rPAyinOpqMPe1ncF6hY8Zq3VxCDKIFJk//RPpO1eqM8eXLl7P1tLCLYHVvRWdjDQ2k275cPOAXiLr2Wc+KuzQUMAeLV0e/41DtMHHdI8bkrMfMMFXFPR04nZv+uv4DvX7Md/5NoGB6PkH9ozvDyqLFS7Z2m0hpomhqkaM5OtbN6rm+YrJXqQ== [[email protected] ssh]# ⑤. ssh客户端利用密码进行登录 加密技术分为v1和v2两个版本 sshv1版本不会经常更换锁头和钥匙,因此会有安全隐患 sshv2版本会经常更换锁头和钥匙,因此提高了远程连接安全性
3. SSH远程管理服务认证类型
# 基于密钥方式实现远程登录 ①. ssh管理服务器(m01主机)上创建密钥对信息(公钥 私钥) ②. ssh管理服务器上将公钥发送给被管理服务器(如 备份服务器) ③. ssh管理服务器向被管理服务器发送连接请求 ④. ssh被管理服务器向管理服务器发送公钥质询 ⑤. ssh管理服务器处理公钥质询请求,将公钥质询结果发送给被管理主机 ⑥. ssh被管理服务器接收公钥质询响应信息,从而确认认证成功 ⑦. ssh管理服务端可以和被管理服务端建立基于密钥连接登录
4. 基于密钥登录方式部署流程
# 第一个里程:在管理主机(如 m01主机)上创建密钥对信息 [[email protected] ~]# ssh-keygen -t dsa <-- 创建密钥对命令 -t dsa表示指定密钥对加密类型 Generating public/private dsa key pair. Enter file in which to save the key (/root/.ssh/id_dsa): <-- 确认私钥文件所保存的路径 /root/.ssh/id_dsa already exists. Overwrite (y/n)? y <-- 如果已经存在了密钥对信息,是否进行覆盖 Enter passphrase (empty for no passphrase): <-- 确认是否给私钥设置密码信息(一般为空) Enter same passphrase again: Your identification has been saved in /root/.ssh/id_dsa. Your public key has been saved in /root/.ssh/id_dsa.pub. The key fingerprint is: 46:c8:21:b9:99:6e:0c:59:39:66:38:7a:97:29:51:76 [email protected] The key‘s randomart image is: +--[ DSA 1024]----+ | o+oE | | +.B+ o | | . B Bo . | |. = B . | | . * S | | + . | | . | | | | | +-----------------+ # 第二个里程:将管理主机上公钥信息发送给被管理主机 [[email protected] ~]# ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.31 # 将管理主机上的 公钥 发送给 被管理主机上;如果管理主机想用内网连接被管理主机,则 ip 要写成内网ip,反之则用 外网ip;此时是用root身份分发公钥,所以也只能用root身份进行管理;如果想让普通用户如 oldboy 进行管理,在ip前加上 普通用户名 The authenticity of host ‘172.16.1.31 (172.16.1.31)‘ can‘t be established. RSA key fingerprint is 22:07:4d:36:3c:5e:eb:46:80:a2:ef:40:45:8c:93:46. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added ‘172.16.1.31‘ (RSA) to the list of known hosts. [email protected]172.16.1.31‘s password: Now try logging into the machine, with "ssh ‘172.16.1.31‘", and check in: .ssh/authorized_keys # 公钥文件保存在了 172.16.1.31 主机 root 用户家目录下的 .ssh/ 目录下 to make sure we haven‘t added extra keys that you weren‘t expecting. [[email protected] ~]# # 公钥文件保存在了 172.16.1.31 主机 root 用户家目录下的 .ssh/ 目录下 [[email protected] ~]# cd /root/.ssh/ [[email protected] .ssh]# ll total 4 -rw------- 1 root root 598 May 24 14:17 authorized_keys [[email protected] .ssh]# # 第三个里程:进行远程管理测试(基于密钥的方式进行远程管理) [[email protected] ~]# ssh 172.16.1.31 # 不需要密码直接登陆被管理主机 Last login: Fri May 24 14:15:34 2019 from 10.0.0.253 [[email protected] ~]# [[email protected] ~]# ssh 172.16.1.31 uptime # 不登陆被管理主机 查看被管理主机的状况 14:31:30 up 26 min, 1 user, load average: 0.00, 0.00, 0.00 [[email protected] ~]#
5. SSH配置文件
# SSH服务端配置文件: /etc/ssh/sshd_config # SSH客户端配置文件: /etc/ssh/ssh_config # SSH服务端配置文件信息说明(/etc/ssh/sshd_config) Port 52113 <- 修改ssh服务端口号信息 (端口号要在1024之后);修改端口号的连接方式: ssh -p端口号 ip ListenAddress 0.0.0.0 <- 指定哪个地址建立网络连接:0.0.0.0 表示全部网卡都处于被监听状态,即都可做出响应;10.0.0.31 表示只有该网卡处于被监听状态;主要作用提升网络连接安全性 PS:监听地址只能配置为服务器网卡上拥有的地址 PermitRootLogin no <- 是否允许root用户远程登陆(企业环境中一般设置为 no ) PermitEmptyPasswords no <- 是否允许空密码 UseDNS no <- 是否进行DNS反向解析(提升ssh远程连接效率) GSSAPIAuthentication no <- 是否进行远程GSSAPI认证(提升ssh远程连接效率) # 修改完配置文件后要重启 ssh 服务端服务: /etc/init.d/sshd restart
6. SSH远程传输方法 --- sftp
# 命令如: sftp -oPort=52113 [email protected] # sftp常用操作命令总结 bye Quit sftp <-- 表示退出sftp传输模式 cd path Change remote directory to ‘path‘ <-- 改变远程目录信息 pwd Display remote working directory <-- 显示远程主机当前目录信息 lcd path Change local directory to ‘path‘ <-- 改变本地目录路径信息 lpwd Print local working directory <-- 输出本地目录路径信息 get [-P] remote-path [local-path] Download file <-- 下载文件命令 put [-P] local-path [remote-path] <-- 上传文件命令 Upload file
以上是关于Linux(11):期中架构--- SSH远程管理服务 & ansible 批量管理服务的主要内容,如果未能解决你的问题,请参考以下文章