如何通過後台登錄csdn伺服器
A. 【實踐】如何使用XSHELL配置從堡壘機跳轉到目標伺服器
本文講解在一類專網中,XSHELL登錄linux伺服器系統時,通過配置信息,可以實現跳轉堡壘機直接登錄伺服器的方法。
出於安全考慮,專網中的應用伺服器一般僅允許特定IP遠程SSH訪問,帶來安全防護的同時也增加了進行SSH登錄記錄密碼和SFTP上傳維護的繁瑣。
(1)配置堡壘機IP和埠:
(2)配置登錄用戶名和密碼
例如選擇第一台伺服器,點擊回車確認。
然後輸入對應的密碼就可以登錄了。
在"2.2.1 登錄堡壘機" 堡壘機的基礎上,增加配置登錄伺服器的用戶名密碼。
其中的等待字元:USER,password是「2.2.2 登錄目標伺服器」的關鍵字。
配置後,點擊連接就可以一次登錄目標伺服器了。
(1)SFTP協議運維
https://help.aliyun.com/document_detail/53216.html
(2)利用SSH隧道技術實現跳板機SHELL登陸以及SFTP到內網伺服器
https://blog.csdn.net/qq591840685/article/details/53427109
B. 前後端分離架構下的跨域問題
在前後端分離架構下,難免會遇到跨域問題。但是對於跨域,很多人並沒有多麼深入的了解。這里我就詳細講一下這個問題。
同源策略與跨域
所謂跨域,英文叫做cross-domain,是網路安全領域的一個專有名詞。簡單點理解就是某些操作越過了域名的界限,訪問了別的域名。
如果腳本可以自由訪問其他域,就會產生很多安全問題。
比如,假設有一個網上銀行系統,你已經登錄過了,它支持一個ajax api可以進行轉賬;有一個論壇系統,人氣很高,但是其中有惡意腳本,這個腳本會調用這個ajax api,從當前登錄的用戶賬戶中,轉1000塊到攻擊者的賬戶。這樣,當你訪問這個論壇的時候,就會被轉走1000塊,而你一點都不知道!
除此之外,跨域請求還有很多危害。這不是一本關於安全的書,也就不展開講了,想深入了解的可以買一本餘弦編寫的《Web前端黑客技術揭秘》。
為了防範跨域攻擊,所有現代瀏覽器都遵循一套同源策略。根據MDN上的定義,「如果兩個頁面擁有相同的協議(protocol),埠(如果指定),和主機,那麼這兩個頁面就屬於同一個源(origin)」。對於違反同源策略的請求,除了img src等少數嵌入操作之外,都會被瀏覽器阻止。
這里需要注意的是:同源不僅僅要求相同的域名或ip,連協議和埠也必須相同。比如https://localhost和http://localhost或http://localhost:3000就不是同源的,而http://localhost/api和http://localhost/views是同源的。
我們平常所說的「跨域」其實就是指「發起不同源請求」,而這樣的跨域請求會被瀏覽器阻止。
同源策略對保障互聯網安全有著非常重要的作用,很多安全策略都是基於同源策略的。但是,這種同源策略會對前後端分離架構下的開發過程帶來很大困擾。比如,即使是本地伺服器,也沒法和前端開發伺服器運行在同一個埠上,這時候,跨域是必然的。而如果要讓後端程序同時提供web服務,則很難發揮前端工具鏈的輕量級優勢。那麼,如何解決跨域問題呢?
如何解決跨域問題?
JSONP方式
最初用來解決跨域問題的方式,叫做JSONP,它的基本原理是:跨域的「資源嵌入」是被瀏覽器允許的。所以,可以通過一個script標簽來嵌入一段來自其他伺服器的腳本。由於這個腳本完全運行在當前域,無法訪問第三方伺服器的cookie等敏感信息,所以是安全的。
JSONP的缺點是它只能支持GET操作,沒法支持POST等操作,但是由於兼容性好等優點,仍然有很多網站採用JSONP的方式公開自己的API供第三方調用。
在Angular中,$http內置了對JSONP的支持,它的調用介面也和其他方法沒什麼區別,使用起來非常簡單。
反向代理方式
要想解決跨域問題,最簡單徹底的方法當然是把他們拉到一個域下,而這就是該「反向代理」發揮作用的時候了。
所謂反向代理,就是在自己的域名下架設一個Web伺服器,這個伺服器會把請求轉發給第三方伺服器,然後把結果返回給客戶端。
這時候,在客戶端看來,自己就是在和這台反向代理伺服器打交道,而不知道第三方伺服器的存在。
所以,如果有一個Web服務程序,它同時提供了反向代理功能和靜態文件服務功能,靜態文件服務負責渲染前端頁面,反向代理則提供對第三方伺服器的透明訪問。那麼前端和後端就變成了同源的,不再受同源策略的約束。
那麼,有這樣的Web服務程序嗎?有,而且不止一個。事實上,幾乎所有的主流Web伺服器都提供了反向代理功能。這里僅以nginx為例來示範反向代理的配置方式,其他Web伺服器請搜相應的文檔自行研究。
server {
listen 80;
server_name your.domain.name;
location / {
proxy_pass http://localhost:5000/; # 把根路徑下的請求轉發給前端工具鏈(如gulp)打開的開發伺服器,如果是產品環境,則使用root等指令配置為靜態文件伺服器
}
location /api/ {
proxy_pass http://localhost:8080/service/; # 吧 /api 路徑下的請求轉發給真正的後端伺服器
proxy_set_header Host $http_host; # 把host頭傳過去,後端服務程序將收到your.domain.name,否則收到的是localhost:8080
proxy_cookie_path /api /service; # 把cookie中的path部分從/api替換成/service
proxy_cookie_domain localhost:8080 your.domain.name; # 把cookie的path部分從localhost:8080替換成your.domain.name
}
}
注意最後這兩句話,由於cookie中存在一個path機制,可以對同一個域下的不同子域進行區分。所以,如果後端所使用的路徑是/service,而前端使用的路徑是/api,那麼前端將不能訪問後端的cookie,這就導致登錄等操作所寫入的cookie無法正常傳入傳出,其表現則是登錄始終沒有效果。cookie的domain機制也是類似的原理。
現實中的後端伺服器,使用path機制的很多,所以這項設置非常實用。
CORS方式
這是W3C提供的另一種跨域方式。作為一項標準的跨域規范,CORS本應該是最值得採用的。 問題在於,老式瀏覽器不支持CORS,而我們顯然還沒到可以無視老式瀏覽器的時候。 所以,只要有可能,就應該優先採用反向代理的方式。
CORS的原理是基於服務方授權的模式,也就是說提供服務的程序要主動通過CORS回應頭來聲明自己信任哪些源(協議+域名+埠)。 由於得到了服務方的授權,瀏覽器就可以放行來自這些域的請求了。
參考:http://www.cnblogs.com/mashch/articles/4261448.html
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS
http://www.tuicool.com/articles/3q2iaqb
前後台分離,nodeJS轉發請求實現跨域訪問 :http://blog.csdn.net/u011783224/article/details/52214949