ssh远程连接服务 ssh目的:实现远程管理和自动化运维。a

常用的服务 服务名 软件包 功能 sshd openssh—server 用来远程连接的服务 vsftpd vsftpd 文件名服务器,提供文件共享,用于存储 nfs nfs—utils 文件服务器 smb samba 文件服务器 tftp tftp-servser 迷你的ftp文件服务器 rsyslog rsyslog 日志服务 dhcpd dhcp 动态分配IP 地址 pxe dhcp+tftp+kickstat+vsftpd/http 自动化部署(系统,初始化) Apache httpd web服务器即网站服务器 bind named DNS 域名解析服务

cat /e tc/services (记录各个服务所对应的端口号) 例如:grep -w ftp /etc/services

常见的网络服务协议,名称级端口号 网络端口的作用:区分不同的服务或应用软件。 查当前电脑的21端口的网络进程:netstat -atulp | grep :21 或者 ss -atnlp 注释:a显示所有进程 t显示tcp协议进程 u显示udp协议进程 n以数字显示端口号
p显示pid号 l显示状态为listen监听的进程 r显示路由表 ftp:文件传输协议。21(控制端口)被动,20(数据端口)主动 http:超文本传输协议。用于web网站服务器。端口80 dns:域名系统。端口53。 dhcp:动态主机配置协议。服务器端67,客户端68 ssh:安全的shell。用于远程管理服务器的协议。端口 22 smtp:简单邮件传输协议。用于发送邮件。端口:25 pop3:邮局协议。端口110 snmp:简单网络管理协议。端口161

查看所有的网络进程状态:netstat -atunlp | more

proto :协议 Recv-Q:接收 Send-Q:发送 Local Address :外来地址 Foreign Address:外来地址 State:状态 PID/Program name :进程pid号/程序号

ssh 作用:提供远程连接 远程拷贝 数据加密 双机互信 确保已完成以下工作: 1.已关闭防火墙 2.已关闭selinux 3.已关闭NetworkManager 4.已配置固定的ip地址 5.yum配置好 实施: systemctl status firewalld systemctl stop firewalld 临时关闭防火墙 systemctl disable firewalld getenforce 查selinux状态 setenforce 0 临时设置selinux状态为permissive宽容模式(立即生效) sed -i 's/=enforcing/=disabled/' /etc/selinux/config 修改配置文件(reboot重启生效)

systemctl restart network 重启网络服务 ifconfig 或 ip a 查IP地址 ifconfig ens33:0 192.168.10.8 给ens33网卡临时添加一个新IP地址,:0为虚拟接口 ifconfig ens33:1 192.168.10.9

测试yum源是否可用: yum clean all yum repolist

附加练习:修改虚拟机的主机名(计算机名)。操作如下。 hostname server.up.com 临时修改主机名为server.up.com(立即生效) bash 开启新的命令行解释器(命令界面) vim /etc/hostname 修改后的内容如下(永久生效,但必须reboot重启才会生效) server.up.com 新主机名。 环境: 服务器(虚拟机) ip:192.168.10.7 主机名:server.up.com 客户端(物理机) ip:192.168.10.1 主机名:client.up.com

ssh客户端远程连接ssh服务器:ssh 用户名@主机IP 例:ssh root@192.168.10.7 回车后输入root密码即可

服务器: 查看软件包是否安装

rpm -qa | grep openssh

openssh-clients-5.3p1-94.el6.x86_64 客户端 openssh-server-5.3p1-94.el6.x86_64 服务器端 openssh-5.3p1-94.el6.x86_64 软件包套件 工作模式:c/s架构 即C客户端---》S服务器

端口:22 查:netstat -atnlp | grep :22 或 lsof -i :22

1.安装软件包 yum install openssh-server -y

查看软件包安装产生的文件 rpm -ql openssh-server /etc/pam.d/sshd pam认证(登录的身份验证规则) /etc/rc.d/init.d/sshd 启动脚本(centos6) /usr/lib/systemd/system/sshd.service 启动脚本(centos7) /etc/ssh/sshd_config 主配置文件 /etc/sysconfig/sshd 脚本的配置文件 /usr/sbin/sshd 守护进程 /usr/sbin/sshd-keygen 服务器端的密钥生成器 /usr/libexec/openssh/sftp-server sftp服务端(ssh的文件共享服务) /usr/share/doc/openssh-server-5.3p1 帮助文档 2.配置服务 rpm -qc openssh-server 查软件的配置文件 cat -n /etc/ssh/sshd_config #Port 22 // 默认的端口22,行号17 #AddressFamily any //支持任意地址簇(ipv4/ipv6),行号18 #ListenAddress 0.0.0.0 //监听在任何ipv4地址上(即指定提供服务的IP地址),行号19 #ListenAddress :: //监听在任何ipv6地址上 Protocol 2 //协议版本 SyslogFacility AUTHPRIV //定义日志的对象。日志文件是/var/log/secure #LogLevel INFO //日志的级别 #LoginGraceTime 2m //2分钟不输入密码就禁止的登陆 #PermitRootLogin yes //允许管理员登陆(行号49) #StrictModes yes //请用严格模式 #MaxAuthTries 6 //最多可以尝试6次(行号51),建议设置为1或2。防止暴力破解。 #MaxSessions 10 //允许最大会话10个(行号52)。建设设置小一点。防止太多用户远程连接。 #RSAAuthentication yes //启用RSA认证(行号54)。是采用密钥文件认证。 #PubkeyAuthentication yes //启用公钥认证(行号55)。是采用密钥文件认证。 #PasswordAuthentication yes //采用密码认证 #PermitEmptyPasswords no //密码为空不能登陆 PasswordAuthentication yes #UseDNS yes //是否采用dns解析,建议设置成no,否则远程连接时会卡很久 #PidFile /var/run/sshd.pid //pid文件位置 GSSAPIAuthentication yes //启用GSSAPI接口认证,建议设置为no,否则远程连接时可会卡很久。API是应用程序接口的缩写。 X11Forwarding yes 启用X11转发功能(行号115)。即支持在ssh客户端调用xwindow桌面程序。 Subsystem sftp /usr/libexec/openssh/sftp-server 子系统,启用sftp文件共享功能(行号146)

3.启动服务 centos6的操作: /etc/rc.d/init.d/sshd start /etc/init.d 是/etc/rc.d/init.d的软连接 /etc/init.d/sshd start service sshd restart 开机启动:chkconfig sshd on

centos7的操作: systemctl restart sshd.service 开机启动:systemctl enable sshd.service

通过端口排错 netstat -tulnp | grep sshd -t tcp协议 -u udp协议 -l listening -n 以数字方式显示 不把端口翻译为协议 -p 进程名

lsof -i:22 //有返回值表示服务处于监听状态

客户端: 1.安装软件包 rpm -qa | grep openssh 查 yum install openssh-clients -y 装

查看软件包安装产生的文件 rpm -ql openssh-clients /etc/ssh/ssh_config //配置文件 /usr/bin/scp //远程拷贝 /usr/bin/sftp //sftp客户端 /usr/bin/ssh //远程连接 /usr/bin/ssh-add //密钥传递失败用此命令 /usr/bin/ssh-copy-id //传递密钥 /usr/bin/ssh-keyscan //密钥扫描

rpm -ql openssh
/usr/bin/ssh-keygen //客户端的密钥生成器

客户端进行管理 远程管理 查帮助:man ssh

ssh 192.168.10.7 默认以当前系统用户的身份远程登录到192.168.10.7的服务器

usage: ssh [-l login_name] hostname | user@hostname [command] -l login_name 指定登录远程主机的用户. ssh -l tom 192.168.1.252 //以tom用户的登陆 ssh tom@192.168.1.252 //以tom用户的登陆

-v 显示连接过程

临时在服务器上做指定的操作(远程执行命令) ssh 192.168.10.7 ip a ssh 192.168.1.252 useradd jim

-p port (publickey,gssapi-keyex,gssapi-with-mic,password).

指定远程主机的端口. ssh 192.168.1.250 -p 2250 注:此测试,要先将ssh服务器的sshd_config配置文件设置Port 2250,重启sshd服务后再远程连接

-X 允许 X11 转发.

可以在远程系统上使用本地图形化的配置

服务端需要开启相关的功能 X11Forwarding yes (publickey,gssapi-keyex,gssapi-with-mic,password). 开启X11转发协议

客户端启用X11协议 ssh -X 192.168.10.7

远程复制 用法:scp -r 来源 目标 把服务器上的/opt目录拷贝到本地的/tmp目录 下载

scp -r 192.168.10.7:/opt/ /tmp

把本地文件/etc/*.conf上传到服务器/tmp/

scp -r /etc/*.conf root@192.168.10.7:/tmp/

#验证:ssh root@192.168.10.7 ls /tmp 远程清空tmp目录:ssh root@192.168.10.7 'rm -rf /tmp/*' 注:命令必须用引号括起来

-r 递归执行,用于复制目录 -v 显示过程 -p 保留源文件属性


安全无密码连接 密钥(双机互信) 如果客户端连接服务器无需密码。客户端上需要生成一对密钥(公钥、私钥),公钥传给服务器,那么服务器收到公钥,客户端连接服务器就不需要密码。

客户端配置(192.168.10.1或192.168.8.?): 1.生成密钥 ssh-keygen

root用户的密钥位置 cd /root/.ssh id_rsa 私钥(自己 (publickey,gssapi-keyex,gssapi-with-mic,password). 用) id_rsa.pub 公钥 (给别人的) known_hosts 指纹(ssh服务器自动传过来的公钥)

2.把公钥发给服务器上的node1用户: ssh-copy-id node1@192.168.10.7 回车后输入node1用户的密码

ssh-copy-id -i id_rsa.pub 192.168.1.252

公钥信息保存在ssh服务器的/home/node1/.ssh/authorized_keys

3.测试客户端连接服务端不需要密码 ssh node1@192.168.10.7

常见错误: 1.

ssh 192.168.1.252 //出错

ssh: connect to host 192.168.1.252 port 22: No route to host 1.检测是否有ip地址 2.检测服务器和客户端是否能ping通 3.检测网卡连接方式

2.做双击互信。连接任然还要密码 远程连接时报如下错误,请在客户机上执行ssh-add后再连。

ssh-add 密钥传送失败选者此命令

3.网络服务正常无法连接 rm -rf ~/.ssh/known_hosts

登陆的历史记录: last lastlog lastb 登陆失败记录

######################################################### sshfs实现挂载远程的目录到本地 yum install -y fuse-sshfs sshfs jack7-1:/etc/ansible /test (需要注意挂载点要是空目录) 如果要实现开机挂载,可以写入开机启动加载的配置文件

卸载就umount就好 ######################################################### sshpass自动登登陆到ssh sshpass -p password ssh -o StrictHostKeyChecking=(首次登陆不问yes) command 也可以将密码写入文件 pass sshpass -f pass ssh -o StrictHostKeyChecking=no(首次登陆不问yes) command 此用法主要用于脚本中 加上非i交互生成密钥:ssh-keygen -P "" -f /root/.ssh/id_rsa sshpass -f pass ssh-copy-id -o StrictHostKeyChecking=no -i /root/.ssh/id_rsa.pub HOST

实现脚本做双机互信 #######################################################

基于已经做过双机互信-------再结合轻量管理工具pssh,可实现小型架构的管理 如果公司架构大,还是建议用saltstack或者ansible,扩展更多,更加系统化

pssh -H IP -i command
-H 主机 -i 输出结果 -h 主机名文件 还有附带的命令 类似scp的pscp.pssh pslurp pscp.pssh:将本地文件拷贝到远程 pslurp:从远程拉取文件到本地

个人认为没有ansible或saltstack好用

类似openssh的shell管理工具dropbear

需要编译安装,没有rpm,deb包。 类似ssh的功能。但是没有ssh功能强大,好用。