三台Centos7虚拟机之间实现ssh,rsh互连,虚拟机和本机基于ssh进行文件传输
前言:实现内容如题,这两天在做这个,看了很多博客和一些教程,虽然实现过程磕磕绊绊,但是最后还是实现了。在此记录一下实现的过程,供大家学习参考(操作可能有误,欢迎大家评论区批评指正)
- 本机操作系统:windows10 使用虚拟机:VMware Workstation16 Pro 虚拟机操作系统:Centos7
- 准备:安装三个Centos7的虚拟机或者装一个虚拟机再复制另外两个,虚拟机的IP地址你可以自己定,只要别用特殊的IP地址就行了我这里的为(这里IP地址的前三位要去查一下本机对于虚拟机分配的地址(详情之后内容会涉及),要保证在同一个网段之中,只有最后一位是你自己设定的):
一,配置网络
1.首先配置网络让三台虚拟机之间可以相互ping通。这里只展示一台虚拟机如何配置,另外两台的本质上同理
点击此处打开网络编辑器,如下图所示:
点击“修改设置(这里是获取管理员权限,如果已经是管理员权限的就不用了)”——>“NAT设置”
这里要确保网关和子网在同一个网段,就是前面说的192.168.154这前三个数字要相同。具体在哪看?在本机命令行输入ipconfig,找到虚拟机的适配器对应的IP地址,如下图所示:
然后要做的是对于本机网络的配置:开始菜单->运行->services.msc或从控制面板中找到“服务”一项打开,找到以vmware开头的服务,确保都启用。
2.然后就是对于虚拟机的配置了:
-
切换权限为超级用户:在终端输入
su -
-
关闭防火墙(这个很重要,不然会报错No route to host):
- 先输入
systemctl stop firewalld
命令关闭防火墙,然后输入systemctl disable firewalld
命令禁用防火墙即可
- 先输入
-
关闭SWLINUX(Linux安全内核模块):
终端输入vim /etc/selinux/config
修改命令:SELINUX=disabled。系统重启后,新的设置才能生效。
-
修改主机名(hostbname):
- 这个也很重要,不然会出现系统识别不出对应的虚拟机的情况,因为名字都一样
- 具体修改是通过命令
hostnamectl set-hostname ***
,然后重启系统就可以了,如果想查看主机名可以通过指令hostname。改完名字之后你会发现你的终端前面显示的主机名变了。
3.配置Centos网络
通过命令到cd /etc/sysconfig/network-scripts
到网络配置的目录下,找到当前虚拟机使用的网络的配置文件,我这里的是ifcfg-ens32。
修改其中的配置文件如下所示(主要是加上你刚刚设定的IPADDR。而子网掩码、网关、域名这些好像不加也没什么问题),修改用vim ifcfg-ens32
命令进入就可以修改了,VIM的具体使用方法网上教程很多:
4.修改host映射
通过命令vim /etc/hosts
进入,加上所需的各个虚拟机的IP地址和主机号即可
修改完之后需要重启一下网络,使用命令service network restart
即可,就算没有重启成功你把虚拟机重启一遍也是可以的。
5.以同样的方式配置另外两台虚拟机
如上所述,如果不出意外,三台虚拟机之间应该可以相互ping通,下图是在master上ping了slave1和在slave1上ping了slave2的演示。
二、实现SSH互通
1,安装并且启用SSH
Centos是默认安装的(使用rpm -qa|grep
查看是否安装,没安装就使用yum install openssh-server
j进行安装),使用命令service sshd start
启动ssh服务,使用命令chkconfig sshd on
设置开机启动,
2,令三台虚拟机各自生成密钥,将各自的公共密钥传到同一台虚拟机中合并成钥匙
首先分别修改三台虚拟机的ssh配置文件,使用vim /etc/ssh/sshd_config
命令进入,将下列内容前面的#去掉即可。
-
Port22
-
PermitRootLogin yes
-
PubkeyAuthentication yes(允许公钥认证)
-
PasswordAuthentication yes(允许RSA认证)
-
AuthorizedKeysFile .ssh/authorized_keys (公钥存放在.ssh/au…文件中)
修改之后通过命令
service sshd restart
重启ssh服务即可。以下内容比较重要,在此分割
然后通过命令
ssh-keygen -t rsa
生成密钥,指令执行期间会问你存放路径的问题,如果你不想改路径的话就一路回车使用默认路径即可。
默认存放的路径为~/.ssh/,之后使用scp id_rsa.pub root@master:/root/.ssh/ id_rsa.pub.slave1
命令来实现将公钥传至主机(在slave1上操作时,向master发送公钥,为了不与master的公钥重复,因此在最后加上.slave1作为标识,slave2同理,)
将其都传入主机是为了生成authorized_keys文件,包含所有机器的公钥。生成authorized_keys,此时在master的/root/.ssh/ 至少应该有id_rsa.pub.slave1 id_rsa.pub.slave2和id_rsa.pub三个文件,将三个公钥内容添加到同一文件authorized_keys中具体执行以下命令:
cd ~/.ssh/
cat id_rsa.pub >> authorized_keys
cat id_rsa.pub.slave1 >> authorized_keys
cat id_rsa.pub.slave2 >> authorized_keys
此时,拥有该文件的虚拟机可以被另两台虚拟机直接登录,实现了ssh无密码验证互通,将此文件发送给slave1和slave2的/root/.ssh后,使三台虚拟机用root用户可以相互直接登录:
scp authorized_keys slave1:/root/.ssh/authorized_keys
scp authorized_keys slave2:/root/.ssh/authorized_keys
此时在master或slave2的terminal中输入ssh slave1
,便可登录slave1,以此类推。展示如下
三、实现RSH互通
1、安装相关服务
rsh是需要先安装的,使用yum -y install rsh*
安装相关服务,使用rpm -qa | grep rsh
检查是否安装成功,使用service xinetd restart
启动rsh服务。而在这里如果报错说不知道什么是xinetd那说明你没有安装xinetd,使用yum install -y xinetd
命令进行安装即可。
2、添加相关配置文件
2.1在目录/etc/xinetd.d/下分别添加rsh,rlogin,rexec文件,其中文件内容为(**重点在于保证disable = no **):
#rsh
service shell {
disable = no
socket_type = stream
wait = no
user = root
log_on_success += USERID
log_on_failure += USERID
server = /usr/sbin/in.rshd
}
#rlogin
service login {
disable = no
socket_type = stream
wait = no
user = root
log_on_success += USERID
log_on_failure += USERID
server = /usr/sbin/in.rlogind
}
#rexec
service exec {
disable = no
socket_type = stream
wait = no
user = root
log_on_success += USERID
log_on_failure += USERID
server = /usr/sbin/in.rexecd
}
2.2然后在目录/etc/securetty中添加rexec,rsh,rlogin,可以直接打开添加,也可以通过命令
echo "rsh" >> /etc/securetty
echo "rlogin" >> /etc/securetty
echo "rexec" >> /etc/securetty
具体内容如下所示:
2.3在目录/etc/hosts.equiv下添加其余虚拟机信息
2.4在/root/下创建**.rhosts**文件,文件内容和/etc/hosts.equiv相同
2.5执行下列命令启动服务
systemctl restart rsh.socket
systemctl restart rlogin.socket
systemctl restart rexec.socket
systemctl enable rsh.socket
systemctl enable rlogin.socket
systemctl enable rexec.socket
2.6启动xinetd,使用命令systemctl restart xinetd
,然后通过rsh命令就可以实现接入其他的虚拟机了
三、虚拟机和本机基于SSH进行文件传输
下载安装SSH Secure Shell Client 3.2.9 连接:**http://xiazai.zol.com.cn/detail/38/372685.shtml**在实现互传文件之前先要令主机和虚拟机ping通,在命令行中输入ipconfig查看本机ip,在terminal中输入ifconfig查看虚拟机ip
1关闭windows防火墙
2更改虚拟网卡设置。在NAT的连接方式下,要使主机能够ping通虚拟机,需要保证VMnet8虚拟网卡的ip地址和虚拟机的ip地址在同一网段中。打开网络与共享中心,更改适配器设置,找到VMnet8(对应NAT)设置其ipv4属性,将其改为与虚拟机ip属于同一网段
3此时主机与虚拟机应当能够相互ping通,打开SSH Secure Shell Client,点击Quick Connect,在Host name中输入虚拟机ip,在User name中输入用户名,点击connect,输入密码,成功登录的标志为显示类似terminal中的输入提示符
4点击window->New File Transfer进入文件传输界面,左边为本机文件目录,右边为虚拟机的文件目录,可直接拖拽复制
以上就是实现的所有内容了,如果遇到什么问题欢迎在评论区和我讨论