Ⅰ 如何讓內網的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]「。
可以使用的日誌格式定義符如下所示: