Ⅰ 如何让内网的CENTOS服务器能用域名访问
利用frp穿透技术,来实现你要的功能,不需要公网IP。毕竟现在公网IP运营商有很多限制:
以下文章转载自吴昊博客
frp内网穿透是通过一个带有公网IP的服务器进行中转,对被控主机实现反向代理,用户通过访问frps(中转服务器)来实现对frpc(被控主机)的远程访问。
frp流程图如下:
frp项目地址:https://github.com/fatedier/frp
本实验环境以阿里云服务器作为中转机,中转服务器使用Centos7.6,被控主机使用Centos7.6,用户使用Windows10由于网络原因,文中链接已经替换成了本地链接,如不放心,请自行去GitHub下载
frps中转服务器配置
1、下载frp
在一台有公网IP的主机上配置frps,我这里以阿里云Centos7.x主机为例
1 wget http://down.whsir.com/downloads/frp_0.27.0_linux_amd64.tar.gz
2 tar xf frp_0.27.0_linux_amd64.tar.gz
3 mv frp_0.27.0_linux_amd64 /usr/local
4 cd /usr/local/frp_0.27.0_linux_amd64
5 rm -f frpc*
2、配置frps
这里使用最基础的配置,bind_port 表示frp面板的监控端口,dashboard_user表示面板的登陆帐号,dashboard_pwd表示面板的登陆密码,其它不动。
1 vi
frps.ini
配置文件说明:
1 [common]
2 bind_port = 7000
3
4 dashboard_user = whsir
5 dashboard_pwd = blog.whsir.com
6 dashboard_port = 8000
3、启动frps
配置启动服务
1 vi /etc/systemd/system/frps.service
1 [Unit]
2 Description=frps daemon
3 After=syslog.target network.target
4 Wants=network.target
5
6 [Service]
7 Type=simple
8 ExecStart=/usr/local/frp_0.27.0_linux_amd64/frps -c /usr/local/frp_0.27.0_linux_amd64/frps.ini
9
10 [Install]
11 WantedBy=multi-user.target
技行以下两个命令
1 systemctl enable frps
2 systemctl start frps
4、访问监控平台
http://公网IP:8000
账号whsir
密码blog.whsir.com
如果访问不了,请使用ss -lnt命令检查端口是否启动,是否因为防火墙原因拦截。
至此frps中转服务器配置完成
frpc内网主机配置
1、内网主机下载frp
1 wget http://down.whsir.com/downloads/frp_0.27.0_linux_amd64.tar.gz
2 tar xf frp_0.27.0_linux_amd64.tar.gz
3 mv frp_0.27.0_linux_amd64 /usr/local
4 cd /usr/local/frp_0.27.0_linux_amd64
5 rm -f frps*
2、配置frpc
其中x.x.x.x表示frps中转服务器IP地址
ssh字段:local_port = 22示被控(内网)主机的ssh端口,remote_port = 6000表示ssh中转端口
web字段:local_port = 80表示被控(内网)主机的web端口,remote_port = 8081表示web中转端口
1 vi frpc.ini
1 [common]
2 server_addr = x.x.x.x
3 server_port = 7000
4
5 [ssh]
6 type = tcp
7 local_ip = 127.0.0.1
8 local_port = 22
9 remote_port = 6000
10
11 [web]
12 type = tcp
13 local_ip = 127.0.0.1
14 local_port = 80
15 remote_port = 8081
3、启动frpc
配置启动服务
1 vi /etc/systemd/system/frpc.service
1 [Unit]
2 Description=frpc daemon
3 After=syslog.target network.target
4 Wants=network.target
5
6 [Service]
7 Type=simple
8 ExecStart=/usr/local/frp_0.27.0_linux_amd64/frpc -c /usr/local/frp_0.27.0_linux_amd64/frpc.ini
9
10 [Install]
11 WantedBy=multi-user.target
执行如下命令
1 systemctl enable frpc
2 systemctl start frpc
至此frpc被控主机配置完成
此时可通过x.x.x.x:6000连接内网ssh,通过http://x.x.x.x:8081访问内网主机web,访问速度取决于带宽
这时候,内网主机就映射到外网去了,然后,用域名指定你的frp主机ip就可以了。这样就可以实现你的功能了。
Ⅱ 阿里云主机ssh 免密码登录
阿里云主机ssh 免密码登录
操作系统: CentOS 7.0 64位
CPU: 1 核
公网IP: 78.129.23.45
用户名: root
密码:bugaosuni
我在VMware下安装的Ubuntu 14.04.本文的主要目的就是在Ubuntu上能够免密码登录云主机。
具体设置步骤
Ubuntu 客户端
在该文件夹下就会产生三个文件夹:id_rsa,id_rsa.pub,know_hosts。
id_rsa:存储私钥,记得只能自己看哦。别人那到这个文件就完蛋蛋咯。
id_rsa.pub:存储公钥,用来通信加密使用,有了这个人家才能确定这是你。
scp id_ rsa.pub [email protected]:/root/.ssh/id_ rsa.pub
Note:云主机上没有.ssh/文件时,你要自己建立一个。
云主机端
rm id_rsa.pub
Ubuntu 客户端
这个时候就可以登录云主机了
ssh [email protected]
scp远程拷贝文件时提示错误:
Warning: Permanently added '10.0.0.182' (RSA) to the list of known hosts.
Permission denied (publickey).
解决:
登录10.0.0.182,将/etc/ssh/sshd_config文件中的PasswordAuthentication no 改为PasswordAuthentication yes
重启sshd服务:/etc/init.d/sshd restart
问题解决。
原因:scp是基于ssh的拷贝服务,ssh在没有密钥登录的情况下,禁用了密码登录,故出现如上错误。
服务端SSH 服务配置了禁止root用户登录策略。
处理办法
说明:相关策略可以提高服务器的安全性。请用户基于安全性和易用性权衡后,再确定是否需要修改相关配置。
要解决此问题,请进行如下配置检查和修改:
参数说明:
未配置该参数,或者将参数值配置为 yes (默认情况),都允许 root 用户登录。只有显示的设置为 no 时,才会阻断root 用户登录。
该参数只会影响用户的 SSH 登录,不影响用户通过 管理终端 等其它方式登录系统。
如果需要修改相关策略配置,在继续之前建议进行文件备份。
使用 vi 等编辑器,将参数值设置为 yes,或者整个删除或注释(在最开头添加 # 号)整行配置。比如:# PermitRootLogin yes
使用如下指令重启 SSH 服务:service sshd restart
尝试再次使用 root 用户登录服务器。
出现的问题以及解决方案
当出现Permission denied (publickey,gssapi-keyex,gssapi-with-mic) 警告的时候,恭喜你,你已经离成功很近了。
远程主机这里设为slave2,用户为Hadoop。
本地主机设为slave1
以下都是在远程主机slave2上的配置,使得slave1可以免密码连接到slave2上。如果想免密码互联,原理一样的,在slave1上也这么配置即可!
(1)首先:配置ssh服务器配置文件。
在root 用户下才能配置。
vi /etc/ssh/sshd_config
权限设为no:
如果前面有# 号,将#号去掉,之后将yes修改为no。
修改之后为:
PermitRootLogin no
UsePAM no
PasswordAuthentication no
权限设为yes:
RSAAuthentication yes
PubkeyAuthentication yes
(2)重启sshd服务
systemctl restart sshd.service
systemctl status sshd.service #查看ssh服务的状态
正常情况下应该是Active:active(running)
(3)修改文件夹以及文件的权限。
(4)在slave1上进行测试
ssh slave2
今天处理 ssh连接至 ubuntu 服务器时,提示以下错误:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
da:f7:3e:ba:f7:00:e6:44:76:f2:58:6e:48:******.
Please contact your system administrator.
Add correct host key in /用户home目录/.ssh/known_hosts to get rid of this message.
Offending RSA key in /用户home目录/.ssh/known_hosts:1
RSA host key for ip地址 has changed and you have requested strict checking.
Host key verification failed.
经过google,出现这个问题的原因是,第一次使用SSH连接时,会生成一个认证,储存在客户端的known_hosts中。
可使用以下指令查看:
ssh-keygen -l -f ~/.ssh/known_hosts
由于服务器重新安装系统了,所以会出现以上错误。
解决办法
ssh-keygen -R 服务器端的ip地址
会出现以下提示:
/用户home目录/.ssh/known_hosts updated.
Original contents retained as /用户home目录/.ssh/known_hosts.old
重新连线,出现以下提示:
The authenticity of host '192.168.3.10 (192.168.3.10)' can't be established.
RSA key fingerprint is da:f7:3e:ba:f7:00:e6:44:76:f2:58:6e:48:****.
Are you sure you want to continue connecting (yes/no)?
Ⅲ 详解rsync,一款卓越的增量同步工具(一)
Rsync (remote rsync) 是可以实现 增量备份 的远程(和本地)文件复制工具,目的是实现本地主机和远程主机上的文件同步(包括本地推到远程,远程拉到本地两种同步方式),也可以实现本地不同路径下(不同目录、分区之间)文件的同步,但不能实现远程路径1到远程路径2之间的同步(scp可以实现)。配合计划任务,rsync能实现 定时或周期同步 ;配合inotify或sersync,可以实现触发式的 实时同步 。
本篇文章主要介绍rsync的使用方法和它常用的功能。
rsync官方网站: https://rsync.samba.org/
不考虑rsync的实现细节,就文件同步而言,涉及了源文件和目标文件的概念,还涉及了以哪边文件为同步基准。例如,想让目标主机上的文件和本地文件保持同步,则是以本地文件为同步基准,将本地文件作为源文件推送到目标主机上。反之,如果想让本地主机上的文件和目标主机上的文件保持同步,则目标主机上的文件为同步基准,实现方式是将目标主机上的文件作为源文件拉取到本地。当然,要保持本地的两个文件相互同步,rsync也一样能实现,这就像Linux中cp命令一样,以本地某文件作为源,另一文件作为目标文件,但请注意,虽然rsync和cp能达到相同的目的,但它们的实现方式是不一样的。
既然是文件同步,在同步过程中必然会涉及到源和目标两文件之间版本控制的问题,例如是否要删除源主机上没有但目标上多出来的文件,目标文件比源文件更新(newer than source)时是否仍要保持同步,遇到软链接时是拷贝软链接本身还是拷贝软链接所指向的文件,目标文件已存在时是否要先对其做个备份等等。
rsync同步过程中由两部分模式组成:决定哪些文件需要同步的检查模式以及文件同步时的同步模式。
(1).检查模式是指按照指定规则来检查哪些文件需要被同步,例如哪些文件是明确被排除不传输的。默认情况下,rsync使用"quick check"算法快速检查源文件和目标文件的大小、mtime(修改时间)是否一致,如果不一致则需要传输。当然,也可以通过在rsync命令行中指定某些选项来改变quick check的检查模式,比如"--size-only"选项表示"quick check"将仅检查文件大小不同的文件作为待传输文件。rsync支持非常多的选项,其中检查模式的自定义性是非常有弹性的。
(2).同步模式是指在文件确定要被同步后,在同步过程发生之前要做哪些额外工作。例如上文所说的是否要先删除源主机上没有但目标主机上有的文件,是否要先备份已存在的目标文件,是否要追踪链接文件等额外操作。rsync也提供非常多的选项使得同步模式变得更具弹性。
相对来说,为rsync手动指定同步模式的选项更常见一些,只有在有特殊需求时才指定检查模式,因为大多数检查模式选项都可能会影响rsync的性能。
以下是rsync的语法:
由此语法可知,rsync有三种工作方式:
(1).本地文件系统上实现同步。命令行语法格式为上述"Local"段的格式。
(2).本地主机使用远程shell和远程主机通信。命令行语法格式为上述"Access via remote shell"段的格式。
(3).本地主机通过网络套接字连接远程主机上的rsync daemon。命令行语法格式为上述"Access via rsync daemon"段的格式。
前两者的本质是通过管道通信,即使是远程shell。而方式(3)则是让远程主机上运行rsync服务,使其监听在一个端口上,等待客户端的连接。
但是,还有第四种工作方式:
(4).通过远程shell也能临时启动一个rsync daemon,这不同于方式(3),它不要求远程主机上事先启动rsync服务,而是临时派生出rsync daemon,它是单用途的一次性daemon,仅用于临时读取daemon的配置文件,当此次rsync同步完成,远程shell启动的rsync daemon进程也会自动消逝。此通信方式的命令行语法格式同"Access via rsync daemon",但要求options部分必须明确指定"--rsh"选项或其短选项"-e"。
如需源码安装,请关注即将发布的《详解Rsync,一款卓越的增量同步工具(二)》
系统环境:
服务器配置:阿里云ECS 11G
操作系统:CentOS7.2
rsync 版本:3.1.2
rsync 服务器:rsync-server (10.168.152.72)
rsync 客户端:rsync-client (10.117.217.172)
检查rsync 是否已经安装
若已安装,无需重新安装;若未安装,用以下命令安装:
写入以下配置到该文件:
输入,格式是“用户名:口令”,用户不要求是系统用户
root:pwd123456
输入:
======welcome to synchronize appdata======
如果rsync启动成功,可以看到873端口已经在监听了。
检查rsync 是否已经安装
若已安装,无需重新安装;若未安装,用以下命令安装:
更多同步数据的场景演示,请关注即将发布的《详解Rsync,一款卓越的增量同步工具(二)》
配置文件 rsyncd.conf 由全局配置和若干模块配置组成。配置文件的语法为:
全局参数
在文件中 [mole] 之外的所有配置行都是全局参数。当然也可以在全局参数部分定义模块参数,这时该参数的值就是所有模块的默认值。
模块参数
模块参数主要用于定义 rsync 服务器哪个目录要被同步。模块声明的格式必须为 [mole] 形式,这个名字就是在 rsync 客户端看到的名字,类似于 Samba 服务器提供的共享名。而服务器真正同步的数据是通过 path 来指定的。可以根据自己的需要,来指定多个模块,模块中可以定义以下参数:
a. 基本模块参数
b. 模块控制参数
c. 模块文件筛选参数
d. 模块用户认证参数
e. 模块访问控制参数
客户主机列表定义可以是以下形式:
f. 模块日志参数
设置了”log file”参数时,在日志每行的开始会添加”%t [%p]“。
可以使用的日志格式定义符如下所示: