SSH 使用小技巧

2021-09-13 22:33:49 字數 2817 閱讀 3051

ssh 的埠**功能可以加密 client 和 server之間的通訊資料,還可以突破防火牆的限制。北郵的電腦上網,ipv4 位址是每次連線閘道器時動態分配,ipv6 位址是不會變的。可以利用埠**來連線實驗室機器,無視它的 ip 每次都變化。

引數功能

-c壓縮資料傳輸

-f後台執行

-n不執行shell

-l本地埠**

-r遠端埠**

-d動態埠**

遠端埠可以把本地的埠**到遠端機器上,實現反向埠**

我們面對的是這樣的場景:實驗室有一台機器,然後希望可以通過 ssh 連線上去跑機器學習實驗,但是由於學校網路問題,實驗室的機器的 ip 經常發生改變,而且因為該機器沒有公網 ip ,所以只能校園網內通過區域網 ip 連線。

為了方便後續的登陸,首先需要建立 ouyangsong 到 jumpuser 的免密碼登陸,也就是說 lab 機器可以不需要密碼就可以登陸到 jump 機器。具體可以參考 ssh 免密碼登陸 。

lab$ ssh -r 10022:localhost:22 jumpuser@jump
r 引數接受三個值,分別是「遠端主機埠:目標主機:目標主機埠」 。這條命令的意思就是,讓 jump 機器監聽它的 10022 埠,然後所有資料經過 lab **到 lab 的 22 埠。這時候我們可以在 jump 機器上通過ss -ant命令看到它已經監聽本地(指 jump 機器本地)的 10022 埠。

jump$ ssh ouyangsong@lab -p10022

lab$

這樣的話首先登陸到 jump 機器,然後輸入 ouyangsong 在 lab 機器上的密碼就可以登陸到 lab 機器。但是這樣還是略顯麻煩,可以把 jump 機器的 ssh 埠開放在0.0.0.0而不是預設的127.0.0.1就可以直接在 client 端登陸到 lab 機器。修改/etc/ssh/sshd_config檔案,新增gatewayports yes。然後重啟 sshd 服務,sudo reload ssh。這時候還需要把遠端埠**命令做點小修改。

lab$ ssh -r 0.0.0.0:10022:localhost:22 jumpuser@jump
經過上面的修改我們可以在 client 上執行如下命令就可以登陸 lab 機器了,成功突破了校園網的限制。注意使用者名為 lab 上的使用者名稱,jump 機器不存在 ouyangsong 使用者。

client$ ssh ouyangsong@jump -p10022
但是還有點小問題就是如果網路不穩定,那麼 ssh 服務就會斷了,這時候我們需要重新連線 ssh ,可以使用 autossh 工具。

sudo apt install autossh

# m 引數指定監視連線狀態埠

autossh -m 10023 -fnr 0.0.0.0:10022:localhost:22 jumpuser@jump

然後新增到開機自啟中,/etc/rc.local最後新增下面命令:

su - ouyangsong -c 'autossh -m 10023 -fnr 0.0.0.0:10022:localhost:22 jumpuser@jump'
實驗室機器上跑了乙個 web 服務,比如python -m ******httpserver,預設我們只能在實驗室機上的本地 8000 埠 (http://localhost:8000) 訪問,假如我不在校園網環境並且希望訪問該 web 服務。

lab$ ssh -nr 0.0.0.0:18000:localhost:8000 jumpuser@jump
這樣的話我就可以在公網 ip 的 18000 埠訪問該服務。

假如實驗室機器 lab 上有 http **服務,執行在 1080 埠,希望 jump 機器可以使用該**服務。

lab$ ssh -nr 11080:localhost:1080 jumpuser@jump

lab$ ssh jumpuser@jump

jump$ export all_proxy=

jump$ curl ip.sb

本地埠**將遠端的埠**到本地,實現正向埠**。剛剛我們把 lab 的 22 埠反向**到 jump 的 10022 埠,現在再把它正向埠**到 lab 的 20022 埠。

lab$ ssh -nl 20022:localhost:10022 jumpuser@jump
l 引數同樣接受三個值,分別是「本地埠:目標主機:目標主機埠」,在這裡本地埠是 20022,我們把 jump 機器的「本地埠」 10022 埠**到本地埠 20022,注意這裡的 localhost 是相對與 jump 機器來說的。

假如我們可以通過跳板機來連線到內網機器 lab,我們希望訪問網頁時也經過該**。或者另外一種情景,希望把未加密的資料經過 ssh 來進行加密連線。

client$ ssh -nd 1080 ouyangsong@jump
這樣的話,client 機器的 1080 埠的資料,會經過跳板機然後到內網機器 lab 。然後在瀏覽器通過外掛程式 proxy switchyomega 設定**為socks5:,這樣就實現了自製的內網的 vpn 。

ssh 使用技巧

1 在a機壓縮後,複製到b機器並解壓縮 tar cf opt dir1 ssh 192.168.0.116 cd opt tar xf 2 在a機壓縮,並將壓縮檔案複製到b機 tar cf opt dir1 ssh 192.168.0.116 cd opt cat dir1.tar 3 將a機的壓縮...

ssh使用技巧

由於總是要ssh到不同的機器中,手動輸入使用者名稱密碼總是很慢。看學長ssh用到飛起,把相關的小技巧記錄一下,感覺還是挺能提高效率的。首先是config檔案的使用,通過在 ssh config檔案中按對應的規則進行設定,相當於是建立了快捷方式,簡化了之前 username hostip 的操作。比如...

ssh命令使用技巧

有的時候需要確認一下ssh客戶端及其相應的版本號。使用ssh v命令可以得到版本號。需要注意的是,linux一般自帶的是openssh 下面的例子即表明該系統正在使用openssh ssh v openssh 3.9p1,openssl 0.9.7a feb 19 2003 下面的例子表明該系統正在...