ssh远程管理
服务应用:
rsync nfs sersync 运维: 怎么连接服务器 SSH 怎么批量部署
1.SSH基本概述
SSH是Secure shell Protocol的简写
在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密处理,加密后进行数据传输,确保了传递的数据安全
1).远程连接方式有哪些 talnet属于明文连接方式,监听在本地23/tcp端口 ssh属于密文连接方式,监听在本地22/tcp端口 2).SSH远程连接与Telnet远程连接区别 ssh服务是加密服务协议,telnet服务是非加密服务协议 ssh服务默认支持root用户登录,telnet默认不支持root用户登录 3).SSH远程服务主要功能 1.提供远程连接服务器的服务 2.对传输的数据进行加密 4).具体应用 telnet主要应用在内网,针对网络设备(路由器,交换机,防火墙) ssh针对服务器 通过端口镜像抓其他交换机接口的包
案例:使用vireshark验证telnet明文传输与ssh加密传输
环境:
远程服务器:CentOS7.7 m01 10.0.1.71
客户端:windows 10 wrieshark
1.安装telnet-server,实现telnet服务
[ ~]# yum install -y telnet-server
[ ~]# systemctl start telnet.socket
2.创建普通用户,用来登录telnet
[ ~]# useradd oldboy
[ ~]# echo 123456 | passwd --stdin oldboy
测试服务器端口有没有开启
telnet 10.0.1.71 22
ss -Intup | grep 22
netstat -Intup
nmap -p 22 10.0.1.71
nc 10.0.1.71 22
ssh连接抓包结果
telnet抓包结果
2.SSH相关命令
是一个典型的C/S架构
客户端: Linux openssh-clients ssh命令 Windows Xshell SecureCRT、Putty 服务端 openssh-server
配置文件
服务端: [ ~]# rpm -qc openssh-server /etc/ssh/sshd_config 客户端: [ ~]# rpm -qc openssh-clients /etc/ssh/ssh_config 客户端其他工具: [ ~]# rpm -ql openssh-clients /usr/bin/scp ***** --远程拷贝命令 /usr/bin/sftp --远程文件传输命令 /usr/bin/slogin --远程登录命令 /usr/bin/ssh ***** --远程连接登录命令 /usr/bin/ssh-copy-id ***** --远程分发公钥命令 [ ~]# rpm -ql openssh /usr/bin/ssh-keygen ***** --ssh秘钥生成工具 openssh软件分析 [ ~]# yum list openssh* Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com Installed Packages openssh.x86_64 7.4p1-21.el7 @anaconda openssh-clients.x86_64 7.4p1-21.el7 @anaconda openssh-server.x86_64 7.4p1-21.el7 [ ~]# rpm -ql openssh-server /etc/ssh/sshd_config --ssh服务配置文件 /usr/sbin/sshd --ssh服务进程启动命令
ssh客户端包含ssh以及像scp(远程拷贝)、slogin(远程登录)、sftp(安全FTP文件传输)等应用程序
1).ssh远程登录服务器命令 ssh -p22 10.0.1.71 [commad] # ssh命令 # -p(小写),用于指定远程主机端口,默认22端口可省略 # # "@"前面为用户名,如果用当前用户连接,可以不指定用户 # "@"后面为要连接的服务器的IP 2).scp复制数据至远程主机命令(全量复制) # scp命令 # -p(大写)指定端口,默认22端口可不写 # -r 表示递归拷贝目录 # -p 表示在拷贝文件前后保持文件或目录属性不变 # -l 限制传输使用带宽(默认kb) 推:PUSH,上传 # scp -P22 -rp /tmp/oldboy 10.0.1.71:/tmp # /tmp/oldboy为本地的目录 # "@"前为用户名 # "@"后为要连接的服务器的IP # IP后的:/tmp目录,为远端的目标目录 # 说明:以上命令作用是把本地/tmp/oldboy推送至远端服务器10.0.1.71的/tmp目录 拉:PULL,上传 # scp -P22 -rp 172.16.1.51:/etc/passwd /tmp/ # 还可以将远端目录或文件拉取至本地 结论 1.scp通过加密进行远程拷贝文件或目录的命令 2.scp拷贝权限为连接的用户对应的权限 3.scp支持数据的推送和拉取,但每次都是全量拷贝,效率低下。 3).xftp远程数据传输命令 一般采用图形化界面实现
3.SSH连接方式
1).基于账户密码远程登录 知道服务器的IP端口,账号密码,即可通过ssh客户端登录远程主机,远程主机联机过程中传输数据库都是加密的。 ssh -p22 10.0.1.51 Last login: Thu Jan 23 15:01:11 2020 from 10.0.1.1 [ ~]# 2).基于秘钥远程登录 默认情况下,通过ssh客户端登陆远程服务器,需要提供远程系统上的账号与密码,但为了降低密码泄露的几率和提高 登陆的方便性,建议使用秘钥验证方式
实验:
mo1 通过秘钥远程登录backup
实验步骤:
1.在m01上生成秘钥对,-t秘钥类型,-C描述信息 [ ~]# ssh-keygen -t rsa -C Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): #秘钥保存的路径和文件名,直接回车,为默认值,不建议修改 Enter passphrase (empty for no passphrase): #设置秘钥加密的密码,不建议设置,直接回车 Enter same passphrase again: #再次确认密码,不建议设置,直接回车 命令执行后,一路回车到底 2.将公钥传到backup的~/.ssh/authorized_keys //命令示例:ssh-copy-id [-i [identity_file]] []machine ssh-copy-id //命令 -i //指定下公钥的路径 [] //以什么用户身份进行公钥分发(root),如果不输入,表示以当前系统用户身份分发公钥 machine //下发公钥至哪台服务器,填写远程主机IP地址 [ ~]# ssh-copy-id -i .ssh/id_rsa.pub 172.16.1.51 [ ~]# ls -a .ssh/ //不登录主机执行命令 [ ~]# ssh 172.16.1.51 "free -m" total used free shared buff/cache available Mem: 972 103 774 7 94 748 Swap: 2047 0 2047
加个需求:
rsync服务器需用被nfs服务器通过ssh使用秘钥登录
1.在nfs服务器上生成密钥对 [ ~]# ssh-keygen -t rsa -C nfs 2.将nfs上的公钥分发到backup服务器上 [ ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub 172.16.1.51
使用windows公钥登录服务器
1.使用Xshell生成密钥对
工具->新建用户密钥向导->下一步一直到用户密钥信息->修改密钥名称后,下一步到最后
2.将公钥传到需要登录的服务器上。
1)创建存放公钥的目录及文件
mkdir ~/.ssh chmod 700 ~/.ssh vim ~/.ssh/authorized_keys,将xshell生成的公钥复制进来,保存退出 chmod 600 ~/.ssh/authorized_keys
4.SSH访问控制
Port 6666 #变更SSH服务远程连接端口 ListenAddress 10.0.1.71 #绑定本地内网地址 PermtRootLogin #是否允许root用户远程登录 PasswordAuthentication #是否允许使用密码登录 UseDNS #是否进行dns反向解析,影响ssh连接效率参数 GSSAPIAuthentication #是否进行认证,影响ssh连接效率参数