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 [email protected] 回车后输入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 [email protected] //以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 [email protected]:/tmp/
#验证:ssh [email protected] ls /tmp
远程清空tmp目录:ssh [email protected] '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 [email protected] 回车后输入node1用户的密码
ssh-copy-id -i id_rsa.pub 192.168.1.252
公钥信息保存在ssh服务器的/home/node1/.ssh/authorized_keys
3.测试客户端连接服务端不需要密码
ssh [email protected]
常见错误:
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