說明:本文所有的命令是基於openssh客戶端7.4p1版本。如果出現命令不正確,請檢測是否為此openssh版本。工作中經常會遇到使用
ssh
遠端幫客戶除錯安裝,但是在除錯安裝過程中,有時需要瀏覽器去訪問http服務,這時可以用ssh -d
方式在本地啟用乙個socks5的**:
#加上-nf引數可以將此連線放到後台
ssh -d 2080 [email protected] -n -f
連線成功後,再配置瀏覽器使用socks5:
的**,即可訪問遠端內網的http服務。
ssh隧道可以實現將遠端伺服器的某個埠,對映到本地pc上。
比如這樣乙個場景:公網伺服器上有個mysql資料庫服務,它只監聽127.0.0.1:3306。我有遠端伺服器c的ssh訪問許可權,而同事b沒有該伺服器的ssh許可權,但是同事此時需要連線此資料庫,我就可以用下面命令將遠端的3306埠對映到我本地pc的19999埠。
內網同事b: 192.168.0.6 ---> 內網的我a: 192.168.0.5 ---> 公網伺服器c: 1.1.1.1
#在內網a機器上執行下面命令
ssh -l 0.0.0.0:19999:127.0.0.1:3389 [email protected] -n -f
這樣同事只需要用mysql命令連線192.168.0.5:19999
即可。
ssh隧道除了上面的將遠端伺服器埠對映到本地,還可以將本地內網的埠對映到遠端伺服器上。
常用場景:公司內網有個演示產品應用,需要給客戶(b)訪問此伺服器(a)的80埠。但是此伺服器沒有公網ip,也沒有做埠對映,此伺服器只有訪問公網的許可權,我們只有乙個生產的伺服器(c)在公網。
客戶內網b: 192.168.0.6 ---> 公網生產伺服器c: 1.1.1.1 ---> 內網伺服器c: 192.168.3.100
#在內網伺服器c上執行下面命令
ssh -f -n -r 19999:localhost:80 [email protected]
客戶直接訪問
即可
注意:上面公網伺服器ssh-agent可以將本地的私鑰檔案儲存到ssh會話裡面,這樣遠端連到伺服器b上,就可以將個人的私鑰檔案也帶入過去。1.1.1.1
需要開啟sshd_config
配置內的乙個引數,gatewayports yes
。如果不開啟此引數,預設建立的監聽位址是127.0.0.1
,開啟此引數後監聽位址為0.0.0.0
。
常用場景:乙個git倉庫新增了我個人的公鑰證書,我有許可權用git的ssh協議去pull和push。但是我臨時需要部署伺服器b,而又不想在git倉庫新增此伺服器的公鑰。這時即可通過使用ssh-agent**本地的私鑰到遠端伺服器上。
#啟動ssh-agent
eval $(ssh-agent -s)
#新增本地私鑰檔案(若不加私鑰路徑,則使用預設私鑰路徑)
ssh-add ~/.ssh/id_rsa
#驗證是否正確新增key,正確情況會列出你的公鑰資訊
ssh-add -l
上面是啟用ssh-agent,下面還需要修改ssh_config
配置檔案,開啟forwardagent yes
。
#此處是全域性啟用forwardagent引數
host *
user root
forwardagent yes
開啟後,ssh [email protected]
遠端連線到遠端伺服器,然後用ssh-add -l
在遠端伺服器上也可以看的你的公鑰資訊,這樣再使用ssh協議的git clone就可以正常使用了。當然也可以再用自己的私鑰,通過ssh訪問其他有許可權登入的伺服器。
生產環境中,有許多伺服器沒有開啟公網的ssh訪問,只能通過乙個跳板機登入到生產內網,然後再訪問生產伺服器。這時候在使用scp進行檔案傳輸、以及用ssh登入等操作很不方便。
方法
一、修改ssh_config
配置檔案
openssh 7.3版本以上的可以用下面配置:
#內網伺服器端,也可寫死為單個ip
host 192.168.0.*
user root
#跳板機使用者為:test,ip位址為:1.1.1.1,埠為:22022
proxyjump [email protected]:22022
openssh 7.3版本以下的用下面配置:
#內網伺服器端,也可寫死為單個ip
host 192.168.0.*
user root
#跳板機使用者為:test,ip位址為:1.1.1.1,埠為:22022
proxycommand ssh -p 22022 [email protected] -w %h:%p
方法
二、直接用命令
除了修改配置檔案,還可以直接用命令實現,下面先說下7.3版本以上,支援proxyjump
的版本:
#跳板機使用者為:test,ip位址為:1.1.1.1,埠為:22022,內網伺服器為192.168.0.100
ssh -j [email protected]:22022 [email protected]
7.3以下版本
#跳板機使用者為:test,ip位址為:1.1.1.1,埠為:22022,內網伺服器為192.168.0.100
ssh -o proxycommand="ssh -p 22022 [email protected] -w %h:%p" [email protected]
使用SSH設定對映埠跳轉,解決網路限制問題
環境說明 a 192.168.1.27 b 192.168.20.9 c 192.168.25.90 a可以訪問b,不能訪問c,b可以訪問c 客戶端指能ssh登入a,無法直接登入b和c,a設定 可以訪問b的web介面,但無法訪問c的介面,解決方法 ssh對映埠跳轉 ssh l root l 192....
ios設定跳轉url
到其他的設定頁面,例如 定位服務 wifi facetime等等 功能 url 關於本機 prefs root general path about 輔助功能 prefs root general path accessibility 飛行模式 prefs root airplane mode 自動...
跳轉設定頁面方法
ios檢測是否開啟定位 是否允許訊息通知 ios 判斷是否開啟定位 bool islocationserviceopen else return yes ios 判斷是否允許訊息通知 bool ismessagenotificationserviceopen else ios 跳轉系統設定開啟定位頁...