这里是一段防爬虫文本,请读者忽略。
本文原创首发于CSDN,作者IDYS
博客首页:https://blog.csdn.net/weixin_41633902/
本文链接:https://blog.csdn.net/weixin_41633902/article/details/105821625
telnet远程终端协议传输的数据以明文方式传输,会被抓包软件抓取到数据
ssh 提供了基于账户密码(口令)和密钥对两种登录验证方式,这两者都是通过密文传输数据的
windows远程登录Linux主机一般使用第三方工具,比如Xshell、secureCRT、putty
首先需要在 Client 上创建一对密钥,并且需要把公钥放在需要访问的 Server 上
当 Client 需要连接 Server 时,Client 端的软件就会向 Server 端发出登录请求,请求使用密钥对中的的公钥 进行安全验证
Server 收到请求之后,会在该用户的家目录下查询公钥文件,拿 Client 发送过来的公钥和自己家目录下的公钥 进行比较
如果两个公钥一致,Server 就用公钥加密“challenge(质疑)”,并把它发送给 Client 软件。Client 收到加 密内容之后,使用本地的私钥进行解密,再把解密结果发送给 Server 端,Server 端验证成功后,允许登录
注意:若第3个步骤对比结果失败,则 Server 端会通知 Client 端此公钥未在本机注册,无法验证登录
之后点击[链接克隆](因为这样节省硬盘空间)
选择[虚拟机设置]
打开克隆机
修改 /etc/udev/rules.d/70-persistent-net.rules文件
注释掉第8行的这个内容SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:ec:96:c2", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
(你里面的参数可能和我不一样,但是开头都是以subsystem开头的),然后再将第11行的NAME="eth1"
改为NAME="eth0"
,最后修改结果如下
1 # This file was automatically generated by the /lib/udev/write_net_rules
2 # program, run by the persistent-net-generator.rules rules file.
3 #
4 # You can modify it, as long as you keep each rule on a single
5 # line, and change only the value of the NAME= key.
6
7 # PCI device 0x8086:0x100f (e1000)
8 # SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:ec:96:c2", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
9
10 # PCI device 0x8086:0x100f (e1000)
11 SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:50:56:32:e0:eb", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
/etc/sysconfig/network-scripts/ifcfg-eth0
的内容。将UUID注释掉,将硬件地址HWADDR注释掉,ONBOOT(开机启动网卡选项)改为yes,剩下如果你想把网络改为静态方式的话。做这个修改BOOTPROTO=static
注意你修改的网络必须和你VMware虚拟机设置的网络在同一网段内,否则将无法连通互联网。甚至都不能和你的物理机连通
[root@IDYS_02 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
# UUID=f2b1fb29-c49e-419c-bea2-5b1887463266
# 启动开机自启动网络
ONBOOT=yes
NM_CONTROLLED=yes
# 静态方式
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
# HWADDR=00:0C:21:EC:36:C2
PEERDNS=yes
PEERROUTES=yes
#网段必须在虚拟机设置的网段内,网关也必须是和你虚拟机设置的网关相同
IPADDR=192.168.200.137
NETMASK=255.255.255.0
GATEWAY=192.168.200.2
DNS1=114.114.114.114
DNS2=8.8.8.8
# 重启命令
shutdown -r now
# -r 代表reboot的意思
三台Linux的主机名分别为,dayuanshuai,IDYS_01,IDYS_02
临时修改主机名的方法:
# 如:
hostname IDYS_01
/etc/sysconfig/network
文件,修改如下NETWORKING=yes
HOSTNAME=IDYS_01 #此处将主机名修改为你要想修改的主机名即可
[root@IDYS_01 ~]# service iptables status
iptables: Firewall is not running.
# 可以看大SELinux处于开启状态
[root@IDYS_01 ~]# getenforce
Enforcing
# 关闭防火墙服务
[root@IDYS_01 ~]# service iptables stop
# 关闭SELinux
[root@IDYS_01 ~]# setenforce 0
# 永久关闭防火墙
[root@IDYS_01 ~]# chkconfig iptables off
# 查看防火墙处于各个模式的开启状态
[root@IDYS_01 ~]# chkconfig --list iptables
iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off
/etc/selinux/config
文件,将第七行的SELINUX=enforcing
改为SELINUX=disabled
sed -i '7s/enforcing/disabled/' /etc/selinux/config
永久修改的方式,重启即是生效
# 查看安装的openssh安装包,可以看到没有安装ssh客户端,只有服务器端
[root@IDYS_01 selinux]# rpm -qa | grep openssh
openssh-5.3p1-123.el6_9.x86_64
openssh-server-5.3p1-123.el6_9.x86_64
[root@IDYS_02 ~]# yum list | grep openssh
openssh.x86_64 5.3p1-124.el6_10 @updates
openssh-server.x86_64 5.3p1-124.el6_10 @updates
openssh-askpass.x86_64 5.3p1-124.el6_10 updates
openssh-clients.x86_64 5.3p1-124.el6_10 updates
openssh-ldap.x86_64 5.3p1-124.el6_10 updates
[root@IDYS_02 ~]# yum -y install openssh-clients
# 此时可以看到ssh客户端安装成功
[root@IDYS_02 ~]# rpm -qa | grep openssh
openssh-server-5.3p1-124.el6_10.x86_64
openssh-5.3p1-124.el6_10.x86_64
openssh-clients-5.3p1-124.el6_10.x86_64
[root@dayuanshuai ~]# ssh [email protected]
The authenticity of host '192.168.200.136 (192.168.200.136)' can't be established.
# 接收服务器端的公钥
RSA key fingerprint is 21:09:71:ce:3c:a0:19:8e:84:f9:c9:03:8f:f2:74:b9.
# 询问是否确定想要连接? 输入 yes即可
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.200.136' (RSA) to the list of known hosts.
[email protected]'s password:
Last login: Tue Apr 28 23:00:52 2020 from 192.168.200.1
# 登录成功
ssh-keygen -t rsa -b 2048
[root@IDYS_01 ~]# ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
# 询问将密钥对文件放在什么地方,默认放在家目录的 .ssh/目录下,此处直接敲击回车
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
# 询问对密钥文件的加密密码是,敲击回车,代表不设置私钥文件的加密密码
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
cb:24:8f:31:b1:b6:b8:10:5f:d9:a2:01:39:49:d3:aa root@IDYS_01
The key's randomart image is:
+--[ RSA 2048]----+
|o+. |
|.o.. |
|o .. |
|.. + |
|+ = = S |
|E+ o o O . |
|. o o . + |
| . o . + |
| o.. |
+-----------------+
# 将公钥传送到服务器端,实现免密登录
[root@IDYS_01 ~]# ssh-copy-id [email protected]
The authenticity of host '192.168.200.137 (192.168.200.137)' can't be established.
RSA key fingerprint is 24:09:71:ce:3c:a0:19:4e:84:f9:c9:03:8f:f2:74:b9.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.200.137' (RSA) to the list of known hosts.
[email protected]'s password:
Now try logging into the machine, with "ssh '[email protected]'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
# 查看客户端公钥
[root@IDYS_01 .ssh]# cat ~/.ssh/id_rsa.pub
ssh-rsa ************************************************************************************************************************************************************************************************************************************Yv0w== root@IDYS_01
# 查看服务器端存储的验证密钥
[root@IDYS_02 .ssh]# cat ~/.ssh/authorized_keys
ssh-rsa **************************************************************************************************************************************************************************************************************************************************************************************************************************Yv0w== root@IDYS_01
# 因为客户端的id_rsa.pub和服务器端的authorized_keys一样,所以客户端能实现免密登录服务器端,下面为免密登录成功的过程
[root@IDYS_01 .ssh]# ssh [email protected]
Last login: Tue Apr 28 23:59:51 2020 from 192.168.200.136
使用Xshell自带的密钥对生成向导生成密钥对
选择[工具] -> [新建用户密钥生成向导]
~/.ssh/
目录下,创建authorized_keys文件,然后编辑文件将公钥复制进去,操作如下,最后设置权限为600[root@dayuanshuai .ssh]# touch authorized_keys
[root@dayuanshuai .ssh]# vim authorized_keys
********************************************************************************************************************************************************************************************************************************************************== rsa 2048-042820
[root@dayuanshuai .ssh]# chmod 600 authorized_keys
注意:ssh的配置文件中,并不是注释掉的就是不生效的,有些是默认生效,需要修改时一定要取消注释再修改
# 如果端口号变了 xshell登录的命令可为
(此选项为ssh目录端监听的端口号)
ssh [email protected] 54321
[root@dayuanshuai .ssh]# netstat -antp
简单来说就是服务器端设置自己监听的ip地址,远程想通过ssh服务连接该主机,就必须是连接的该IP才行
# 修改配置文件
[root@dayuanshuai .ssh]# vim /etc/ssh/sshd_config
ListenAddress 192.168.200.20
# 设置虚拟网卡为192.168.200.20,以后ssh客户端只能连接192.168.200.20 这个IP才能连接ssh服务器端
[root@dayuanshuai .ssh]# ifconfig eth0:0 192.168.200.20
注意:如果要使用scp命令进行复制的话,客户端和服务器端都应该安装上openssh-clients 安装包,不然会报错。
[root@IDYS_01 ~]# scp /tmp/test.txt [email protected]:/tmp/
bash: scp: command not found
lost connection
# 连接上服务器端
[root@IDYS_01 ~]# ssh [email protected]
Last login: Wed Apr 29 03:40:09 2020 from 192.168.200.136
# 在服务器端安装上opensssh-client这个安装包
[root@IDYS_02 ~]# yum -y install openssh-clients
# 重启ssh服务
[root@IDYS_02 ~]# service sshd restart
# 退出到客户端
[root@IDYS_02 ~]# exit
logout
# 再次使用scp复制
[root@IDYS_01 ~]# scp /tmp/test.txt [email protected]:/tmp/
# 删除文件
[root@IDYS_01 tmp]# rm test.txt
# 再从远程服务器端复制到本地
[root@IDYS_01 tmp]# scp [email protected]:/tmp/test.txt /tmp
# 在服务器端修改连接端口,连接端口改为2222
[root@IDYS_02 ~]# vi /etc/ssh/sshd_config
Port 2222
# 在客户端再次连接时需要指定端口2222,才能连接上ssh服务
[root@IDYS_01 tmp]# ssh -p 2222 192.168.200.137
# 这时再要通过scp复制文件时,需要通过大P指定ssh端口,才能实现复制
[root@IDYS_01 tmp]# scp -P 2222 [email protected]:/tmp/test.txt /tmp
test.txt 100% 0 0.0KB/s 00:00
# 连接上服务器端
[root@IDYS_01 tmp]# sftp [email protected]
Connecting to 192.168.200.137...
# 查看
sftp> help
Available commands:
bye Quit sftp
cd path Change remote directory to 'path'
************** #省略
#使用本地shell执行whoami,在whoami前面加一个感叹号!即可执行本地客户端shell的whoami
sftp> !whoami
root
# 可以看到命令前面加!执行的是本地客户端的shell
sftp> !ifconfig
eth0 Link encap:Ethernet HWaddr *********
inet addr:192.168.200.136 Bcast:192.168.200.255 Mask:255.255.255.0
# 查看版本号
sftp> version
SFTP protocol version 3
# 将远程目录复制到本地目录上来
(远端文件) (本地目录)
sftp> get /tmp/test.txt /tmp
# 将本地目录上传至远端目录
(本地文件) (远端目录)
sftp> put /tmp/IDYS01.txt /tmp/
# 远程服务器端修改ssh的监听端口
[root@IDYS_02 ~]# vim /etc/ssh/sshd_config
Port 2222
# 重启服务
[root@IDYS_02 ~]# service sshd restart
# 退出到本地
[root@IDYS_02 ~]# exit
logout
# sftp指定端口,重新连接
[root@IDYS_01 tmp]# sftp -oPort=2222 [email protected]
Connecting to 192.168.200.137...