使用ssh服务远程管理主机
重要命令systemctl
systemctl管理服务的启动、重启、停止、重载、查看状态的命令:
Sysvinit命令(红帽RHEL6系统) |
Systemctl命令(红帽RHEL7系统) |
作用 |
service foo start |
systemctl start foo.service |
启动服务 |
service foo restart |
systemctl restart foo.service |
重启服务 |
service foo stop |
systemctl stop foo.service |
停止服务 |
service foo reload |
systemctl reload foo.service |
重新加载配置文件(不终止服务) |
service foo status |
systemctl status foo.service |
查看服务状态 |
systemctl设置服务的开机启动、不启动、查看各级别下服务启动状态的命令:
Sysvinit命令(红帽RHEL6系统) |
Systemctl命令(红帽RHEL7系统) |
作用 |
chkconfig foo on |
systemctl enable foo.service |
开机自动启动 |
chkconfig foo off |
systemctl disable foo.service |
开机不自动启动 |
chkconfig foo |
systemctl is-enabled foo.service |
查看特定服务是否为开机自启动 |
chkconfig --list |
systemctl list-unit-files --type=service |
查看各个级别下服务的启动与禁用情况 |
了解sshd服务
SSH(Secure Shell)是一种能够提供安全远程登陆会话的协议,假如希望在远程Linux系统中执行命令,就是通过这个协议啦!
为什么要强调SSH协议是安全的呢?因为比如ftp、telnet等服务在网络上不会对口令或数据进行加密,那么骇客们真的非常容易就可以截获这些信息(尤其是同局域网内的用户),因此它们在本质是就是不安全的。
sshd服务提供两种安全验证的方法:
基于口令的安全验证:经过验证帐号与密码即可登陆到远程主机。
基于密钥的安全验证:需要在本地生成”密钥对“后将公钥传送至服务端,进行公共密钥的比较。
sshd服务的配置文件解析:
[root@fanwenting-hbza ~]# cat /etc/ssh/sshd_config
参数 |
作用 |
#Port 22 |
默认的sshd服务端口。 |
#ListenAddress 0.0.0.0 |
设定sshd服务端监听的IP地址。 |
#Protocol 2 |
SSH协议的版本号。 |
#HostKey /etc/ssh/ssh_host_key |
SSH协议版本为1时,私钥存放的位置。 |
HostKey /etc/ssh/ssh_host_rsa_key |
SSH协议版本为2时,RSA私钥存放的位置。 |
#HostKey /etc/ssh/ssh_host_dsa_key |
SSH协议版本为2时,DSA私钥存放的位置。 |
#PermitRootLogin yes |
设定是否允许root用户直接登录。 |
#StrictModes yes |
当远程用户私钥改变时则直接拒绝连接。 |
#MaxAuthTries 6 |
最大密码尝试次数 |
#MaxSessions 10 |
最大终端数 |
#PasswordAuthentication yes |
是否允许密码验证 |
#PermitEmptyPasswords no |
是否允许空密码登陆(很不安全) |
若您想要修改服务的配置参数,请一定要记得删除参数前面的注释符”#“并重启服务才生效的。
使用ssh命令
ssh命令用于远程管理Linux主机,格式为:“ssh [参数] 主机”。
参数 |
作用 |
-p |
指定连接端口(默认为22) |
-v |
显示连接过程的详细信息 |
我们现在要使用密钥对实现一台主机对另一台远程机器的管理
此时有两台都为centOS系统的虚拟机,首先将两台主机的网关设置成相同的,并且将两台主机ping通,一定要将两台虚拟机设置为桥接模式。
在网络适配器中将两台要连接的虚拟机都设置为桥接模式,并且将两台虚拟机的网关设置为相同的,保证两台虚拟机对彼此都能ping通。
网关设置相同后,ping通彼此。
此时我要使用网关为192.168.35.111的虚拟机控制192.168.35.100的虚拟机。
首先我们在网关为192.168.35.111的虚拟机上输入命令来获取一段密钥
[root@localhost network-scripts]# ssh-keygen
一直按回车键。
之后将获得的密钥copy给192.168.35.100的主机
[root@localhost network-scripts]# ssh-copy-id 192.168.35.100
然后现在在192.168.35.100的主机上打开终端输入命令来重启一下端口
[root@hbza ~]# ssh restart sshd
再转换到192.168.35.111的主机上输入命令来远程控制192.168.35.100的主机
[root@localhost network-scripts]# ssh 192.168.35.100
然后你就会发现输入密码以后你的主机名就变成另外一台主机的名称了,此时你输入的命令都会在另一台主机上执行相应的操作。
如果说你不想通过密码就可以直接进入另一台主机,需要在另一台主机上设置一下sshd端口。
将允许密码验证设为no。
允许密钥验证设置为yes。
然后保存并退出,重启sshd 生效即可。
[root@hbza ~]# systemctl restart sshd
然后再次尝试无需密码的登录即可。
远程传输命令
要想将一些文件通过网络传送给其他主机,又恰好两台主机都是Linux系统,我们便可以直接用scp命令传输文件到另外一台主机~
scp命令用于在网络中安全的传输文件,格式为:“scp [参数] 本地文件 远程帐户@远程IP地址:远程目录”。
参数 |
作用 |
-v |
显示详细的连接进度 |
-P |
指定远程主机的sshd端口号 |
-r |
传送文件夹时请加此参数 |
-6 |
使用ipv6协议 |