以前只知道一條命令:
ssh user@password
用來(lái)登錄linux服務(wù)器,其實(shí)它還有好多高級(jí)功能。下面把最近用到的一些整理一下。
官網(wǎng):https://www.openssh.com/
ssh服務(wù)的相關(guān)配置
配置端口、密鑰對(duì)登錄、root賬號(hào)禁用等,之前整理過(guò)一份:
http://www.itdecent.cn/p/7349b29281cc
使用SCP傳輸文件
1. 從本地復(fù)制到遠(yuǎn)程
scp local_file remote_username@remote_ip:remote_folder
2. 從遠(yuǎn)程復(fù)制到本地
scp remote_username@remote_ip:remote_file local_folder
端口轉(zhuǎn)發(fā)
參考文章:
http://www.itdecent.cn/p/50c4160e62ac
https://blog.csdn.net/nimasike/article/details/73289777
主要作用:
網(wǎng)絡(luò)穿透
本地端口轉(zhuǎn)發(fā):
在本地(運(yùn)行命令的機(jī)器上)起一個(gè)監(jiān)聽(tīng)端口,把所有對(duì)該本地端口的訪問(wèn)轉(zhuǎn)發(fā)到服務(wù)器。
ssh -L <local-port-to-listen>:<remote-host>:<remote-port> <sshserver>
例:
ssh -L 8080:localhost:80 root@192.168.1.101
可以用來(lái)突破防火墻限制訪問(wèn)
遠(yuǎn)程端口轉(zhuǎn)發(fā):
轉(zhuǎn)發(fā)所有向遠(yuǎn)程端口的請(qǐng)求,到本地機(jī)器(執(zhí)行命令的機(jī)器),再到目標(biāo)機(jī)器。
可以讓外網(wǎng)的機(jī)器訪問(wèn)內(nèi)網(wǎng)的資源。
ssh -R <local-port-to-listen>:<remote-host>:<remote-port> <sshserver>
例:
在內(nèi)網(wǎng)的機(jī)器上運(yùn)行:
ssh -R 8080:localhost:8080 root@234.98.76.152
這樣在外網(wǎng)機(jī)器上訪問(wèn)本地8080端口的請(qǐng)求會(huì)轉(zhuǎn)發(fā)到內(nèi)網(wǎng)的8080端口,然后再轉(zhuǎn)發(fā)到外網(wǎng)的8080端口。
這樣就可以進(jìn)行類似在外網(wǎng)服務(wù)器拉取內(nèi)網(wǎng)服務(wù)器上的代碼之類的操作了。
注1:如果以上命令不加”-g”選項(xiàng),那么SSH Client上的監(jiān)聽(tīng)端口2323會(huì)綁定在127.0.0.1上,意味著只有SSH Client自己才能連上。加上”-g”選項(xiàng)之后,SSH Client才允許網(wǎng)絡(luò)上其他機(jī)器連接2323端口。
注2:以上命令會(huì)生成一個(gè)shell,有時(shí)候并不符合我們的需要,因?yàn)槎鄶?shù)時(shí)候我們只想要一個(gè)端口轉(zhuǎn)發(fā)功能,掛一個(gè)shell是個(gè)累贅,而且shell一退出,端口轉(zhuǎn)發(fā)也停了。這就是為什么我們需要”-N -f”選項(xiàng)的原因:-N 告訴ssh client,這個(gè)連接不需要執(zhí)行任何命令,僅做端口轉(zhuǎn)發(fā)-f 告訴ssh client在后臺(tái)運(yùn)行
注3:為了避免長(zhǎng)時(shí)間空閑導(dǎo)致ssh連接被斷開,我們可以加上”-o ServerAliveInterval=60″選項(xiàng),每60秒向ssh server發(fā)送心跳信號(hào)。還有一個(gè)TCPKeepAlive選項(xiàng)的作用是類似的,但是不如ServerAliveInterval 好,因?yàn)門CPKeepAlive在TCP層工作,發(fā)送空的TCP ACK packet,有可能會(huì)被防火墻丟棄;而ServerAliveInterval 在SSH層工作,發(fā)送真正的數(shù)據(jù)包,更可靠些。
注4:如果不是以root身份設(shè)置端口轉(zhuǎn)發(fā)的話,轉(zhuǎn)發(fā)端口只能使用大于1024的端口號(hào)。
使用config文件管理連接
用戶目錄.ssh目錄下的config文件,用來(lái)管理ssh連接;
主要作用是不用每次都輸入完整命令,可以使用別名來(lái)連接服務(wù)器(服務(wù)器多了也記不?。?。
官方文檔:https://man.openbsd.org/ssh_config.5
常用配置:
Host ali //別名
User root //登錄用戶名
Hostname xxx.xxx.xxx.xxx //IP
IdentityFile ~/.ssh/id_rsa_fromlan1 //密鑰文件
RemoteForward 222 127.0.0.1:222 //遠(yuǎn)程端口轉(zhuǎn)發(fā)
配置完成后,使用命令:ssh ali 就可以完成登錄