最近需要從外網(wǎng)通過ssh訪問內(nèi)網(wǎng)主機带迟,但是又不具備給路由器添加端口映射的權(quán)限,于是用到了ssh的遠程端口轉(zhuǎn)發(fā)囱桨。于是打算在這里整理一下ssh常用的功能和用法仓犬。
但由于細節(jié)特別多,一次肯定寫不完舍肠,因此有些細節(jié)會暫時省略搀继,待日后補上,特別是截圖翠语。
1叽躯、使用用戶名/密碼登陸
這是最基本的了,也沒什么好說的肌括。
ssh user@remote_host [-p port]
其中-p用來指定端口(如果端口不是默認的22的話)
2点骑、使用密鑰對登陸(此部分有待細化)
為了保證安全,可以在把本地產(chǎn)生的密鑰對的公鑰文件傳到服務(wù)端谍夭,這樣登陸的時候就不需要輸入用戶名/密碼了黑滴。當然如果產(chǎn)生密鑰對的時候還使用了口令,這時還是需要輸入口令紧索,這可以用ssh-agent來解決~~越來越懶了袁辈。當然如果你想在某個服務(wù)端再登陸到另一個服務(wù)端,那么可以開啟ssh-agent的轉(zhuǎn)發(fā)功能~~真是懶到家了珠漂。
3晚缩、端口轉(zhuǎn)發(fā)(此部分有待截圖)
這里分為四種,本地轉(zhuǎn)發(fā)媳危,遠程轉(zhuǎn)發(fā)荞彼,動態(tài)轉(zhuǎn)發(fā)和X轉(zhuǎn)發(fā)
1)、共用參數(shù)
先說明常見的參數(shù)
-f ? ? 后臺認證用戶/密碼待笑,通常和-N連用鸣皂,不用登錄到遠程主機。
-N ? 不執(zhí)行腳本或命令滋觉,通常與-f連用
2)签夭、本地轉(zhuǎn)發(fā)
ssh -f -N ?-L local_port:remote_host:remote_port ?username@tunnel_host
這句命令需要在本地輸入,意思就是在本地打開local_port端口監(jiān)聽椎侠,把發(fā)送到這個端口的TCP數(shù)據(jù)包經(jīng)過tunnel_host之后第租,發(fā)送到remote_host的remote_port上。
比如我想把發(fā)送到本地10000端口的tcp數(shù)據(jù)包經(jīng)過1.1.1.1轉(zhuǎn)發(fā)到1.2.3.4的20000端口我纪,那么可以這么寫:
ssh -f -N -L 10000:1.2.3.4:20000 ?username@1.1.1.1
如果tunnel_host和remote_host相同慎宾,那么就相當于直接發(fā)送到remote_host了丐吓,不經(jīng)過另一臺機器。
3)趟据、遠程轉(zhuǎn)發(fā)
ssh -f -N ?-R remote_port:local_host:local_port user@tunnel_host
這句命令需要在本地輸入券犁,意思是在remote_host(在這里remote_host == tunnel_host)上打開監(jiān)聽remote_port,把傳給remote_port的tcp數(shù)據(jù)轉(zhuǎn)發(fā)到本地主機的local_port汹碱。
按道理來講粘衬,remote_host應(yīng)該可以不等于tunnel_host,但是我沒有這個需求也就沒有嘗試了咳促,有待實驗稚新。
遠程轉(zhuǎn)發(fā)通常用在外網(wǎng)想主動連接內(nèi)網(wǎng)主機的時候,本質(zhì)上就是內(nèi)網(wǎng)主機先建立一條通向外網(wǎng)主機的連接跪腹,然后讓外網(wǎng)主機直接順著這條連接發(fā)送數(shù)據(jù)給內(nèi)網(wǎng)主機:
ssh -f -N -R 10000:localhost:22 user1@1.1.1.1
那么我用
ssh user2@1.1.1.1 -p 10000
就可以通過ssh連接內(nèi)網(wǎng)主機了褂删。
值得注意的是,user1是服務(wù)器的用戶名而user2是內(nèi)網(wǎng)主機的用戶名
3)冲茸、動態(tài)轉(zhuǎn)發(fā)
之前兩種的轉(zhuǎn)發(fā)都是指定了轉(zhuǎn)發(fā)目的地的端口屯阀,那動態(tài)轉(zhuǎn)發(fā)的意思就是根據(jù)數(shù)據(jù)包的協(xié)議動態(tài)選擇轉(zhuǎn)發(fā)的目的端口。多用于翻墻轴术。
ssh -N -f -D 1080 user@remote_host ?#將端口綁定在127.0.0.1:1080上
ssh -N -f -D 0.0.0.0:1080 user@remote_host ?# 將端口綁定在0.0.0.0:1080上
4)难衰、X轉(zhuǎn)發(fā)
X轉(zhuǎn)發(fā)就是說通過ssh轉(zhuǎn)發(fā)X11協(xié)議的數(shù)據(jù),簡單的說就是直接在本地運行遠程的帶有GUI的程序膳音。
講道理X轉(zhuǎn)發(fā)可以用遠程轉(zhuǎn)發(fā)來實現(xiàn)召衔,但是比較麻煩。
打開X轉(zhuǎn)發(fā)需要保證/etc/ssh/sshd_config(配置文件的路徑隨不同linux發(fā)行版有可能會發(fā)生改變)鐘的X11Forwarding是yes的祭陷。
ssh –X user@remote_host